最近、ウォークマン「NW-S703F」で音楽を聴く時間が長くなっています。OS Xが未サポートなことは力業で解決するとして、NCヘッドフォンが付属することは大きなプラスですよね。難聴予防のため、iPodにもぜひNCヘッドフォンを標準装備してほしいと思います。

さて、今回は「Mono」について。開発方面に目が向かないOS Xユーザにとっては、消しゴムや雑誌を連想してしまう名前かもしれないが、「Microsoft .NET」互換の開発環境として、特にLinux界隈では数年前から熱い視線が送られているビッグネームだ。ユニバーサルバイナリに対応したOS X版もリリースされているので、ユーザ側の立場から、Monoを使う利点を考えてみよう。

Monoを導入する

Monoは、Microsoft .NET互換を目指した開発フレームワークだ。Gnomeの開発も手がけたベンチャー企業Ximianにより着手され、同社がNovellに買収された後も、Miguel de Icaza氏率いるプロジェクトチームは引き続きNovellで開発を継続。2月にリリースされた最新バージョン(v1.2.3)では、Visual Basic.NETへの正式対応を実現するなど、純正.NET環境へのキャッチアップが続けられている。

OS XでMonoを利用するには、こちらで公開されている「Mono 1.2.3.1_0 Framework - Universal (Stable)」をインストールすればOK。対応システムはOS X 10.3以降、150MB以上の空きディスク容量が必要だ。

インストールが完了すると、C#コンパイラの「gmcs」、BASICコンパイラの「mbas」などのコマンドが/usr/bin(実体は/Library/Frameworks/Mono.framework以下)にインストールされる。IronPython(ipy)やJava仮想マシン(ikvm)など、多数のコマンドがインストールされるので確認してみよう。

MonoでWindowsアプリを動かす

OS X以外のプラットフォームともお付き合いがあるプログラマにとって、.NET互換環境を利用できるうえ、前述のikvmを利用するとJavaバイトコードも実行できるMonoは、興味をそそられる存在かと思う。Cocoaにご執心のプログラマにとっても、C#からCocoaにアクセスできる「CocoaSharp」は、気になるはず。しかし、一般ユーザにとっても、.NETランタイム環境としてのMonoは、それなりに面白く使えるはずだ。

たとえば、Windows用に開発された.NETアプリケーションは、いくつかの条件をクリアしていればだが、ほぼ手直しなしにOS Xで動作する。ソースコードパッケージに含まれるソリューションファイル(*.sln)、またはプロジェクトファイル(*.csproj)をprj2makeコマンドの引数として実行すると、Makefileが書き出されるので、あとはmakeを実行すればOK。生成された実行形式のファイル(*.exe)は、「mono ***.exe」の要領でシェルから実行できる。Windows FormsなどGUIを使用するものについては、X11.appが必要だ。

その条件だが、.NETのバージョンはMono 1.2.3が対応するv1.1以前(v2.0のサポートは部分的)、DirectX 3DなどMonoがサポートしないAPIに依存せず、Visual Studio 2003以前で作成されたプロジェクト(prj2makeはVS2005で作成したプロジェクトに対応しない)であることが挙げられる。Microsoftが支援する.NET Framework開発コミュニティポータル「GotDotNet」には、この条件を満たすサンプルが多数登録されているので、興味があれば探してほしい。

ちなみに、Gnomeがインストール済みの環境であれば、MonoDevelopというC# / .NET用統合開発環境を使う手もある。OS Xの場合、FinkやDarwinPortsのインストールなど大掛かりな話になるが、SharpDevelop的なツールが必要なユーザにとっては、有効な選択肢になるはずだ。

GotDotNetで公開中の「Fortune Ball 1.0」をMonoでビルド

同じくGotDotNetから入手した「Paint .NET」のビルドにも成功