C#は米Microsoft社が.NETのために新たに開発した言語である。Javaを研究して出てきただけに,言語仕様のバランスなど評判は悪くない。しかしC#は,開発も実行もMicrosoftの製品を使うしかなかったため,一部のユーザーにしか受け入れられていない。ようやくここに来て,米Borland Software社が「C#Builder」を投入するなど,選択肢が出てきた。見た目も機能もVisual Studio .NETに似ているが,独自のコンポーネントを用意して特徴を出している。また,オープンソースの開発ツールや実行環境も,着実に進化を続けている。

表1●C#に与えられた選択肢
図1●.NET Framework SDKと開発ツールの関係
開発ツールはどれも,.NET Framework SDKのうえに環境を実装している。コンパイラや中間言語アセンブラなど各種ツールは共通。
写真1●C#の三つの開発ツール
部品の一覧が表示されている位置が異なる程度で,C#Builder(左)とVisual Studio .NET 2003(右上),SharpDevelop(右下)の見かけはとてもよく似ている。いずれもウインドウの配置は変更できる。
表2●ComponentOneの部品群の一部
C#Builderは標準で備えている。複雑な見栄えや機能を実現するためのコンポーネントが揃っている。
写真2●スペルチェックを実行するアプリケーション
ComponentOneの部品を利用して作成した。
リスト1●スペルチェックを実装したコード
チェックする文字列が格納されているコントロールを引数に指定して,コンポーネントのメソッドを呼び出すだけだ。

 C#はC++からポインタ操作などを排除し,「オブジェクト」を単位にプログラムを記述できるようにした言語である。文法や実行モデルなどJavaにとてもよく似ている。プログラマがメモリー管理を意識しなくてよいのもJavaと同じだ。

 だがJavaと大きく異なる点が一つあった。選択の余地がない点だ。プログラムの開発環境,開発したプログラムの実行環境ともに,米Microsoft社が提供する環境しかなかったのである。2000年の発表から3年が経過し,ようやくいくつかの選択肢が出てきた(表1[拡大表示])。

 「Visual Studio .NET」に対抗する開発環境として出てきたのが,米Borland Software社の「C#Builder for the Microsoft .NET Framework」。Microsoftが無償で公開する.NET Framework SDKをベースに作られている(図1[拡大表示])。

 開発環境としての完成度はやや見劣りするが,無償で使える開発ツールもある。IC#Codeがソースをオープン化して開発を進める「SharpDevelop」(http://icsharpcode.net/OpenSource/SD/)である。同じく.NET Framework SDKを利用している。まだベータ版だが,基本的なWindowsアプリケーションのコーディングになら問題なく使えるレベルにまでなってきた。

 これらを迎え撃つ格好のVisual Studio .NETは,きめ細かなプログラミング作業の支援で優位に立っている。他のツールにはないモバイル向けの開発環境を備えているのも強みだ。

 開発環境だけでなく,実行環境にも選択肢が出てきた。.NET Frameworkの実行環境をLinuxなど他の環境で動かそうとする「Mono」(http://www.go-mono.com/)や「DotGNU」(http://www.gnu.org/projects/dotgnu/)という試みだ。MonoではASP .NETで作ったアプリケーションを,そのままLinux上で動かせるところまできている。

Visual StudioにそっくりなUI

 まずは三つの開発環境を見ていこう。有償で高機能なのがVisual Studio .NET 2003とC#Builderだ。日本語版と英語版の違いはあるものの,いずれも2003年6月に登場した。20万円を超えるこの二つに対して,SharpDevelopは無償で利用できる。2003年6月末時点での最新バージョンは0.95だ。

 比較のポイントは大きく5点。ユーザー・インタフェース,開発手順,標準で用意されているコンポーネント,コーディング支援機能,デバッグ環境,である。

 ツールを利用する上でまず気になるのが,ユーザー・インタフェースである。それぞれのツールを起動してWindowsアプリケーションの開発画面を表示させると,まずその見た目に驚かされる。三つともとてもよく似ているからだ(写真1[拡大表示])。一見しただけでは違いが分からない。中央にGUI設計の土台となるフォームが表示され,左右にGUI部品の一覧とプロパティ情報が並んでいる。フォームとコードの表示は,C#BuilderとSharpDevelopでは画面下のタブで切り替える。Visual Studio .NETは上のタブという違いがある。

 似ているメリットがないわけではない。ツールが変わっても同じ操作性を引き継げるからだ。しかし裏を返せば,個々のツールに特徴がないということでもある。特に「Delphi」や「JBuilder」といった開発ツールを従来から発売しているBorlandが,それらに共通していた同社独特のユーザー・インタフェースを捨て,Visual Studio .NETに合わせたのは少々残念だ。「Visual Studio .NETを使っていたユーザーがすんなり移行できるように,敢えて外見を似せた」(ボーランド営業本部マーケティング部の藤井等部長)というが,そうなるとVisual Studio .NETからに乗り換えるメリットをユーザー・インタフェース以外で出さなければならない。後述するコンポーネントの違いがそれだけのメリットとなるか,疑問がある。同社のツールを使いやすいと感じていたユーザーにはむしろ退歩と映るかもしれない。

GUIアプリの開発手順もほとんど同じ

 アプリケーションの基本的な開発手順も同じだ。パレットに並んだGUI部品から任意のものを選び,フォームに貼り付ける。イベントを発生させる部品をダブルクリックするとイベント・ハンドラが生成され,画面もソースコードの編集画面に自動的に切り替わる。ここに具体的な処理を記述すればよい。

 こうした一連の手順は,GUIエディタを備える開発ツールではほぼ共通のものだ。2003年当初のSharpDevelopにはこの機能がなかった。フォームに貼り付けた部品をダブルクリックしても,イベント・ハンドラが自動生成されなかったのである。最新版ではこの機能が実装されているので,基本的なWindowsアプリケーションならば有償のものとほぼ同等に使えるツールになった。

 フォームの初期化をする処理が「InitializeComponent」というメソッドの中に記述されるのも共通だ。Visual Studio .NETとC#Builderでは,このメソッドが編集不可能なコードとしてデフォルトでは画面から隠されている。SharpDevelopでは見えているが,編集は同じく不可能だ。ここにコードを書き加えても,タブを切り替えるタイミングなどで自動的に消されてしまう。

C#Builderが用意する豊富な独自部品

 違いが見られるのは,あらかじめ用意してある部品の品揃えである。Visual Studio .NETとSharpDevelopの部品はほぼ共通だが,C#Builderは独自の部品を豊富に用意している。「Visual Studio .NETで利用できる部品はすべて,.NET Frameworkのクラス・ライブラリのクラスを部品化したもの」(マイクロソフトデベロッパーマーケティング本部.NETマーケティング部フィールドテクニカルエバンジェリストの西谷亮氏)。だからどのツールも同程度の部品は用意してある。

 C#Builderはこれに加え独自の部品を用意した。その一つが「Borland Data Provider(BDP)」だ。.NET Frameworkにおいて,データベース・アクセスを統一的に管理するための技術であるADO .NETのアーキテクチャに対応した部品を拡張したものである。

 BDPの強みは,対応しているデータベース製品が多いことだ。Visual Studio .NETが持つADO .NETの部品は,SQL Server,Oracle,OLE DB,ODBCの4種類。SQL ServerかOracleには,直接接続できるが,それ以外はOLE DBまたはODBC経由でアクセスする。これではパフォーマンスが出にくい。これに対してBDPは,「DB2」と「InterBase」もサポートしている。

 もう一つが「ComponentOne Studio」である。米ComponentOne社が提供する33種類のコンポーネントだ(表2[拡大表示])。C#Builderをデフォルトの設定でインストールすれば組み込まれる。2次元や3次元のグラフを表示したり,数値の入力や演算に便利な機能を持つコンポーネントが揃っている。スペルチェックのコンポーネントもある(写真2[拡大表示])。ユーザーがテキスト・ボックスに入力した文字の綴りが正しいかどうかも,このコンポーネントを利用すれば数行のプログラム記述でチェックできる(リスト1[拡大表示])。

(八木 玲子)