「Mono」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
(2人の利用者による、間の3版が非表示)
9行目: 9行目:
  
 
その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。
 
その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。
 +
なお、一般的なマルチプラットフォーム(いわゆる「[[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]]
  
 
== プロジェクトの目標 ==
 
== プロジェクトの目標 ==
33行目: 39行目:
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! 名称 !! NuGet配布 !! 概要
+
! 名称 !! [[NuGet]] !! 概要
 
|-
 
|-
 
| [[Mono.Addins]] || ○ || アドイン対応アプリを作るためのフレームワーク。
 
| [[Mono.Addins]] || ○ || アドイン対応アプリを作るためのフレームワーク。
69行目: 75行目:
 
monoはスペイン語で猿を意味するため、Monoのロゴには猿が描かれている。猿に関する名称は[[Ximian]]の他のプロジェクトにも見られる。
 
monoはスペイン語で猿を意味するため、Monoのロゴには猿が描かれている。猿に関する名称は[[Ximian]]の他のプロジェクトにも見られる。
 
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関連のコマンド ==
 
== Mono関連のコマンド ==
89行目: 115行目:
  
 
== 参考文献 ==
 
== 参考文献 ==
<references/>
+
{{reflist}}
  
 
{{stub}}
 
{{stub}}
 +
 +
[[category:Mono]]

2017年6月8日 (木) 09:22時点における最新版

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

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

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

動作プラットフォーム[編集 | ソースを編集]

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

その他にも、特定プラットフォーム向けに特化したサブプロジェクトも存在する。 なお、一般的なマルチプラットフォーム(いわゆる「Write Once, Run Anywhere」を目指す多くのプロジェクトとは異なり、Monoではビジネスロジック部分のみを共通化しようとする物が多く、インターフェイス(ビュー)に近い部分はそのプラットフォームに依存するような作りとなっている。これにより「Write Once, Run Anywhere」は実現できないが、そのプラットフォームが持つ特徴や性能を活かすことができる。

Mono公式
サードパーティ製

プロジェクトの目標[編集 | ソースを編集]

マイクロソフトFreeBSDWindowsMac 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 コマンドライン引数を解析するライブラリ。いわゆるgetoptsC#版。
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がリリースされた。

プロジェクト名の由来[編集 | ソースを編集]

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関連のコマンド[編集 | ソースを編集]

関連項目[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]

参考文献[編集 | ソースを編集]