PR

写真3●Visual Studio .NETの入力支援
使われる頻度が高い項目に,最初からカーソルが当たった状態で表示される。
写真4●Webサービスで利用できるメソッドの一覧
従来のVisual Studio .NETでは,WSDLファイルがそのまま表示されるだけだった。C#Builderでも同じ(左)。しかしVisual Studio .NET 2003(右)からは,WSDLファイルを解析して分かりやすく表示するようになった。Googleが提供するWebサービスのWSDLファイルを読み込んだ。
写真5●SharpDevelopのクラス作成ウィザード
インタフェースの候補が一覧で表示されている。実装したいものを選べば,メソッドのひな形が自動的に作られる。
写真6●インタフェースを実装しようとしたところ
実装すべきメソッドのひな形を作成するかどうかをツールが提案する。タブキーを押せば,コードが自動生成される。
写真7●ArrayListのデバッガ画面
配列の中に格納されているオブジェクトにどんな値が入っているかを一目で確認できる。

Visual Studioのちょっと賢い入力支援

 一方,Visual Studio .NETが一歩リードしているのがコーディング支援機能である。コーディング支援機能はプログラミングをする回数や量が多いほど,重要な意味を持つ。既に定義済みのクラスをツールが解析することで,プログラマがそれをいちいち調べたり,入力したりする手間を省く。Visual Studio .NETは(1)メソッドやプロパティの入力支援,(2)クラスの作成支援,という二点において,他のツールよりもちょっと便利になっている。

 (1)は,Visual Studio .NETでは「IntelliSense」,C#Builderでは「Code Insight」と呼ばれるもので,機能自体はすべてのツールが備えている。プログラマが記述中のクラスが持つプロパティやメソッドなどの項目を,ツールが一覧表示する機能である。プログラマがここから利用したいものを選ぶと,該当する項目のソースコードが自動的に生成される。.NET開発では,.NET Frameworkが用意する膨大なクラス・ライブラリを利用して開発することが必要である。すべてのクラスの項目を覚えることは不可能だし,いちいちヘルプで探すのも効率が悪い。入力支援機能はこの問題を解決してくれる。

 一見しただけでは分からないが,Visual Studio .NETの入力支援機能は他のツールよりも少し賢い。よく利用するメソッドやプロパティを最初に表示してくれるのだ。プログラマが項目を選択する手間が軽減される。

 入力支援機能では一般的に,利用したい項目を選ぶのにインクリメンタル・サーチの手法が使われる。プログラマが一つキーを打つたびに,該当するものが絞り込まれていく。しかし,すべてのメソッドやプロパティを使うことはまずない。それぞれのクラスごとに利用するプロパティやメソッドは限られている。例えばテキスト・ボックスのクラスなら,そこに表示される文字列(Text)のプロパティを指定し,参照したり変更したりすることがほとんどだ。

 Visual Studio .NET 2003では,プログラマがどの項目を選択したかの履歴情報を持っている。これを利用して,最も使われる頻度が高いプロパティやメソッドに最初からカーソルがセットされる(写真3[拡大表示])。キーをタイプする回数が減らせるし,項目の選択に手間を取られて思考が停止することもない。「あまりに作業が自然に進みすぎて,入力支援の機能が変わったことに逆に気づきにくいほど」(マイクロソフトデベロッパーマーケティング本部.NETマーケティング部フィールドテクニカルエバンジェリストの高橋忍氏)だという。

 ツールがメソッドの候補を出してくれるという意味では,Webサービスの利用時にもVisual Studio .NETの優位性が光る。既存のWebサービスを呼び出すプログラムを書く場合,利用したいWebサービスの機能が定義されたWSDLファイルを指定する必要がある。WSDLファイルはXML形式で記述されている。Visual Studio .NETの前のバージョンまではこのXMLデータがそのまま表示されるだけで,プログラマはそれを読み取ってどんなサービスが提供されているかを確認しなければならなかった。C#Builderでもこれは変わらない。しかしVisual Studio .NET 2003からは,利用できるサービスの一覧が分かりやすく表示されるようになった(写真4[拡大表示])。

ウィザードでクラスを作れるSharpDevelop

 一からクラスを作成する際は,(2)のクラス作成支援機能が役に立つ。空のクラスファイルを生成する機能ならば,すべてのツールが持っている。クラス名やコンストラクタなど,クラス定義に必須な項目を自動生成する。

 SharpDevelopとVisual Studio .NETは,さらに進んだ支援をしてくれる。ウィザードを用意しているのがSharpDevelopである。メニューから「ファイル」-「新規作成」-「ファイル」を選ぶと,作成できるファイルの種類が一覧表示される。ここで「新しいクラスのウィザード」を選択するとウィザードが起動し,作ろうとしているクラスがpublicかabstractかなどをラジオボタンで設定できる。インタフェースの一覧も表示されるため,そこから実装するものを選べば定義されているメソッドのひな型を作ってくれる(写真5[拡大表示])。

 Visual Studio .NETはこれとは少し違うアプローチを採る。ウィザードをプログラマに起動させるのではなく,コーディング作業の中で支援の提案をする。より自然な支援方法だ。

 例えば「ICollection」というインタフェースを実装するクラスを新たに作成するとする。クラス名と「:」に続けてインタフェース名を指定すると,ツール側からひな型の自動生成を提案する表示が出る(写真6[拡大表示])。ここでタブキーを押せば,実装しなければならないメソッドのひな型を含んだクラス定義が瞬時に作られる。

 親クラスから継承したメソッドをオーバーライドする場合にも同じような支援が働く。「override」というキーワードを打つと親クラスが持つメソッドの一覧が表示される。該当するものを選べば,ソースコードが自動的に挿入される。

デバッガの使い勝手はVisual Studioがリード

 コーディングが終わったら,次に必要になるのはデバッグ作業だ。三つのツールのうち,GUIのデバッガを備えているのはVisual Studio .NETとC#Builderである。SharpDevelopには,残念ながらデバッガはない。.NET Framework SDKのデバッガをコマンドラインで利用することになる。

 デバッガの基本的な使い勝手については,Visual Studio .NETとC#Builderで大きな違いは見られない。例えば変数の中に入っている値を確認したいときは,ローカル変数の値を一覧にして表示できる。該当するコードの上にカーソルを持っていけば,同じく変数の中身が見える。

 ただしVisual Studio .NET 2003には,派手ではないがプログラマにとっては嬉しい改良が加えられている。具体的には,配列やハッシュテーブルのようなCollectionクラスの中身を確認する際の使い勝手が改善されている。中に格納されているオブジェクトがどんな値を持っているか,一目で確認できるようになったのだ。Collectionクラスといえば,クラス・ライブラリの中でも利用頻度が高い。そのぶん,この改良のメリットは大きい。

 例えば“1”と“5”という値が入ったSystem.Int32クラスのオブジェクトを,順にArrayListという配列クラスのオブジェクトに格納する。これをデバッガで見てみると,“1”と“5”という値が一見して確認できる(写真7[拡大表示])。従来のVisual Studio .NETでは,ArrayListというオブジェクトの内部状態が表示されるだけだった。各配列要素の中身を確認しようとすれば,階層を深くたどっていく必要があった。C#Builderもこの状況は同じだ。

(八木 玲子)