特集:全1回 .NET FrameworkをUNIXで動かす「Mono Project」dev .NET(3/9 ページ)

» 2004年06月24日 22時45分 公開
[大澤文孝,ITmedia]

Monoがサポートするクラスライブラリ

 .NET Frameworkアプリケーションは、.NET Frameworkのクラスライブラリを利用するため、CLRの出来不出来だけでなく、クラスライブラリがどの程度実装されているかも、アプリケーションの互換性を高める重要な要素となる。

 Monoにおけるクラスライブラリの移植状況は、「Class Status」のページにて公開されている。Class Statusページでは、どのようなクラスライブラリがどの程度の進捗状況で、どのようなメソッドの呼び出しに問題があるのかが、細かく示されている。

 Monoでは、Windowsに依存しないクラスライブラリについては、ほとんど90%以上実装されている。しかし、Windowsに依存するものなど、幾つかのクラスライブラリについては、完璧ではない。以下、Monoを使うにあたって注意しておきたいクラスライブラリを説明しておく。

  • 描画処理(System.Drawing)

 .NET Frameworkでは、描画処理をするのにSystem.Drawingを使う。System.Drawingでは、GDI+と呼ばれるWindowsのAPIを使って描画している。UNIX環境では、System.Drawingの機能を提供するため、独自に実装されたGDI+ライブラリ(libgdiplus.so)に加え、「Cairo」というベクトル描画ライブラリを利用する。

 そのため、System.Drawingの機能を使うには、Cairoがインストールされていなければならない。ちなみにSystem.Drawingには、印刷関係のAPIも含まれている。Class Statusのページによると、System.Drawingの実装度はまずまずのようだが、印刷関連やWindowsメタファイルの処理などに、幾つか問題点があるようだ。そのためMono 1.0では、System.Drawingは、Unstable扱いとなる予定だ。

  • Windows Form

 Windowsではフォーム(いわゆるウィンドウやダイアログボックスなど)を提供するために、WindowsのAPIを使う。それに対してMonoでは、Gtk+を用いる。Gtk+では、デスクトップに設定されたウィンドウの形状で表示するため、動作するOS依存の形状となる。


Monoの開発マネージャであるMiguel de Icaza氏は、ノベルに買収された米XimianのCTOであり、GNOMEを立ち上げた人物である。そのためかMonoは、GNOMEやGtk+を用いる傾向にある。

 マイクロソフトの.NET Frameworkでは、Windows Formのほとんどの機能がWin32 APIのラッパーとして機能している。そのため、他のOSでは、すべての動きをエミュレートするのが難しい側面もある。そこでMonoでは、Windowsエミュレータである「Wine」を使うことで、Windows Formを実装している。さまざまな理由から、Windows Formは未完成であり、どうしても実行したいのであれば、次のものを用意しなければならない。

  • libgdiplusライブラリ
  • Cairoライブラリ
  • Wine自身
  • WineLib(このコードは、MonoのCVSからのみ入手できる)

 Wineに絡む部分があるので、現状では、Windows Formの動作ははっきりしない。Mono 1.0では、Windows Formは、Unstable扱いとなる予定だ。

  • ADO.NET(System.Data)

 データベース処理をするには、ADO.NETを用いる。ADO.NETは、System.Data名前空間にある。MonoでのADO.NETの基本機能は、ほぼ実装されている。そのためADO.NETは、Mono 1.0では、stable扱いとなる見込みだ。

 ADO.NETでは基本的なデータベース機能のみを処理し、実際のデータベースとのやりとりは、「データベースサービスプロバイダ」と呼ばれる別のクラスに任せる仕様になっている。そのため、どのデータベースに対応するのかは、データベースサービスプロバイダ次第だ。実際のところ、Monoで提供されるデータベースサービスプロバイダは、データベースごとに完成度がまちまちだ。

 たとえば、実際に試したところ、Mac OS X版のSQL Serverのサービスプロバイダでは、SQL Serverに正しく接続できなかった。また、Oracleデータベースに関しても、Oracle ClientのAPIを利用するため、Oracle Client APIが提供されていないWindowsやLinux以外からの環境からは利用できないという問題もある。

 そのため、ADO.NETを利用する場合には、まずは、データベースサービスプロバイダが正しく動作するかどうかを小さなテストプログラムでチェックしたほうがよいだろう。なお、Monoではオリジナルの.NET Frameworkでは提供されていないMySQLやPostgreSQLのデータベースサービスプロバイダも提供されている。オープンソースで揃えたいならば、これらのデータベースを使うというのも悪くないだろう。

  • ASP.NET(System.Web)

 WebアプリケーションやWebサービスを実行するのに使うのが、ASP.NETだ。Windowsの場合、ASP.NETは、IISの機能を拡張するプログラム(ISAPIフィルタ)として実装されている。Monoでは、次の2つのASP.NETの実行環境を提供している。

  • XSP

 C#で書かれたASP.NETの実行環境だ。スタンドアロンアプリケーションとして動作する。

 XSPについての詳細は後述する。

  • mod_mono

 ApacheでASP.NETを実行するためのモジュールだ。Apacheと連携して、ASP.NETアプリケーションを実行する。

 ASP.NETは現時点で完成度が高く、Mono 1.0ではstable扱いとなる見込みだ。ただし、ASP.NETのモバイルコントロールについては、Unstable扱いとなる。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