特集

Linuxで動く.NET環境「Mono 1.0」の実力(前編)

株式会社ピーデー
川俣 晶
2004/10/05

Page1 Page2 Page3 Page4

Monoに含まれる機能

 理屈はさておき、実際にMonoで何ができるかを早く知りたくてうずうずしている読者も多いだろう。まずは、Monoに含まれている主要な機能を以下に示す。

  • C#コンパイラ
  • ECMA準拠の実行環境(ランタイム・エンジン)
  • Microsoft .NET Framework互換のクラス・ライブラリ(ADO.NETとASP.NETを含む)
  • gtk+とGNOMEを使用してGUIアプリケーションを開発するライブラリ「gtk#」
  • アプリケーションへのランタイムの埋め込み
  • IDE、デバッガ、ドキュメントのブラウザ

 また、.NET Frameworkにあるdisco、xsd、wsdl、ilasmといったツールに相当するものも含まれる。そのほか、確認し切れなかったが、クラス・ライブラリとしてはMozilla名前空間としてWebコンテンツのレンダリングを行うGeckoの名を冠したクラスや、Novell名前空間にLDAPの名を冠したクラスなども見られる。整理されたドキュメントが見付からず、全容は把握しきれないが、ほかにもいろいろなソフトウェアが含まれているらしい。

Mono 1.0.1のインストール

 次に、実際にMonoを利用する手順について説明しよう(以降、Linuxの基礎的な知識が必要となる)。

 Mono 1.0.1が対応するOSは多い。例えば、Mono Projectのダウンロードページを見ると、Mono 1.0.1としてダウンロード可能なプラットフォームの種類として以下のものがリストされている。

  • Red Hat 9.0/x86
  • Fedora Core 1/x86
  • Fedora Core 2/x86
  • SUSE LINUX Enterprise Server 8 for x86
  • SUSE LINUX 9.0
  • SUSE LINUX 9.1
  • Windows 2000以上
  • Mac OS X

 このうち、「Windows 2000以上」と「Mac OS X」を除くすべてがLinuxとなる。また、上記に加えて、ソース・コードのダウンロードも可能となっていて、自分でMonoをmake(=コンパイル)したり必要な修正を加えたりできる技術力があれば、ほかのOS上でもMono 1.0.1を動作させられる可能性があるだろう。

 さて、この中のどれを使えばよいのだろうか。Mono ProjectのスポンサーがNovellであることから考えると、Novellが提供するSUSE LINUXを使うのが最も問題がなさそうに思える。しかし、筆者が個人的にSUSE Linux 9.1 PersonalとFedora Core 2を試してみたところ、Fedora Core 2の方がより少ない手間でインストールを完了できた(これはあくまで筆者の個人的な体験にすぎず、確定した結論ではないことをあらかじめお断りしておく)。また、ダウンロード・ページ上でも、SUSE LINUXよりもRed Hat系のRed HatやFedora Coreをリストの上の方に書いていることから、Fedora Core 2の方が(SUSE LINUXよりも)好ましいと判断して、ここではこれを使ってみる。

 Fedora Core 2自体のインストールに関しては、本筋と外れるため、ここでは特に説明を行わない。ただし、すでにWindowsがインストールされたPCに、Fedora Core 2や、SUSE LINUX 9.1など、Linux カーネル2.6を使用しているディストリビューションをインストールする場合、インストール後にWindowsが起動できなくなる問題が発生するケースがあることが判明している。また、そのほかにSUSE LINUX 9.1のインストールときに不可解な現象にも遭遇しているので、インストール前に必要なファイルをバックアップしておくとことをお勧めする。少なくとも、Windowsを空きパーティションに入れるときのような気軽な気持ちでは入れない方がよいだろう。

 Fedora Core 2のインストール時には、それに含まれるパッケージと呼ばれるソフトウェアの単位の中で、どのパッケージをインストールかを決めなければならない。どれが必須であるか明確ではなかったので、「インストールの種類」に「カスタム」を選び、パッケージ・グループの選択で「すべて」を選んで試した。なお、ASP.NETを試すためには、Webサーバへのアクセスが発生するために、ファイアウォールは停止させるか、必要なポート(80番、8080番)を開いておく必要がある。

 Fedora Core 2のインストールが完了したら、次にMono 1.0.1をインストールする。といっても、自動アップデート・システムによってインストールできるので、makeであるとか、./configureといった呪文は必要とされない(makeや./configureとは、ソース・ファイルで配布されているプログラムをインストールするためのLinuxのコマンドである)。

 作業を始めるに当たっては、rootでログインしておこう。

 そして、自動アップデート・システムの設定ファイル「/etc/yum.conf」に以下の3行を書き加える(yumはFodora Coreで採用されている自動アップデート・ツールで、yum.confはその設定ファイルである。ここでは、yumに対してMonoの自動アップデートの設定を行っている)。

