新しいC#機能を備えたMono 2.2
Monoは常に.NETの進化を1歩遅れて追いかけています。したがって、.NETの現在を見れば、Monoの将来がわかります。次のMono 2.2リリースには多くの強化機能と新しいモジュール(C#シェルや統合言語クエリ(LINQ)など)が含まれているはずです。C#シェルはC#の式を読み取って評価して出力するインタラクティブシェルで、コンパイラサービスを提供するライブラリアセンブリの上に構築されます。LINQはC#バージョン3.0の新しいコンポーネントで、基本的にはSQLのクエリ構文とメカニズムの使用をクラスで表現されるデータの集まりに拡張するものです。
Monoはこれらの新しいパーツを完全にカバーすべく動いていますが、それに対応するDebianパッケージはDebianの不安定プールにさえまだ存在しません。Monoの最新バージョンが欲しい方は、daily tarballをダウンロードしてコンパイルする必要があります。これは次のようにして行います。
cd /usr/local wget -c http://mono.ximian.com/daily/mono-latest.tar.gz tar -xvjf mono-latest.tar.gz ./configure -prefix=/opt make
その後、次のように入力します。
make install
上記の手順により、/optディレクトリの下にMono 2.2ベータリリースがインストールされます。aptツールでインストール済みのMono 2.0正式リリースの代わりにこちらを使用するためには、このインストール先に合わせてPATH環境変数を設定する必要があるので、/usr/binの前に/opt/binディレクトリを追加します。
それが終われば、csharpコマンドでC#インタラクティブシェルを実行することができ、インタラクティブプロンプト「csharp>」が表示されます。このプロンプトが表示されたら、C#のステートメントを読み取って評価して出力する準備ができたことになります。以下にMonoプロジェクトからの単純な例を示します。この例から、実際の動作の様子と、LINQの意味するところがわかるでしょう。
csharp> var last_week = DateTime.Now - TimeSpan.FromDays (7);
csharp> from f in Directory.GetFiles ("/etc")
> let fi = new FileInfo (f)
> where fi.LastWriteTime < last_week
> select f;
{ "/etc/adjtime", "/etc/asound.state", "/etc/ld.so.cache",
"/etc/mtab", "/etc/printcap", "/etc/resolv.conf" }
このコードは最近修正された/etcディレクトリの下のファイルを示しています。csharpコマンドは1行のコードをデバッグするときに大いに役立つでしょう。LINQを使用すると、C#でSQLのパワーを利用することができます。
MoMA
このMoMAとは、近代美術館(The Museum of Modern Art)ではなくMono Migration Analyzerのことです。MoMAは、.NETプログラムの中でどの.NET APIが使われているかを分析して、Monoの下で同じAPIを実行できるかどうか判定しやすくするMonoプロセスアセンブリです。Monoはさまざまな理由で(たとえば、.NETプログラムがPlatform Invocation Services(P/Invoke)を呼び出す場合に).NETプログラムを実行できないことがあります。MoMAはMonoがまだサポートしていない.NET APIやP/Invokeがプログラムで使われているかどうかを明らかにしてくれます。MoMAはディレクトリの下でunzipしてMonoランタイムで実行できる典型的なMono/CLIプログラムなので、Debianの不安定パッケージプールには存在しません。
統合開発環境(IDE)について
もちろん、Monoフレームワークに適正なIDEがないということは考えられません。monodevelopパッケージをインストールすれば、現代的なIDEによく見られる機能をすべて備えた高度な開発環境が得られます。monodevelopには、コード補完、クラス管理、オンラインヘルプといった典型的な機能に加え、言語またはアプリケーションに固有のモジュールを挿入するためのアドインエンジンも備わっています。たとえば、MonoでOpenOffice用のマクロを書きたい場合は、cli-uno-bridgeとmonodevelopのOpenOffice Automation Samplesアドインをインストールし、サンプルを見ながら学んでください。
あなたが.NETアプリケーションを実行したいと思っているDebianユーザーなら、本稿からMono(とりわけMono 2.0)が現在および近い将来に何を提供しなければならないか概ねおわかりいただけたことと思います。さらに新しい.NET互換性については、ご自分でMonoをチェックして調べてください。
