Mono (ソフトウェア)

Monoとは



Monoは、GNOMEプロジェクトの創設者であるミゲル・デ・イカザ氏によって開発された、ECMA標準に準拠した.NET Framework互換環境を実現するためのオープンソースソフトウェア群であり、プロジェクト名でもあります。現在、開発、販売、サポートはマイクロソフト子会社であるXamarin.NET Foundationが行っています。

Monoは、共通言語基盤 (CLI) の実装やC#コンパイラなどを含み、様々なプラットフォーム上で動作します。

対応プラットフォーム



Monoはマルチプラットフォームに対応しており、Linux、macOS、iOS、tvOS、watchOS、Android、Solaris、IBM AIX/IBM i、BSD (OpenBSD, FreeBSD, NetBSD)、Windows、PlayStation 4|PlayStation_4Xbox OneXbox Series X/S|Xbox Series X_Sなど、幅広い環境で動作します。また、特定プラットフォーム向けのサブプロジェクトも存在します。

Xamarin.iOS: iOSデバイス向けのAPIやGUIツールキットを.NET向けにラップします。
Xamarin.Mac: macOSへのネイティブ対応を実現します。
Xamarin.Android: Android向けの環境を提供します。

これらの技術により、各プラットフォームの特性を活かしたアプリケーション開発が可能になっています。

プロジェクトの目標



マイクロソフトは、以前にFreeBSD、Windows、Mac OS Xで動作するシェアードソースCLIを公開しましたが、商用利用が制限されていました。Monoプロジェクトは、この課題を解決し、より自由な環境での開発を可能にすることを目指しました。マイクロソフトがMITライセンス.NET Coreをリリースしたことで、SSCLIは存在意義を失いましたが、Monoには.NET Coreの技術が取り込まれるなど、ポジティブな影響も生まれています。

プロジェクトの主導者であるミゲル・デ・イカザ氏は、「Cでプログラミングするには人生は短すぎる」という言葉を標語として掲げており、開発効率の向上に対する強い思いが込められています。

Monoランタイム



Monoランタイムは、多くのプロセッサに対応するJITコンパイラを搭載しており、アプリケーションの実行中に共通中間言語 (CIL) コードをネイティブコードに変換してキャッシュします。また、事前にネイティブコードに変換してキャッシュすることも可能です。JITコンパイラはx86、x86-64、IA-64、SPARC、PowerPC、ARM、S/390(32ビットおよび64ビット)、MIPSなどのプロセッサに対応しています。JITコンパイラに対応しないシステムでは、インタプリタがバイトコードを逐次実行します。一般的に、JITコンパイラインタプリタよりもパフォーマンスが高いとされています。

さらに、SIMDへの独自対応 (Mono.Simd) など、独自の革新的な機能も積極的に取り込まれています。マイクロソフト.NET Frameworkでも、Monoを追う形でSIMDサポートが追加されました。

Monoの歴史



2000年12月に.NETドキュメントが公開されたことをきっかけに、ミゲル・デ・イカザ氏は.NET技術に興味を持ちました。彼はバイトコードインタプリタを調査する中で、メタデータに関する仕様が不足していることに気づきました。その後、情報公開を求めると同時に、C#の習得を兼ねてC#で書かれたC#コンパイラを開発しました。Ecma Internationalが不足していたファイル形式を公開すると、デ・イカザ氏は自身が開発したコンパイラのデモンストレーションを行いました。

Ximian(後のノベルに買収)では、生産性向上ツールの開発が検討され、実現可能性の調査の結果、Monoチームが結成されました。しかし、社内だけでは.NETと同等のものを作るには人材が不足していたため、Monoをオープンソースプロジェクトとして公開しました。これは2001年7月19日に発表されました。

その後、約3年間の開発期間を経て、2004年6月30日にMono 1.0がリリースされました。



主なリリース:

2009年12月: Mono 2.6リリース(WCF、LLVMサポート)
Mono 2.8: C# 4.0サポート
Mono 2.8.1: Shift_JISサポート
Mono 3.0.0: C# 5.0サポート (async/await)
Mono 4.0.0: C# 6.0サポート、.NET Coreコンポーネント置き換え
Mono 5.0.0: C# 7.0サポート、Roslyn C#コンパイラ追加
Mono 5.2.0: .NET Standard 2.0サポート、デフォルト64ビット動作
Mono 5.10.0: .NET 4.7.1, C# 7.2, F# 4.1対応
Mono 5.12.0: IBM AIXとIBM i対応、RoslynベースのVB.NETコンパイラ追加


プロジェクト名の由来



Monoはスペイン語で猿を意味し、ロゴにも猿が描かれています。この名称は、Ximianの他のプロジェクトにも見られます。Mono FAQでは、名称の由来について「我々は猿が好きです」と回答しています。

Monoのコンポーネント



Monoは主に3つのコンポーネントで構成されています。

1. 中核コンポーネント: C#コンパイラ仮想機械、基本クラスライブラリなど、Ecma-334およびEcma-335の標準に準拠したもので構成されています。
2. Mono/Linux/GNOME開発スタック: GNOMEや他のフリーソフトウェアライブラリを活用するためのツール群です。Gtk#、Gnome#、WebBrowser、Gecko#、WebKit#などが含まれます。Gtk#やGnome#を用いることで、MonoアプリケーションをGNOMEデスクトップに統合でき、MonoDevelopを用いることで、Visual Studioと同様のRAD開発が可能です。データベース接続やUNIX統合、セキュリティなど、汎用的なライブラリも豊富です。
3. マイクロソフト互換スタック: Windowsの.NETアプリケーションを他のOSで利用するための機能を提供します。ADO.NET、ASP.NET、Windows Formsなどの実装が含まれています。ASP.NETの対応は、C#で書かれた独自のウェブサーバーであるXSPによって実現しています。Windows FormsはWineとの協力で開発されています。Windows Presentation Foundation (WPF) は現在のところ実装予定はありません。Xamarin.FormsによるXAML開発は、WPF/Silverlight/WinRTとの互換性はありません。

主な対応ソフトウェア



MonoDevelop
Beagle
Banshee

関連事項



GNOME
IKVM.NET
ノベル
Ximian
Xamarin

外部リンク



* 公式ウェブサイト (英語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。