はじめに
MonoはNovellが主導する、ECMA標準に基づく共通言語インフラストラクチャ(Common Language Infrastructure:CLI)のためのオープンソースの.NET開発フレームワークです。Monoプロジェクトは、C#コンパイラや共通言語ランタイム(Common Language Runtime:CLR)など、Linux、BSD、UNIX、Mac OS X、Solaris、Windowsといったプラットフォーム上で動作するLinuxアプリケーションやクロスプラットフォームアプリケーションを開発するための.NET互換のツール群を作成しています(Mono 2.4のアーキテクチャの全体像については図1を参照)。
Monoの最新バージョンは2.4です(2009年3月30日時点)。
この記事の掲載時点(2009年3月30日時点)での最新バージョンは2.4でしたが、現時点では、2009年12月15日にリリースされたMono 2.6が最新となっています。
このバージョンには.NET FrameworkのコアAPIのほか、Visual Basic .NETとC#バージョン 2.0および(部分的に)3.0のサポートが含まれます。またLINQ to ObjectやLINQ to XMLも配布対象に含まれますが、LINQ to SQLは対象外です。C# 3.0がC#コンパイラのデフォルトの動作モードになり、Windows Forms 2.0もサポートされるようになりました。
.NET Framework 3.0の実装は「Olive」というMonoの実験的サブプロジェクトで進められていますが、.NET 3.0をサポートしたMonoフレームワークのリリース日はまだ公表されていません(Monoの簡単な歴史についてはこの後の補足説明を参照)。
この記事では、Windows用のMono 2.4をインストールする方法を説明したうえで、この新バージョンのコンポーネントとアーキテクチャについて解説します。
開発者Miguel de Icaza(Monoプロジェクトの創設者)が.NETテクノロジに興味を持ったのは、2000年12月に.NETのドキュメントが公開されて間もなくのことでした。.NETのバイトコードインタープリタについて調査した彼は、メタデータに関する仕様がないことに気付きました。2001年2月、de IcazaはC#で書かれたC#コンパイラに取り組み始めます。2001年4月、欠落していたファイル形式がECMAによって公開されました。Mono 1.0がリリースされたのは、それから約3年後の2004年6月30日のことです。
豆知識:Monoのロゴにサルの顔が描かれているのは、monoがスペイン語でサルを意味するからです。
Mono 2.4インストールの概要
WindowsでMono 2.4を実行するには、次のコンポーネントをインストールする必要があります。
- Microsoft .NET Framework Version 3.5
- GTK# for .NETのバージョン2.12.9-2
- MonoDevelopのバージョン2.1.r136446(図2を参照)
- Mono Libraries r135450(MonoDevelopをソースからビルドする場合にのみ必要)
必要なコンポーネントをすべてダウンロードするには、ここをクリックします(図3を参照)。MonoのソースコードはNovellのFTPサイトからダウンロードできます(図4を参照)。
上記リンクは最新バージョンへのリンク先となっているため、現時点ではMono Develop 2.2、Mono 2.6がダウンロード可能となっています。
Monoはいくつかのアーキテクチャで32ビットシステムと64ビットシステムの両方をサポートしており、複数のオペレーティングシステムに対応しています。Monoには、新しいソフトウェアの開発に役立つ次のようなコンポーネントも含まれます。
- クラスローダ、JIT(Just-In-Time)コンパイラ、ガベージコレクティングランタイムを含む共通言語インフラストラクチャ(CLI)仮想マシン
- 共通言語ランタイム(CLR)で動作する任意の言語で使用可能なクラスライブラリ(.NET互換のクラスライブラリとMonoが提供するクラスライブラリの双方を含む)
- C#言語のコンパイラ(将来的に共通言語ランタイムをターゲットとした別のコンパイラがMonoによって開発される可能性あり)
CLRと共通型システム(Common Type System:CTS)により、バイトコードをターゲットとする何種類もの言語でアプリケーションやライブラリを書くことができます。例えば、代数的な演算を行うクラスの定義をC#で書いておけば、CLIをサポートする他の任意の言語でそのクラスを再利用できます。C#で作成したクラスをC++でサブクラス化し、その結果をEiffelプログラムでインスタンス化することも可能です。こうしたすべての言語で1つのオブジェクトシステム、スレッディングシステム、クラスライブラリ群、ガベージコレクションシステムを共有できます。
MonoDevelopコンポーネントは、もともとC#をはじめとする.NET言語用に設計された統合開発環境(Integrated Development Environment:IDE)です。MonoDevelopを使えば、開発者はLinux上でデスクトップアプリケーションやASP.NET Webアプリケーションを短時間で書くことができます。また、Visual Studioで作成した.NETアプリケーションをLinuxに移植したり、1つのコードベースですべてのプラットフォームを管理したりすることも容易になります。
図5に、1つのフォルダにダウンロードされたMono 2.4の全コンポーネントを示します。