コンテンツにスキップ

インテリセンス

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。180.196.59.124 (会話) による 2012年6月1日 (金) 01:08個人設定で未設定ならUTC)時点の版 (→‎概要: Visual Studio 2010のC++/CLIにおけるインテリセンスの説明を追加)であり、現在の版とは大きく異なる場合があります。

インテリセンス: Intellisense)はMicrosoft Visual Studio統合開発環境で使用されていることで有名なマイクロソフトによる自動補完システム。インテリセンスはプログラマが入力中のシンボル名を補完するだけでなく、メタデータベースのリフレクションを用いることにより、変数名、関数名、メソッド名のドキュメント化と曖昧性の解消に役立つ。

概要

他の自動補完システムと同様に、インテリセンスは関数の仕様、特に引数リストを確認する便利な方法である。数多くの名前を覚えてキーワードを入力する必要性を減らすことによりソフトウェアの開発を効率化する。コーディング中においてシンボル(つまり変数と関数)をインタラクティブにドキュメント化し動的にツールチップを表示できるため、外部のドキュメントを参照する頻度を減らせる。

インテリセンスは、クラス名や変数名および開発中のアプリケーションで定義または参照している構文を、オンメモリ上のデータベースに格納し、これを参照する。インテリセンスの古い実装では、言語に応じてピリオドなどのキャラクタをマーカーキャラクターとして認識して動作する。ユーザーがメンバ(変数や関数)を持つエンティティの直後にマーカーキャラクタをタイプすると、インテリセンスが推定される候補をポップアップウィンドウに表示する。ユーザーは Tab又は EnterまたはC++のセミコロンのような言語固有のマーカーをタイプすることにより候補を確定して自動的に補完させるか、また補完したくなければ名前の入力を継続できる。いずれにしてもインテリセンスはユーザーに十分な情報を提供してユーザーが望んでいる変数や関数を確定する。言語がオブジェクト指向をサポートしている場合はオーバーロードされた関数を選べる。インテリセンスは関数の概略をポップアップウィンドウに表示できる(この機能はソースコードに埋め込まれたドキュメントの量に依存する)。

Visual Studio以外のテキストエディタにも同様の機能が存在する。たとえばVimのバージョン7.0はインテリセンスに似たオムニ補完をサポートしている。多くのエディタやIDE(たとえばUltraEdit)ではctagsを利用して同様の機能を実現している。ボーランドサン・マイクロシステムズのIDEでは内部のリフレクションデータベースを使用して実装されている。

Visual Studio 2010ではC++/CLIのインテリセンスは対応してなかったが、Visual Studio 2012(旧名称:Visual Studio 11)で完全に対応した(Visual Studio 2008も対応している)。

歴史

インテリセンスが初めて登場したのは、1996年にマイクロソフトの主力製品として販売されたVisual Basic 5.0 Control Creation Edition(実質的に公的に入手可能なVisual Basic 5.0のプロトタイプ)の一機能としてである。元々はVisual BasicのIDEが新技術の主要な実験場であったが、(Visual Basicの直後に販売された)Visual Studio 97の製品リリースに合わせてインテリセンスはVisual FoxProVisual C++に直ちに移植された。インテリセンスはCOMのイントロスペクション[1]の機能を活用したものであったが、Visual C++の5.0や6.0(Visual Studioとしてはそれぞれ97と98)ではその機能が不完全であった。

一方、Visual Basic版のインテリセンスはVisual C++版よりも完成されており安定していた。97のリリース以降数多くのVC++の開発者に批判されていたこれらの欠点は.NET以後大幅に改善された。たとえば今では完全になったテンプレートのサポートは.NET以前のバージョンで最も求められていたものの一つであった。

.NETフレームワークが提供しているパワフルなイントロスペクションとコードのドキュメント化機能により、2001年にリリースされたVisual Studio.NETでインテリセンスは新時代に突入した。インテリセンスは現在Visual Studio上でC++C#J#Visual BasicXMLHTMLXSLTをサポートしている。Visual Studio 2005ではインテリセンスはユーザーがタイプした時点でデフォルトで有効になっており、マーカーキャラクタは不要である(この動作は無効にできる)。このIDEは、開発者の入力の状態に応じて、forwhileといった言語の基本的な構文をも選択肢に含むところまで状況を推測できる。

他にもFrontPageExpression Web(コードビューの部分)、Microsoft OfficeVBA のIDEといったマイクロソフトの製品にインテリセンスが搭載されている。SQL Server 2008 Management StudioではSQL構文の補完に使用できるようになる予定である。

これはVisual Studioで開発しているC++で記述されたアプリケーションであり、クラスFooにはいくつかのメンバ関数がある。

class Foo {
  public:
    void bar();
    void foo_bar(char c, int n);
};

たとえば開発者が次のようにこのクラスを参照すると、

Foo foo;
foo.

ユーザーがfooに続けてピリオドを入力すると、インテリセンスが自動的に利用可能なメンバ関数をすべて列挙する(この場合はbar()foo_bar())。ユーザーは矢印キーで関数を選択して補完できる。インテリセンスはソースコード上のコメントに記されたメンバ関数の概略を表示する。

引数の入力時は、さらにもう一つのポップアップウィンドウが開き引数のリストが表示される。ユーザーが変数名を入力するとさらに入力した変数の補完候補が現れる。インテリセンスは引数の表示を継続し、ユーザーが入力している引数を強調表示する。

ユーザーは状況にかかわらずCtrl+Spaceを押すことによりインテリセンスを強制的に起動できる。Visual Studioの場合これは開発中のアプリケーション上で利用できるすべてのグローバルなオブジェクトを表示する。

脚注

  1. ^ 訳注:introspectionに対応する訳語がないのでそのまま。リフレクション機能の一部。内省という意味ではない。

外部リンク