写真8●Pocket PCのエミュレータ
.NET Compact Framework用のアプリケーションも,パソコン上で簡単に動作確認ができる。ただし起動には若干時間がかかる。
写真9●Mono Projectの環境でASP .NETを動作させたところ
テキスト・ボックスに入れた名前に「Hello,」を付けて下部に表示するアプリケーション。C#のコードが混在したASP .NETのファイル(.aspxファイル)をそのままLinux上に配置した。

Pocket PC向けアプリもVisual Studioで開発

 以上見てきたような基本機能だけでなく,Visual Studioには別の強みもある。「同じプログラミング・モデルで,さまざまなクライアント向けのアプリケーションが開発できること」(マイクロソフトデベロッパーマーケティング本部デベロッパー製品部の田中達彦マネージャー)である。具体的には,.NET Frameworkのモバイル版である.NET Compact Frameworkを搭載した。Visual Studio .NET上で,Pocket PCやWindows CE .NET向けのアプリケーションを開発できるようになったのである。開発手法は,通常のWindowsアプリケーションとほとんど同じだ。フォームに部品を貼り付け,コードを記述していく。

 現状では,2003年6月30日に発表された「Pocket PC 2003」に.NET Compact Frameworkが標準搭載されている。手元に機器がない場合は,Visual Studio .NETが備えるPocket PCのエミュレータで動作を確認することになる(写真8[拡大表示])。デバッグを実行するとPocket PCの画面が現れ,開発したアプリケーションをその場で動作させて試すことができる。

C#Builder単体では個性が薄い

 こうして見ると,オープンソースのSharpDevelopはともかく,有償であるC#Builderには個性があまり感じられない。これはBorland自身も認識しているようで,C#Builder単体よりも「他のツールと統合できることが強み」(Borland Softwareの副社長兼ゼネラル・マネジャのTony de la Lama氏)。具体的には,「Javaと.NETのシステムを共存させたい場合に便利」(ボーランドの藤井氏)であることを売りにしている。

 実際C#BuilderのEnterprise版には,要件定義やテストなど開発作業の各工程で使えるツールが同梱されている。同じツール群が,同社のJavaの開発ツールである「Borland Enterprise Studio 6 for Java」でも提供されている。このため,プログラミング・ツールであるJava用の「JBuilder」とC#用のC#Builderのように言語に依存する部分のツールを入れ替えれば,それ以外は両方で共通に使える。しかしC#Builder単体を見る限り,Javaとの親和性はそれほどでもない。

 ツール単体でJavaとの互換性を保つという意味では,むしろVisual Studio .NETに分がある。JavaのソースコードをC#へ変換する機能を持っているからだ。ただしこれも,実用的とは言い難い。単純なコンソール・プログラムなら大丈夫だが,GUIを使ったJavaのアプリケーションを変換させようとするとエラーが発生する。

 実際のシステム開発の現場では,Javaと.NETが混在する場合も多い。既存のJavaのソースコードをC#に移植して動かすことも考えられる。しかしC#の開発ツール単独では,このような機能はどちらの製品もまだ実現できていないようだ。

.NET FrameworkをUNIX環境でも実現

 一方実行環境に目を向けると,Mono Projectの完成度が上がってきている。このプロジェクトはLinuxなどのUNIXで.NET Frameworkの実行環境を再現しようとしているオープンソースのプロジェクトである。米Ximian社が2001年7月に開始した。

 元々.NET Frameworkは,Windows上でしか実装できないものではない。現状でMicrosoftが一般に公開しているのはWindows用の.NET Frameworkのみだが,他のプラットフォーム用に開発された.NET Frameworkがあれば,OSが違っても同じプログラムをコンパイルし直さずにそのまま動かせる。Javaのバーチャル・マシンと同じ発想である。

 Microsoftは,.NETの実行環境のサブセットであるCLI(Common Language Infrastructure)の仕様を,ECMA(欧州電子計算機工業会)に提出している。さらにこれをFreeBSD向けに実装したソースコードを,学術目的に限って公開している。

 CLIの仕様はオープンに公開されているものなので,実装しようと思えば誰でも試すことができる。実際にそれを進めているのが,Mono Projectなのである。このほか,「GNU Project」が進めている「DotGNU Portable .NET」もある。

 2003年6月時点での,Mono Projectの最新版のバージョンは0.25。正式リリースまではまだ道が遠そうだが,既にその動作を実際に確認することができる。コンソール・アプリケーションだけでなく,例えばASP .NETで作ったアプリケーションを,そのままLinux上で動かせる(写真9[拡大表示])。Mono ProjectはASP .NETを動作させるためのWebサーバー「XSP」も開発している。これをLinuxにインストールし,ASP .NETのコードを記述したファイルを適切なディレクトリに配置するだけでよい。

GUIアプリの実行は現状では難しい

 WindowsのGUIアプリケーションを作成する際に必要なクラス・ライブラリの実装も進んでいる。現在は,X Window SystemやUNIX上でWindowsのAPIを再現するオープンソースのライブラリ「Wine」を利用している。

 ただし現状では,これを正常に動作させるのは至難の業だ。Mono Projectが公開しているソースコードをダウンロードし,コンパイルするだけでは動作しない。別途Wineを導入する必要がある。そのWineもまだ開発途上であるため,動作は安定していない。さらに米OpenLink Software社が提供しているパッチを適用し,環境変数を設定しなければならないなど必要な作業が多い。そうまでしてもすんなりとは動いてくれない。ドキュメントもほとんど用意されていないので,試行錯誤を繰り返すしかない。

 WindowsのGUIを利用した簡単なプログラムを用意し,実際に試してみた。コンパイルはできたのだが,実行時にWineのライブラリが見つからないというエラーが出る。OpenLink SoftwareがWebサイトで公開しているWineの導入方法ではこのライブラリが作られなかったので,方法を変えて実行してみた。するとエラーは消えたが,今度は「Wineを初期化中」というメッセージが表示されたまま見た目上は処理が止まってしまう。その後もさまざまな方法を試してみたが,結局うまく動作しなかった。MonoでWindowsアプリケーションを簡単に実行できるようになるには,まだ時間がかかりそうだ。

(八木 玲子)