[mono2.ximian.com]
name=mono2.ximian.com - Mono
baseurl=http://mono2.ximian.com/archive/1.0/fedora-2-i386/
Monoをインストールするために「/etc/yum.conf」に追加する設定

 ここからは、システム・ツールのGNOME端末を開いて、コマンドラインにより作業する。GNOME端末が開いたら、以下の行を入力し、リターン・キーを押す。

yum install mono-complete

 これで、Monoの基本的なソフトウェアがダウンロードされ、一通りインストールされる。Fedora Core 2にインストールされているほかのソフトウェア(Monoと依存関係にないソフトウェアも含めて)のアップデートも自動的に読み取られてインストールされるので、時間がかかるかもしれない。また、1回だけでは必要なソフトウェアのインストールが完了しないこともあるようで、1回だけでなく、2回実行しておくと安全だろう。

 もう1つ、ASP.NETを試すために必要なXSPというアプリケーションがある。これはMono Projectで開発されたC#で記述されているWebサーバである。Linux標準のWebサーバであるApache上でASP.NETを実行させるプラグインもあるが、それについては後で述べる。XSPの方が動かすためのハードルが格段に低いので、XSPもインストールしておこう。それには以下の行を入力し、リターン・キーを押す。

yum install xsp

 以上で基本的なインストールは完了した。インストールされていることを確認するために、「monoコマンド」を実行してみよう。以下のように表示されれば、Monoの中核となるプログラム実行ツールであるmonoコマンドが確実にインストールされていることが分かる。

[root@luna root]# mono
Usage is: mono [options] assembly

Runtime and JIT debugging:
  --compile METHOD       Just compile METHOD in assembly
  --ncompile N           Number of times to compile METHOD (default: 1)
  --regression           Runs the regression test contained in the assembly
  --print-vtable         Print the vtable of all used classes
  --trace[=EXPR]         Enable tracing, use --help-trace for details
  --compile-all          Compiles all the methods in the assembly
  --breakonex            Inserts a breakpoint on exceptions
  --break METHOD         Inserts a breakpoint at METHOD entry
  --debug                Enable debugging support
  --stats                Print statistics about the JIT operations

Development:
  --statfile FILE        Sets the stat file to FILE
  --aot                  Compiles the assembly to native code
  --profile[=profiler]   Runs in profiling mode with the specified profiler module
  --graph[=TYPE] METHOD  Draws a graph of the specified method:
                         cfg       Control Flow Graph (CFG)
                         dtree     Dominator Tree
                         code      CFG showing code
                         ssa       CFG showing code after SSA translation
                         optcode   CFG showing code after IR optimizations

Runtime:
  --config FILE          Loads FILE as the Mono config
  --verbose, -v          Increases the verbosity level
  --help, -h             Show usage information
  --version, -V          Show version information
  --optimize=OPT         Turns on a specific optimization:
                         peephole  Peephole postpass
                         branch    Branch optimizations
                         inline    Inline method calls
                         cfold     Constant folding
                         consprop  Constant propagation
                         copyprop  Copy propagation
                         deadce    Dead code elimination
                         linears   Linear scan global reg allocation
                         cmov      Conditional moves
                         shared    Emit per-domain code
                         sched     Instruction scheduling
                         intrins   Intrinsic method implementations
                         tailc     Tail recursion and tail calls
                         loop      Loop related optimizations
                         fcmov     Fast x86 FP compares
                         leaf      Leaf procedures optimizations
                         aot       Usage of Ahead Of Time compiled code
                         precomp   Precompile all methods before executing Main
                         abcrem    Array bound checks removal
[root@luna root]#
monoコマンドの実行によるMonoのインストール確認
Monoが正しくインストールされていれば、monoコマンドが実行できる。オプションなしでmonoコマンドを実行した場合には、このようなパラメータの説明が表示される。

 次に、まずはC#コンパイラとBASICコンパイラを動かしてみる。


 INDEX
  [特集]Linuxで動く.NET環境「Mono 1.0」の実力(前編)
     1.WindowsとLinuxとを結ぶ「Mono」
     2.Monoが生まれた背景
   3.Monoの機能とインストール
     4.C#コンパイラとVB.NETコンパイラ
  [特集]Linuxで動く.NET環境「Mono 1.0」の実力(後編)
     1.バイナリの互換性を検証する
     2.環境間の相違と対策/Monoと.NET Frameworkとの速度比較
     3.XSPを用いたASP.NET
     4.Apacheを用いたASP.NET
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間