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