「Mono」の版間の差分
imported>Administrator |
|||
24行目: | 24行目: | ||
また[[マイクロソフト]]純正の[[.NET Framework]]ではサポートされていない[[SIMD]]への対応など、Mono独自の革新的な機能の取り込みも積極的に行われている。 | また[[マイクロソフト]]純正の[[.NET Framework]]ではサポートされていない[[SIMD]]への対応など、Mono独自の革新的な機能の取り込みも積極的に行われている。 | ||
+ | |||
+ | == Monoライブラリ == | ||
+ | MonoプロジェクトにはMono本体に加え、便利なライブラリやフレームワークが多数用意されている。 | ||
+ | これらは純正[[.NET Framework]]でも利用できる。 | ||
+ | また、一部は[[NuGet]]でも配布されており、[[Visual Studio]]などからも手軽に利用できるようになっている。 | ||
+ | |||
+ | === 主なMonoライブラリ === | ||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! 名称 !! NuGet配布 !! 概要 | ||
+ | |- | ||
+ | | [[Mono.Addins]] || ○ || アドイン対応アプリを作るためのフレームワーク。 | ||
+ | |- | ||
+ | | [[Mono.Addins.Setup]] || ○ || | ||
+ | |- | ||
+ | | [[Mono.Cecil]] || ○ || [[CIL]]を解析するライブラリ。 | ||
+ | |- | ||
+ | | [[Mono.CSharp]] || ○ || | ||
+ | |- | ||
+ | | [[Mono.Linq.Expressions]] || ○ || | ||
+ | |- | ||
+ | | [[Mono.Options]] || ○ || [[コマンドライン引数]]を解析するライブラリ。いわゆる[[getopts]]の[[C Sharp|C#]]版。 | ||
+ | |- | ||
+ | | [[Mono.Reflection]] || ○ || | ||
+ | |- | ||
+ | | [[Mono.Zeroconf]] || ○ || | ||
+ | |} | ||
== 歴史 == | == 歴史 == |
2012年8月6日 (月) 07:57時点における版
Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースソフトウェア群、またそのプロジェクト名である。
現在はXamarin社が開発、販売、サポート業務を行っている。
共通言語基盤 (CLI) の実装やC#のコンパイラなどが含まれる。
目次
動作プラットフォーム
Monoはマルチプラットフォームであり、Linux、FreeBSD、Mac OS X、Solaris、Windowsで動作する。
その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。
- MonoTouch - iPhoneやiPad、iPod touchといったiOSでの動作をサポートしている。
- MonoMac - MonoTouchの技術を応用し、Mac OS Xへのネイティブ対応を行う。
- Mono for Android - Androidでの動作をサポートしている。
プロジェクトの目標
マイクロソフトはFreeBSD、Windows、Mac OS Xで動作するシェアードソースCLIというCLIの実装を公開しているが、マイクロソフトのシェアードソースライセンスは商用利用が禁止されているなど、コミュニティにとって十分とはいえない。MonoプロジェクトはPortable.NETプロジェクトとさまざまな点で共通した目標を掲げている。
Monoプロジェクトの公式発表ではないが、その主導者であり「C++はクソ、C言語最高」と言わんばかりにGObjectやGTK+などを推し進めていたミゲル・デ・イカザ氏の言葉として「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。
Monoランタイム
Monoのランタイム(Mono Runtime Environment)は多くのプロセッサで動作するJITコンパイラを搭載している。JITコンパイラはアプリケーションの実行中に共通中間言語(CIL) コードをネイティブコードに変換し、それらをキャッシュする。実行前にネイティブコードに変換し、キャッシュしておくことも可能である。
JITコンパイラが対応するプロセッサはx86、SPARC、PowerPC、ARM、System/390(32および64ビット)、AMD64、IA-64、64ビットモードSPARCである。それ以外のシステムでは、ネイティブコードに変換するのではなくインタプリタによって逐次バイトコードが実行される。ほとんどの状況で、JITコンパイラによる方法はインタプリタよりもパフォーマンスの点で勝っている。
またマイクロソフト純正の.NET FrameworkではサポートされていないSIMDへの対応など、Mono独自の革新的な機能の取り込みも積極的に行われている。
Monoライブラリ
MonoプロジェクトにはMono本体に加え、便利なライブラリやフレームワークが多数用意されている。 これらは純正.NET Frameworkでも利用できる。 また、一部はNuGetでも配布されており、Visual Studioなどからも手軽に利用できるようになっている。
主なMonoライブラリ
名称 | NuGet配布 | 概要 |
---|---|---|
Mono.Addins | ○ | アドイン対応アプリを作るためのフレームワーク。 |
Mono.Addins.Setup | ○ | |
Mono.Cecil | ○ | CILを解析するライブラリ。 |
Mono.CSharp | ○ | |
Mono.Linq.Expressions | ○ | |
Mono.Options | ○ | コマンドライン引数を解析するライブラリ。いわゆるgetoptsのC#版。 |
Mono.Reflection | ○ | |
Mono.Zeroconf | ○ |
歴史
2000年12月にEcma Internationalにより.NET Frameworkのドキュメントが公開されると、Monoプロジェクトの創始者であるミゲル・デ・イカザは.NET技術に興味を魅かれた。マネージドコードのインタプリタを調べてみると、彼はメタデータに関する仕様が存在しないことに気がついた。
2001年2月、彼は.NET Frameworkのメーリングリストにおいて不足している情報を公開するよう求め、同時にC#の習得のため、C#で書かれたC#コンパイラの開発に着手した。
2001年4月、Ecma Internationalは不足していたファイル形式を公開し、ミゲル・デ・イカザは世界最大のGNOMEの祭典であるGUADEC(2001年4月6日~4月8日)において彼の開発したC#コンパイラのデモンストレーションを行った(それは自分自身の解析が可能であった)。
同時期、GNOMEの事実上の開発母体であったXimian社では生産性を向上するためのツールを開発するための会議が内部的に行われていた。実現可能性の調査の結果、そのような技術は構築可能であるという結論に至り、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 FoundationやLow Level Virtual Machineなどをサポートした。
- Mono 2.8でC#4.0がサポートされた。
プロジェクト名の由来
monoはスペイン語で猿を意味するため、Monoのロゴには猿が描かれている。猿に関する名称はXimianの他のプロジェクトにも見られる。 Mono FAQでは、名称の由来に関する質問に対して「我々は猿が好きなのです。」 (We like monkeys.) と回答している[1]。
Mono関連のコマンド
関連項目
- MonoDevelop
- IKVM.NET - Java仮想マシンをMonoフレームワーク上で実現するサブプロジェクト。
- Xamarin