特集

より洗練されたVisual Studio .NET 2003の新機能を探る

株式会社ピーデー
川俣 晶
2003/06/03
Page1 Page2 Page3 Page4

より便利になったIntelliSense機能

 VS.NET 2002を使っていて何がうれしいかといえば、IntelliSense(インテリセンス)である。これは、そのコンテキストに書き込める内容を自動的にリストアップしてくれるものだ。例えば以下の画面は、ArrayListクラスのインスタンス「a」の後でピリオドを入力した状態である。この場合には、ここに書き込めるメソッドやプロパティのリストがポップアップ表示される。このリストからマウスやカーソル・キーで選んでもよいし、直接書いてしまった方が早ければ、そのままキーワードをタイピングしてもよい。

コーディング時に非常に役立つIntelliSense機能
コードの入力途中に、そのコンテキストで記述可能なメソッドやプロパティがポップアップ表示される。表示された項目をマウスやカーソル・キーで選択すれば、その項目が入力される。

■IntelliSenseの学習機能

 しかし、IntelliSenseにも1つの問題があった。リストはアルファベット順に表示されるだけで、使用頻度とは無関係なのである。例えば上記の画面で、よく使うCountプロパティを選ぼうとすると下向きカーソル・キーを何回も押さねばならない。綴りの先頭を打てば、それに合致するキーワードが選択されるので、「c」と打てば一気に「Capacty」まで選択位置が移動するのだが、滅多に使わないCapactyプロパティに飛んでくれてもあまりうれしくはない。「cou」と3文字打てば「Count」まで移動するが、3文字も打つなら、そのまま一気にフルスペルを打っても大差なさそうである。

 この問題を、VS.NET 2003では、最後に使われた位置を記憶するという手段で解決した。1度、Countプロパティを選択した後で、再度IntelliSenseを呼び出すと、Countにフォーカスがある状態で開いてくれる。

以前使用した項目が自動選択されるようになったIntelliSense
VS.NET 2002では常にリストボックス内の最初の項目にフォーカスがあったが、VS.NET 2003では以前使用した項目にフォーカスがある状態でリストボックスが表示されるように改善された。

 個人的には、この機能はなかなか便利に使えている。たとえば、多くのライター系クラスにあるWriteLineメソッドのようなものを選択する時に便利である。これらのクラスはたいていWriteメソッドとWriteLineメソッドを持っているので、 IntelliSenseを使用する際、「w」を1文字タイプすると「Write」まで飛んでくれる。しかし、さらに「WriteLine」を選択させるには、「WriteL」と“L”まで打つか、あるいは、カーソル・キーの「下」を打たねばならなかった。連続する大量のWriteLineメソッドを入力する際には、この手間がけっこう邪魔に感じられたのだが、VS.NET 2003のIntelliSenseではそれが解消された。

■インターフェイス実装の支援

 特定パターンのコードを必ず記述する必要がある状況で、そのパターンの枠組みを作ってくれる機能が強化されている。まず、インターフェイス実装の支援を見てみよう。インターフェイスを実装する場合には、必ず、インターフェイスに属するメソッドなどを実装しなければならない。それを支援してくれる機能が用意されたのである。

 例えば、SampleクラスにIDisposableインターフェイスを実装しようと、ソース・コード中に「class Sample : IDisposable」と書き込むとする。すると、「e」を打った瞬間に以下のようなツールチップが表示されてTabキーを押すことを促す。もちろん押さなくても問題はない。

インターフェイス実装の支援機能
インターフェイスを実装するクラスの宣言部分だけを入力すれば、後はTabキーを押すだけで、そのクラスの内容を記述するのに最低限必要な枠組みが自動的に作成される。

 ここでTabキーを押すと、以下のようなコードが自動的に作成される。

class Sample : IDisposable
{
  #region IDisposable メンバー

  public void Dispose()
  {
    // TODO:  Sample.Dispose 実装を追加します。
  }

  #endregion

}

 あとは「TODO」と書かれたコメントを必要な内容に書き換えればよい。もし、インターフェイスに複数のメソッドがあれば、それらのすべてのメソッドに対応するコードが生成される。

 このような高度な機能が実現されるのは、VS.NET 2003の開発環境が、ソース・コードを動的にコンパイルして中身を理解しながら動作しているためである。その点で、ソース・コードを解釈せず、単なる文字列としてしか扱わないテキスト・エディタとは異なる使い勝手が実現されている。手になじんだテキスト・エディタと、このような高度な支援機能を持った統合開発環境のどちらがよいか選択を悩むところである。しかし、1度このような統合開発環境に慣れてしまうと、もうテキスト・エディタに戻れない魔力のようなものが感じられる。

■メソッドなどのオーバーライドの支援

 VS.NET 2003では、メソッドをオーバーライドする場合にも強力な支援機能がプログラマーを手助けするようになった。例えば、クラスの中で、「public override 」と最後の空白を打った瞬間に以下のようなリストが表示される。

オーバーライドの支援機能
「override 」と入力した時点で、そのクラスでオーバーライドにより記述可能なメソッドの一覧が表示される。ここでオーバーライドするメソッドを選択すれば、そのメソッドに必要な枠組みが自動作成される。

 ここでは、オーバーライド可能なメソッドがリストされている。オーバーライドである以上は、好き勝手な名前や引数は指定できないので、開発環境が自動的に書き込んでくれる内容で問題ないわけである。この場合、Equalsメソッドを選択すると、以下のようなソース・コードを自動的に生成してくれる。

public override bool Equals(object obj)
{
  return base.Equals (obj);
}

 あとはメソッドの中身を、必要とされる内容に書き換えるだけである。

■デリゲートやイベントを使用したコードの記述支援

 デリゲートやイベントを使用したコードにも記述支援が行われる。例えば、フォームのクリック・イベントに独自のイベント・ハンドラを付けたいとしよう。そう思って、フォームを定義しているクラス内のメソッドの中で、イベント・ハンドラを登録すべく「Click +=」と入力したとする。最後の「=」を入力した瞬間に以下のようなツールチップが表示される。

イベント・ハンドラ登録時の記述支援(1)
「Click +=」と入力した時点で、イベント登録時におきまりのコードが入力候補として提示される。

 ここでは、こういう内容を挿入できる、という提案が表示される。この記述は定型なので、ほとんどの場合、提案された内容で問題ないだろう。そこでTabキーを押すと、さらに次の提案が表示される。

イベント・ハンドラ登録時の記述支援(2)
「Click +=」の入力とTabキー2回だけで、イベント・ハンドラ登録のためのコードと、イベント・ハンドラとなるメソッドの枠組みがすべて自動作成される。

 イベント・ハンドラとなるメソッドまで作ってくれるというのである。そこでTabキーで、提案を受け入れると、コードは以下のようになる。

private void Form1_Load(object sender, System.EventArgs e)
{
  Click +=new EventHandler(Form1_Click);
}

private void Form1_Click(object sender, EventArgs e)
{

}

 Form1_Clickメソッドは、完全に無から自動的に生成されたものである。中身は空なので、自由に必要なコードを書き込むことができる。

 ここに至るまでプログラマーが入力したものは、「Click +=」と、Tabキー2回だけである。


 INDEX
  [特集]より洗練されたVisual Studio .NET 2003の新機能を探る
    1.Visual Studio .NET 2003の概要
  2.より便利になったIntelliSense機能
    3.デバッグ/ビルドに関する新機能
    4.VB.NETとC#の追加機能・仕様変更
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間