「Mono」の版間の差分
imported>Administrator |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (7人の利用者による、間の15版が非表示) | |||
| 1行目: | 1行目: | ||
'''Mono'''(モノ)は、GNOMEプロジェクト創設者の[[ミゲル・デ・イカザ]]が開発した、Ecma標準に準じた[[.NET Framework]] | '''Mono'''(モノ)は、GNOMEプロジェクト創設者の[[ミゲル・デ・イカザ]]が開発した、Ecma標準に準じた[[.NET Framework]]互換の環境を実現するための[[オープンソース]]ソフトウェア群、またそのプロジェクト名である。 | ||
[[Xamarin]]社が開発、販売、サポート業務を行ってた | |||
2016年に[[マイクロソフト]]に買収され、2019年に最後のメジャーリリースを行ったのを最後に放置されていた。 | |||
現在は[[Wine]]が引き継いでいる。 | |||
[[共通言語基盤]] (CLI) の実装や[[C Sharp|C#]]の[[コンパイラ]]などが含まれる。 | [[共通言語基盤]] (CLI) の実装や[[C Sharp|C#]]の[[コンパイラ]]などが含まれる。 | ||
| 9行目: | 12行目: | ||
その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。 | その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。 | ||
なお、一般的なマルチプラットフォーム(いわゆる「[[Write Once, Run Anywhere]]」を目指す多くのプロジェクトとは異なり、Monoではビジネスロジック部分のみを共通化しようとする物が多く、インターフェイス(ビュー)に近い部分はそのプラットフォームに依存するような作りとなっている。これにより「[[Write Once, Run Anywhere]]」は実現できないが、そのプラットフォームが持つ特徴や性能を活かすことができる。 | |||
; Mono公式 | |||
* [[MonoTouch]] - [[iPhone]]や[[iPad]]、[[iPod touch]]といった[[iOS]]での動作をサポートしている。 | * [[MonoTouch]] - [[iPhone]]や[[iPad]]、[[iPod touch]]といった[[iOS]]での動作をサポートしている。 | ||
* [[MonoMac]] - [[MonoTouch]]の技術を応用し、Mac OS Xへのネイティブ対応を行う。 | * [[MonoMac]] - [[MonoTouch]]の技術を応用し、Mac OS Xへのネイティブ対応を行う。 | ||
* [[Mono for Android]] - [[Android]]での動作をサポートしている。 | * [[Mono for Android]] - [[Android]]での動作をサポートしている。 | ||
; サードパーティ製 | |||
* [[Unity]] | |||
* [[PlayStation Suite SDK]] | |||
== プロジェクトの目標 == | == プロジェクトの目標 == | ||
[[マイクロソフト]]は[[FreeBSD]]、[[Windows]]、[[Mac OS X]]で動作する[[シェアードソースCLI]]という[[CLI]]の実装を公開しているが、マイクロソフトの[[シェアードソースライセンス]]は商用利用が禁止されているなど、コミュニティにとって十分とはいえない。MonoプロジェクトはPortable.NETプロジェクトとさまざまな点で共通した目標を掲げている。 | |||
Monoプロジェクトの公式発表ではないが、その主導者であり「C++はクソ、C言語最高」と言わんばかりにGObjectやGTK+などを推し進めていた[[ミゲル・デ・イカザ]]氏の言葉として「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。 | Monoプロジェクトの公式発表ではないが、その主導者であり「C++はクソ、C言語最高」と言わんばかりにGObjectやGTK+などを推し進めていた[[ミゲル・デ・イカザ]]氏の言葉として「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。 | ||
== Monoランタイム == | == 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ライブラリ === | |||
{| 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]] || ○ || | |||
|} | |||
== 歴史 == | == 歴史 == | ||
2000年12月にEcma Internationalにより[[.NET Framework]] | 2000年12月にEcma Internationalにより[[.NET Framework]]の[[ドキュメント]]が公開されると、Monoプロジェクトの創始者である[[ミゲル・デ・イカザ]]は.NET技術に興味を魅かれた。[[マネージドコード]]の[[インタプリタ]]を調べてみると、彼は[[メタデータ]]に関する仕様が存在しないことに気がついた。 | ||
2001年2月、彼は. | 2001年2月、彼は.NET Frameworkの[[メーリングリスト]]において不足している情報を公開するよう求め、同時に[[C Sharp|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がリリースされた。 | それから3年近く経った2004年6月30日、Mono 1.0がリリースされた。 | ||
| 38行目: | 74行目: | ||
* 2009年12月15日 Mono 2.6がリリースされた。Mono 2.6では、[[Windows Communication Foundation]]や[[Low Level Virtual Machine]]などをサポートした。 | * 2009年12月15日 Mono 2.6がリリースされた。Mono 2.6では、[[Windows Communication Foundation]]や[[Low Level Virtual Machine]]などをサポートした。 | ||
* Mono 2.8でC#4.0がサポートされた。 | * Mono 2.8でC#4.0がサポートされた。 | ||
== プロジェクト名の由来 == | == プロジェクト名の由来 == | ||
| 44行目: | 79行目: | ||
Mono FAQでは、名称の由来に関する質問に対して「我々は猿が好きなのです。」 (We like monkeys.) と回答している<ref>[http://www.mono-project.com/FAQ:_General "What does the name "Mono" mean?"] </ref>。 | Mono FAQでは、名称の由来に関する質問に対して「我々は猿が好きなのです。」 (We like monkeys.) と回答している<ref>[http://www.mono-project.com/FAQ:_General "What does the name "Mono" mean?"] </ref>。 | ||
== インストール == | |||
=== FreeBSD === | |||
# パッケージを入れる | |||
$ pkg install mono | |||
# 共有メモリを増やす | |||
$ echo kern.maxfiles=25000 >> /boot/loader.conf | |||
$ echo kern.ipc.semmni=40 >> /boot/loader.conf | |||
$ echo kern.ipc.semmns=300 >> /boot/loader.conf | |||
# プロセスの細かい情報を取れるようにする | |||
$ echo "proc /proc procfs rw 0 0" >> /etc/fstab | |||
# SSL証明書をぶちこむ | |||
$ mozroots --import --sync | |||
=== macOS === | |||
[[macOS]]の場合はmono公式サイトからパッケージを拾ってきてインストーラーに従えばok。 | |||
また、[[Xamarin Studio]]を入れようとすると同時に入ってくる。 | |||
== Mono関連のコマンド == | |||
* [[xbuild]] | |||
* [[monodis]] | |||
* [[mcs]] | |||
* [[xsp]] | |||
* [[asp-state]] | |||
* [[dbsessmgr]] | |||
== 関連項目 == | == 関連項目 == | ||
| 56行目: | 118行目: | ||
== 参考文献 == | == 参考文献 == | ||
{{reflist}} | |||
[[category: Mono]] | |||
[[category: Wine]] | |||
2024年8月28日 (水) 10:12時点における最新版
Mono(モノ)は、GNOMEプロジェクト創設者のミゲル・デ・イカザが開発した、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースソフトウェア群、またそのプロジェクト名である。
Xamarin社が開発、販売、サポート業務を行ってた 2016年にマイクロソフトに買収され、2019年に最後のメジャーリリースを行ったのを最後に放置されていた。 現在はWineが引き継いでいる。
共通言語基盤 (CLI) の実装やC#のコンパイラなどが含まれる。
動作プラットフォーム[編集 | ソースを編集]
Monoはマルチプラットフォームであり、Linux、FreeBSD、Mac OS X、Solaris、Windowsで動作する。
その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。 なお、一般的なマルチプラットフォーム(いわゆる「Write Once, Run Anywhere」を目指す多くのプロジェクトとは異なり、Monoではビジネスロジック部分のみを共通化しようとする物が多く、インターフェイス(ビュー)に近い部分はそのプラットフォームに依存するような作りとなっている。これにより「Write Once, Run Anywhere」は実現できないが、そのプラットフォームが持つ特徴や性能を活かすことができる。
- Mono公式
- 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]。
インストール[編集 | ソースを編集]
FreeBSD[編集 | ソースを編集]
# パッケージを入れる $ pkg install mono
# 共有メモリを増やす $ echo kern.maxfiles=25000 >> /boot/loader.conf $ echo kern.ipc.semmni=40 >> /boot/loader.conf $ echo kern.ipc.semmns=300 >> /boot/loader.conf
# プロセスの細かい情報を取れるようにする $ echo "proc /proc procfs rw 0 0" >> /etc/fstab
# SSL証明書をぶちこむ $ mozroots --import --sync
macOS[編集 | ソースを編集]
macOSの場合はmono公式サイトからパッケージを拾ってきてインストーラーに従えばok。 また、Xamarin Studioを入れようとすると同時に入ってくる。
Mono関連のコマンド[編集 | ソースを編集]
関連項目[編集 | ソースを編集]
- MonoDevelop
- IKVM.NET - Java仮想マシンをMonoフレームワーク上で実現するサブプロジェクト。
- Xamarin