.NET TIPS C#/VBプログラム内で外部のRubyスクリプト・ファイルを実行するには?デジタルアドバンテージ 一色 政彦2012/07/12 2012/08/10 更新 |
|
C#やVisual Basic(VB)で開発した.NETプログラムの中で、カスタム処理をプラグインの形で動的にアプリケーションに組み込んで実行したい場合に、そのプラグインをRubyスクリプト・ファイル(以降、Rubyファイル)で簡単に記述できるようにしたい場合はないだろうか? そのような場合には、IronRubyを用いることで、C#/VBプログラム内でRubyファイルを実行することが可能だ。本稿ではこの方法について説明する。
●事前準備
まずは、Ruby関連の開発環境を整えよう。IronRubyのダウンロード・ページを訪れ、最新のIronRubyをダウンロードして、インストールもしくは.zipファイルを展開する(インストーラ版とバイナリ版が用意されているが、本稿の内容であればバイナリ版でよい。今回は「IronRuby 1.1.3 Binaries」をダウンロードして「C:\Projects\IronRuby」フォルダに展開した)。
今回は、Visual Studio 2010 Ultimateを使ってコンソール・アプリケーションのサンプルを作成する。本稿のサンプルと同じものを開発するには、Visual Studioを起動して、メニューバーの[ファイル]−[新規作成]−[プロジェクト]から、任意の名前(本稿では「AppImportsRuby」)と開発言語(本稿ではC#とVB)でコンソール・アプリケーションを作成すればよい。
●IronRuby関連アセンブリの参照
次に、該当プロジェクトで、以下に示すIronRuby関連のアセンブリへの参照を追加する。
- IronRuby.dll
- IronRuby.Libraries.dll
- Microsoft.Dynamic.dll(2012/08/10 追記)
- Microsoft.Scripting.dll
次の画面は、[ソリューション エクスプローラー]上でプロジェクト項目の右クリック・メニューから[参照の追加]を実行したときに表示されるダイアログである。ここで、上記のアセンブリを選択する。
IronRuby関連アセンブリの参照 |
●Rubyファイルの用意
実際のコーディングに入る前に、組み込んで実行する対象となるRubyファイルを用意しておこう。
これには、[ソリューション エクスプローラー]上でプロジェクト項目の右クリック・メニューから[追加]−[新しい項目]を実行して、表示される[新しい項目の追加]ダイアログで、左側のツリー表示から[全般]を選択し、右側のリストから「テキスト ファイル」を選択し、[名前]欄に任意のRubyファイル名(本稿の例では「Hello.rb」)を入力して[追加]をクリックする(次の画面を参照)。
Rubyスクリプトの作成 |
これにより、Rubyファイルが該当プロジェクト内に作成される。このファイルをコンソール・アプリケーションのコンパイル後の出力ディレクトに配置したいので、[ソリューション エクスプローラー]上でRubyファイルの項目を選択した状態で、次の画面のように[プロパティ]ウィンドウで[出力ディレクトリにコピー]欄に対して「新しい場合はコピーする」を設定する。
Rubyファイルを出力ディレクトに配置する設定 |
肝心のRubyスクリプトの内容だが、今回は「Hello Ruby Script!!!」とコンソール出力するシンプルなコードを記述しよう。具体的には以下のようなスクリプト・コードになる。
|
|
単純なコンソール出力を行うRubyスクリプト |
それでは、本TIPSの本題となるRubyファイルを動的に実行する処理のコードを説明しよう。
●Rubyファイルを動的に実行するコード
Program.cs/Program.vbファイルをVisual Studioのコード・エディタで開き、以下のコードを入力してほしい。
|
||
Rubyファイルを動的に実行するコード(Program.cs/Program.vb) | ||
・IronRuby名前空間に所属するクラス: Rubyクラス。 ・Microsoft.Scripting.Hosting名前空間に所属するクラス: ScriptEngineクラス。 |
上記のコードを見ると、クラス名やメソッド名から何をしているか明確であるので、詳しい説明は割愛する(コメント部分も、コード内容を理解するうえでの参考にしてほしい)。
カテゴリ:開発環境&ツール 処理対象:Ruby |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|