Mono (ソフトウェア)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索
Mono
開発元 Xamarin
最新版 2.10.8(2011年12月19日(2か月前) (2011-12-19
対応OS クロスプラットフォーム
種別 プラットフォーム
ライセンス GPLLGPLMITデュアル
公式サイト www.mono-project.com
テンプレートを表示

Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースソフトウェア群、またそのプロジェクト名である。

現在はXamarin社が開発、販売、サポート業務を行っている。

共通言語基盤 (CLI) の実装やC#コンパイラなどが含まれる。

目次

[編集] 動作プラットフォーム

Monoはマルチプラットフォームであり、LinuxFreeBSDUNIXMac OS XSolarisWindowsで動作する。

その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。 MonoTouchプロジェクトでは、iPhoneやiPad、iPod touchといったiOSでの動作をサポートしている。 またMonoTouchの技術を応用し、Mac OSXへのネイティブ対応を行うMonoMacプロジェクトも2010年に発表された。

[編集] プロジェクトの目標

マイクロソフトはFreeBSD、Windows、Mac OS Xで動作するシェアードソースCLIというCLIの実装を公開しているが、マイクロソフトのシェアードソースライセンスは商用利用が禁止されているなど、コミュニティにとって十分とはいえない。MonoプロジェクトはPortable.NETプロジェクトとさまざまな点で共通した目標を掲げている。

Monoプロジェクトの公式発表ではないが、その主導者であるミゲル・デ・イカザ氏の言葉として、「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。

[編集] Monoランタイム

Monoランタイムは多くのプロセッサで動作するJITコンパイラを搭載している。JITコンパイラはアプリケーションの実行中に共通中間言語 (CLI) コードをネイティブコードに変換し、それらをキャッシュする。実行前にネイティブコードに変換し、キャッシュしておくことも可能である。JITコンパイラが対応するプロセッサはx86SPARCPowerPCARMS/390(32および64ビット)、x86-64IA-64、64ビットモードSPARCである。それ以外のシステムでは、ネイティブコードに変換するのではなくインタプリタによって逐次バイトコードが実行される。ほとんどの状況で、JITコンパイラによる方法はインタプリタよりもパフォーマンスの点で勝っている。

またマイクロソフト純正の.NET FrameworkではサポートされていないSIMDへの対応など、Mono独自の革新的な機能の取り込みも積極的に行われている。

[編集] 歴史

2000年12月に.NETドキュメントが公開されると、Monoプロジェクトの創始者であるミゲル・デ・イカザは.NET技術に興味を魅かれた。バイトコードインタプリタを調べてみると、彼はメタデータに関する仕様が存在しないことに気がついた。2001年2月、彼は.NETメーリングリストにおいて不足している情報を公開するよう求め、同時にC#の習得のため、C#で書かれたC#コンパイラの開発に着手した。2001年4月、Ecma Internationalは不足していたファイル形式を公開し、デ・イカザはGUADEC2001年4月6日8日)において彼の開発したコンパイラのデモンストレーションを行った(それは自分自身の解析が可能であった)。

Ximianノベルに買収される前のMonoの開発会社)では、生産性を向上するためのツールを開発するための会議が内部的に行われていた。実現可能性の調査の結果、そのような技術は構築可能であるという結論に至り、Ximianは他のプロジェクトからスタッフを集め、Monoチームを結成した。しかしXimian内部だけで.NETと同等のものを作るには人材が不足していたため、Monoをオープンソースプロジェクトとした。これは2001年7月19日、オライリーカンファレンスによって発表された。

3年近く経った2004年6月30日、Mono 1.0がリリースされた。

  • 2009年12月15日 Mono 2.6がリリースされた。Mono 2.6では、Windows Communication FoundationLow Level Virtual Machineなどをサポートした。
  • Mono 2.8でC#4.0がサポートされた。
  • Mono 2.8.1でSystem.Text.Encodingにおいて日本語(Shift_JIS)がサポートされた。

[編集] プロジェクト名の由来

monoスペイン語で猿を意味するため、Monoのロゴには猿が描かれている。猿に関する名称はXimianの他のプロジェクトにも見られる。 Mono FAQでは、名称の由来に関する質問に対して「我々は猿が好きなのです。」 (We like monkeys.) と回答している[1]

[編集] Monoコンポーネント

Monoは大きく分けて3種類のコンポーネントから構成される。

  1. 中核コンポーネント
  2. Mono/Linux/GNOME 開発スタック
  3. マイクロソフト互換スタック

[編集] 中核コンポーネント

中核コンポーネントにはC#コンパイラ、仮想機械基本クラスライブラリが含まれる。これらはEcma-334[2]およびEcma-335[3]の標準に基づいており、これによってMonoを標準準拠のオープンソースなCLI仮想機械たらしめている。

[編集] Mono/Linux/GNOME開発スタック

Mono/Linux/GNOME開発スタックは、従来のGNOMEや他のフリーライブラリをアプリケーション開発に活用するためのツール群である。

これに含まれるものとしては、以下のものが含まれる。

  • Gtk# - GUI開発のためのライブラリ。
  • WebBrowser - 各種レンダリングエンジンをラッピングしたコンポーネント。
    • Gecko# - Geckoをレンダリングエンジンとして利用するMozillaライブラリ。
    • WebKit# - WebKitをレンダリングエンジンとして利用するWebKitライブラリ。

特に、Gtk#及びGnome#ではMonoアプリケーションをGNOMEデスクトップにネイティブアプリケーションとして統合することができ、また最新のMonoDevelopを用いる事でVisual StudioとWindows Formsの様なRAD開発も可能となった。

データベースライブラリはMySQLSQLitePostgreSQLFirebirdOpen Database Connectivity (ODBC)、Microsoft SQL Server (MSSQL)、Oracle、オブジェクトリレーショナルデータベースdb4oなど、多くのデータベースに接続することができる。

その他にも、Unix統合ライブラリ、データベース接続ライブラリ、セキュリティスタック、XMLスキーマ言語RelaxNGなど、汎用的な.NET Framework向けの巨大ライブラリプロジェクトとしての側面もある。

[編集] マイクロソフト互換スタック

マイクロソフト互換スタックは、Windowsの.NETアプリケーションを他のオペレーティングシステムで利用するための機能を提供する。例えば、ADO.NETASP.NETWindows.Formsなどの実装が含まれる。

ASP.NETへの対応については、XSPというC#で作られた独自のシンプルなウェブサーバ(アプリケーションサーバ)により実現している。

Windows Formsへの対応については、WINEプロジェクトとの協力により開発が行われている。

[編集] 出典

[ヘルプ]

[編集] 主な対応ソフト

[編集] 関連項目

  • GNOME
  • IKVM.NET - Java仮想マシンをMonoフレームワーク上で実現するサブプロジェクト。
  • ノベル
  • Ximian
  • Xamarin
  • LAMBDA - C#で書かれたアプリケーションサーバ&業務システム構築支援ライブラリ。Monoフレームワーク上で動作する。

[編集] 外部リンク

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語