「Mono (ソフトウェア)」の版間の差分
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼(2) (iOS (Apple)) - log |
m Bot作業依頼: iOSの改名提案に伴う内部リンク修正依頼 (iOS) - log |
||
15行目: | 15行目: | ||
== 動作プラットフォーム == |
== 動作プラットフォーム == |
||
Monoは[[クロスプラットフォーム|マルチプラットフォーム]]であり、[[Linux]] ([[Android (オペレーティングシステム)|Android]])、[[macOS]]、[[ |
Monoは[[クロスプラットフォーム|マルチプラットフォーム]]であり、[[Linux]] ([[Android (オペレーティングシステム)|Android]])、[[macOS]]、[[iOS]]、[[Solaris]]、[[Berkeley Software Distribution|BSD]] ([[OpenBSD]], [[FreeBSD]], [[NetBSD]])、[[Microsoft Windows|Windows]]、[[Wii]]、[[PlayStation 3]]で動作する<ref name="supported-platforms">[http://www.mono-project.com/docs/about-mono/supported-platforms/ Supported Platforms | Mono]</ref>。 |
||
特定[[プラットフォーム (コンピューティング)|プラットフォーム]]向けに特化したサブプロジェクトも存在する。Xamarin.iOS(旧称:MonoTouch、2013年に改称)では、[[iPhone]]や[[iPad]]、[[iPod touch]]といった[[ |
特定[[プラットフォーム (コンピューティング)|プラットフォーム]]向けに特化したサブプロジェクトも存在する。Xamarin.iOS(旧称:MonoTouch、2013年に改称)では、[[iPhone]]や[[iPad]]、[[iPod touch]]といった[[iOS]]での動作をサポートしている。また、MonoTouchの技術を応用し、[[macOS|Mac OS X]]へのネイティブ対応を行うMonoMacプロジェクトも2010年に発表された。 |
||
== プロジェクトの目標 == |
== プロジェクトの目標 == |
2021年11月10日 (水) 03:00時点における版
開発元 | .NET Foundation |
---|---|
最新版 | 6.12.0.200 - 2023年7月11日[1] [±] |
リポジトリ | |
対応OS | クロスプラットフォーム |
種別 | プラットフォーム |
ライセンス | GPL, LGPL, MIT(デュアル) |
公式サイト |
www |
Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェア群、またそのプロジェクト名である。
2018年3月現在、マイクロソフトの子会社であるXamarinと.NET Foundationが開発、販売、サポート業務を行っている。
共通言語基盤 (CLI) の実装やC#のコンパイラなどが含まれる。
動作プラットフォーム
Monoはマルチプラットフォームであり、Linux (Android)、macOS、iOS、Solaris、BSD (OpenBSD, FreeBSD, NetBSD)、Windows、Wii、PlayStation 3で動作する[2]。
特定プラットフォーム向けに特化したサブプロジェクトも存在する。Xamarin.iOS(旧称:MonoTouch、2013年に改称)では、iPhoneやiPad、iPod touchといったiOSでの動作をサポートしている。また、MonoTouchの技術を応用し、Mac OS Xへのネイティブ対応を行うMonoMacプロジェクトも2010年に発表された。
プロジェクトの目標
マイクロソフトはFreeBSD、Windows、Mac OS Xで動作するシェアードソースCLIというCLIの実装を公開したが、マイクロソフトのシェアードソースライセンスは商用利用が禁止されているなど、コミュニティにとって十分とはいえない。MonoプロジェクトはPortable.NETプロジェクトとさまざまな点で共通した目標を掲げている。2016年6月にマイクロソフトからMITライセンスに基づいた[3]クロスプラットフォームかつオープンソースの.NET Framework実装として.NET Coreが正式リリースされ、SSCLIは存在意義を失ったが、Monoにも.NET Coreが取り込まれるなどの波及効果が表れている[4]。
Monoプロジェクトの公式発表ではないが、その主導者であるミゲル・デ・イカザの言葉として、「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。
Monoランタイム
Monoランタイムは多くのプロセッサで動作するJITコンパイラを搭載している。JITコンパイラはアプリケーションの実行中に共通中間言語 (CIL) コードをネイティブコードに変換し、それらをキャッシュする。実行前にネイティブコードに変換し、キャッシュしておくことも可能である。JITコンパイラが対応するプロセッサはx86、x86-64、IA-64、SPARC、PowerPC、ARM、S/390(32ビットおよび64ビット)、MIPSである[2]。それ以外のシステムでは、ネイティブコードに変換するのではなくインタプリタによって逐次バイトコードが実行される。ほとんどの状況で、JITコンパイラによる方法はインタプリタよりもパフォーマンスの点で勝っている。
また、SIMDへの独自対応 (Mono.Simd
) など、Mono独自の革新的な機能の取り込みも積極的に行われている。マイクロソフト純正の.NET Frameworkでは、Monoを後追いする形で、バージョン4.6にてSIMDサポートが追加された[5]。
歴史
2000年12月に.NETドキュメントが公開されると、Monoプロジェクトの創始者であるミゲル・デ・イカザは.NET技術に興味を魅かれた。バイトコードインタプリタを調べてみると、彼はメタデータに関する仕様が存在しないことに気がついた。2001年2月、彼は.NETメーリングリストにおいて不足している情報を公開するよう求め、同時にC#の習得のため、C#で書かれたC#コンパイラの開発に着手した。2001年4月、Ecma Internationalは不足していたファイル形式を公開し、デ・イカザはGUADEC(2001年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 Foundation (WCF) や LLVM などをサポートした。
- Mono 2.8ではC# 4.0がサポートされた。
- Mono 2.8.1ではSystem.Text.Encodingにおいて日本語 (Shift_JIS) がサポートされた。
- Mono 3.0.0ではC# 5.0がサポートされ、async/awaitなどが利用可能となった。
- Mono 4.0.0ではC# 6.0がサポートされ、またマイクロソフトがMIT License下で公開した.NET Coreにより一部のコンポーネントが置き換えられた。.NET2.0/3.5/4.0のサポートが終了し、浮動小数点演算処理が最適化された[6]。
- Mono 5.0.0ではC# 7.0がサポートされた。Visual Studioで利用されているものと同じRoslyn C#コンパイラ
csc
が追加された[7]。 - Mono 5.2.0では.NET Standard 2.0のサポートが行われた。
mono
がデフォルトで64ビットで動作するように変更が行われた[8]。 - Mono 5.10.0では.NET 4.7.1・C# 7.2・F# 4.1への対応が行われた[9]。
- Mono 5.12.0ではIBM AIXとIBM iに対応した。RoslynベースのVB.NETコンパイラ
vbc
が追加された[10]。
プロジェクト名の由来
monoはスペイン語で猿を意味するため、Monoのロゴには猿が描かれている。猿に関する名称はXimianの他のプロジェクトにも見られる。Mono FAQでは、名称の由来に関する質問に対して「我々は猿が好きなのです。」(We like monkeys.) と回答している[11]。
Monoコンポーネント
Monoは大きく分けて3種類のコンポーネントから構成される。
- 中核コンポーネント
- Mono/Linux/GNOME開発スタック
- マイクロソフト互換スタック
中核コンポーネント
中核コンポーネントにはC#コンパイラ、仮想機械、基本クラスライブラリが含まれる。これらはEcma-334[12]およびEcma-335[13]の標準に基づいており、これによってMonoを標準準拠のオープンソースなCLI仮想機械たらしめている。
Mono/Linux/GNOME開発スタック
Mono/Linux/GNOME開発スタックは、従来のGNOMEや他のフリーなライブラリをアプリケーション開発に活用するためのツール群である。
これに含まれるものとしては、以下のものが含まれる。
特に、Gtk#およびGnome#ではMonoアプリケーションをGNOMEデスクトップにネイティブアプリケーションとして統合することができ、また最新のMonoDevelopを用いることでVisual StudioとWindows FormsのようなRAD開発も可能となった。
データベースライブラリはMySQL、SQLite、PostgreSQL、Firebird、Open Database Connectivity (ODBC)、Microsoft SQL Server (MSSQL)、Oracle、オブジェクトリレーショナルデータベースdb4oなど、多くのデータベースに接続することができる。
その他にも、UNIX統合ライブラリ、データベース接続ライブラリ、セキュリティスタック、XMLスキーマ言語RelaxNGなど、汎用的な.NET Framework向けの巨大ライブラリプロジェクトとしての側面もある。
マイクロソフト互換スタック
マイクロソフト互換スタックは、Windowsの.NETアプリケーションを他のオペレーティングシステムで利用するための機能を提供する。例えば、ADO.NETやASP.NET、Windows Formsなどの実装が含まれる。
ASP.NETへの対応については、XSPというC#で作られた独自のシンプルなウェブサーバ(アプリケーションサーバ)により実現している。
Windows Formsへの対応については、Wineとの協力により開発が行われている。
2017年12月時点では、Windows Presentation Foundation (WPF) を実装する予定は無いとしている[14]。Xamarin.Formsによって提供されるXAML開発環境は、WPF/Silverlight/WinRTとは互換性がない。
主な対応ソフト
出典
- ^ “Mono Releases”. Mono Project. 2024年8月22日閲覧。
- ^ a b Supported Platforms | Mono
- ^ .NET Core とオープン ソース
- ^ 「Mono 4.0」リリース、オープンソース化された.NET関連コードを初めて採用 | OSDN Magazine
- ^ .NET における数値 | Microsoft Docs
- ^ Mono 4.0.0 Release Notes
- ^ “Mono 5.0.0 Release Notes”. Mono Project (2017年5月10日). 2018年7月8日閲覧。
- ^ “Mono 5.2.0 Release Notes”. Mono Project (2017年8月14日). 2018年7月8日閲覧。
- ^ “Mono 5.10.0 Release Notes”. Mono Project (2018年2月26日). 2018年7月8日閲覧。
- ^ “Mono 5.12.0 Release Notes”. Mono Project (2018年5月8日). 2018年7月8日閲覧。
- ^ "What does the name "Mono" mean?"
- ^ ECMA-334 ドキュメント (C# 言語仕様)
- ^ ECMA-335 ドキュメント (CLI)
- ^ Compatibility - Mono