Mono

[Fedora 13]

Mono でマルチプラットフォームに対応する GUI アプリケーションを開発するための情報やサンプルを紹介します。


はじめに

本サイトで紹介する Mono に関する情報は、非常に偏った内容であることを、最初にお断りしておきます。対象が小規模な GUI アプリケーションであること、さらに開発環境が Linux、実行環境が Linux と Windows であること、そして RAD に適した IDE を積極的には使用していないことです。そのため、本サイトで紹介しているサンプルは、クセのあるコーディングにみえるかもしれません。

ページ先頭に戻る

.NET Framework とは

まず、Mono と密接な関係にある .NET Framework について簡単に説明をします。

.NET Framework とは、マイクロソフトが開発したアプリケーション開発、実行環境のことで、クラスライブラリの集合体という形で提供されています。一般に .NET という場合、.NET 全体の環境を指します。

.NET 対応アプリケーションソフトは、コンパイル時に .NET Framework 用の共通中間言語 (Common Intermediate Language, CIL) にコンパイルされます。コンパイルされたアプリケーションソフトを実行すると、.NET Framework の共通言語ランタイム (Common Language Runtime, CLR) が、共通中間言語で記述されているアプリケーションソフトを OS ごとの機械語に変換して動作します。これをジャストインタイムコンパイル (Just In Time Compilation, JIT コンパイル) と呼びます。

.NET Framework の基幹を構成する実行コードや実行環境などは、マイクロソフトが共通言語基盤 (Common Language Infrastructure, CLI) として定義し、ECMA-335ISO/IEC 23271 および JIS X 3016 に標準化されて公開されています。CLI は、プログラミング言語やコンピュータ・アーキテクチャに依存しない環境を定義しています。そのため、.NET Framework 自体は特定の開発言語に依存しないので、Microsoft 社が提供する主要な開発言語である Visual C#/Basic などのほか、サードパーティがこれ以外の開発言語を .NET Framework に対応させることができます。

ページ先頭に戻る

Mono について

Mono LogoMono は、Novell が主導する、.NET Framework 互換の環境を実現するためのオープンソースソフトウェアプロジェクトです。Mono には、共通言語基盤 (CLI) の実装や C# コンパイラなどが含まれておいます。主な特徴を以下に示しました。

マルチプラットフォーム
Linux、OS X、BSD および Windows 上で利用でき、x86、x86-64、ARM、s390、PowerPC などのアーキテクチャーに対応しています。
マルチ言語
C#、VB、Java、Python、RubyEiffelF#Oxygene など、様々なプログラミング言語でアプリケーション開発ができます。
バイナリ互換性
ECMA-335 準拠して実装した CLI および C# でビルドされているため、CIL のバイナリ互換性を確保。
マイクロソフト互換 API
ASP.NET、ADO.NET、Silverlight および Windows.Forms を利用したアプリケーションを再コンパイルなしに実行可能です。
オープンソースなフリーソフトウェア
Mono のランタイム、コンパイラおよびライブラリは、OSI で認定されたオープンソースのライセンスで配布可能かつデュアルライセンスにすることも可能です。
広範囲な対象テクノロジー
多くのポピュラーなライブラリやプロトコルへのバインディングあるいは実装に対応しています。

ライセンス

Mono は、オープンソースライセンスに従って再配布することができますが、マイクロソフトが知的所有権を保有する .NET Framework の技術との互換性を、オープンソースで実現する為でしょうか、ライセンスが細かく設定されています。[3]

  • C# コンパイラは、MIT/X11GPL のデュアルライセンスの元でリリースされています。
  • ツール類は GPL ライセンスの元でリリースされています。
  • ランタイムライブラリは LGPL 2.0 ライセンスの元でリリースされています。
  • クラスライブラリは MIT/X11 ライセンスの元でリリースされています。
  • .ASP.NET MVC と ASP.NET AJAX は、Ms-PL (Microsoft public License) の元でマイクロソフトによってリリースされています。

ちなみに、ターミナル上で Mono のバージョンを確認すると、以下の様に表示されます。(Fedora 13 / Mono 2.6.4 時点)

$ mono --version
Mono JIT compiler version 2.6.4 (tarball Mon Jun 21 19:26:21 UTC 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
	TLS:           __thread
	GC:            Included Boehm (with typed GC and Parallel Mark)
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none

mono コマンドの用法

mono [options] [file] [arguments...]

準備中
ページ先頭に戻る

Mono の C# コンパイラ

C# コンパイラは、CIL のバイトコードを生成します。Mono で利用できる C# コンパイラは以下の 4 種類です(Fedora 13 / Mono 2.6.4 時点)。なお C# は, ECMA-334ISO/IEC 23270 および JIS X 3015 に標準化されて公開されています。

mcs(デフォルトの C# コンパイラ)
C# 1.0 (一部 C# 2.0, 3.0 にも対応)を実装したコンパイラ
gmcs
C# 3.0 を実装したコンパイラ
smcs
Silverlight/Moonlight アプリケーションのビルド用。
dmcs
C# 4.0 コンパイラ(Mono 2.6 からプレビュー版としてリリースし、2.8 で正式リリース予定)

mcs コマンドの用法

mcs [options] [source-files]

準備中
ページ先頭に戻る

関連サイト

[1] Main Page - Mono
Mono のプロジェクトサイトです。
[2] .NET Framework デベロッパーセンター: 開発 | MSDN
マイクロソフトの .NET Framework 開発者向け技術情報サイトです。
[3] マイクロソフト、C#やCLIのオープンソースによる実装を認める。Monoプロジェクトに弾みがつくか? - Publickey
マイクロソフトが知的所有権を保有する技術を、オープンソースとして実装するのは危険であると、あのリチャード・ストールマン氏が主張しましたが、とりあえずその心配はなくなりました。その顛末が簡潔に解説されています。
[4] Publicly Available Standards
国際標準化機構 (ISO) および 国際電気標準会議 (IEC) では、著作権の元で無料で公開されている規格が多数あります。CLI (ISO/IEC 23271) や C# (ISO/IEC 23270) もそうです。Java が依然として標準化されていないのと対照的です。ちなみに、日本工業規格 (JIS) において無料で入手できる規格を見たことがありません。ただ PDF の閲覧だけは日本工業標準調査会のサイトできます。
[5]
ページ先頭に戻る
(C) 2009 - 2017 Fuhito Suguri
クリエイティブ・コモンズ・ライセンス
This site by Fuhito Suguri is licensed under a Creative Commons 表示 - 継承 3.0 Unported License.
Ads by Sitemix