.NET TIPS

VBで独自のコード・スニペットを登録するには?[VS 2005のみ、VB]

デジタルアドバンテージ 一色 政彦
2006/05/19

 Visual Studio 2005(以降、VS 2005)には、繰り返し利用するパターン化されたコードを簡単に挿入するための「コード・スニペット」という機能が搭載されている。このコード・スニペット機能に、よく使う独自のコードを登録したいという要望は少なくないだろう。そこで本稿では、独自のコード・スニペットを新たに追加登録する方法を紹介する。

 なお、コード・スニペットの基本的な利用方法については、「TIPS:コード・スニペットを素早く挿入するには?」に記述されているので、併せて参照していただきたい。ちなみに、コード・スニペットはVS 2005の全エディションのC#やVisual Basic(以降、VB)で利用できる機能である。

独自のコード・スニペットを登録・利用するためには?

 VS 2005では、1つのコード・スニペットは、(基本的に)「.snippet」という拡張子を持つ、1つのXMLファイルで管理される。従って、独自のコード・スニペットを作成するには、このXMLファイルを作成する必要がある。

 .snippetファイルはコード・スニペット用のスキーマ(=「コード スニペット スキーマ」)に基づいて作成しなければならないので、手動で作成する*1よりも、.snippetファイル作成用のツールで自動生成する方が便利だ。だが残念ながら、VS 2005では標準でそのようなツールが提供されていないため、サードパーティが提供するツールを使う必要がある。

 とはいっても現時点でVS 2005全体(=全言語共通)で使える決定打となるコード・スニペットの編集ツールはまだ存在しないようだ。現時点で筆者が最もお薦めできるのは、C#では「Snippy」、VBでは「Visual Basic Snippet Editor」である(なお、どちらのツールもC#とVBの両方のコード・スニペットを作成できるのだが、それぞれのツールには向いている言語/向いていない言語という特色があるため、ここではツールを言語ごとに分けた)。

 本稿ではこのうちVisual Basic Snippet Editor(以降、Snippet Editor)を使ってVBのコード・スニペットを作成する方法を紹介する。なおC#でコード・スニペットを作成する方法については「TIPS:C#で独自のコード・スニペットを登録するには?」で紹介している。

*1 手動でコード・スニペットを作成するには、VS 2005のIDEでXMLファイルの新規作成を行い(具体的にはメニュー・バーから[ファイル]−[新規作成]−[ファイル]をクリックし、表示される[新しいファイル]ダイアログで「XML ファイル」を作成する)、エディタに開かれたXMLファイルのコード上に「Snippet」という名前のコード・スニペットを挿入すればよい(コード・スニペットを挿入するには、[Ctrl]+[K]キーを押してすぐに続けて[X]キーを押すか、メニュー・バーから[編集]−[IntelliSense]−[スニペットの挿入]を選択すればよい)。

Snippet Editorを使ったコード・スニペットの作成

 VBでコード・スニペットを作成するには、GotDotNet(米国)のWorkspaces上で開発されているオープンソース・ツールである「Snippet Editor」がお薦めだ。Snippet Editorは、以下のサイトからダウンロードできる(Snippet EditorはMSDNからもダウンロード可能になっているので通常はこちらからダウンロードすればよい)。

 MSDNのサイトからツール(のインストーラ)をダウンロード後、(デフォルトの設定のままで)インストールを実行すると、「マイ ドキュメント」フォルダ内の「MSDN\Code Snippet Editor」フォルダにプログラムが配置される。ショートカットなどは作成されないようなので、必要な場合はここから自分で作成しなければならない。Snippet Editorの実体は「SnippetEditor.exe」なので、これをダブルクリックするとアプリケーションが起動する。

■独自のコード・スニペットを格納するフォルダの登録

 実際にコード・スニペットを作成する前に、独自のコード・スニペットを格納する場所(フォルダ)をSnippet Editorに登録しておこう。お勧めは次の場所だ(VBの場合)。

<マイ ドキュメント>\Visual Studio 2005\Code Snippets\Visual Basic\My Code Snippets

 というのも、ここに保存しておけば、ほかに何もしなくても、コード・スニペットがすぐに利用できるからだ(これは「My Code Snippets」フォルダがデフォルトでVS 2005のコード・スニペット・ディレクトリとして登録されているためだ)。

 これ以外のフォルダにコード・スニペットを保存する場合は、そのフォルダをコード・スニペット・ディレクトリとして登録する必要がある。その方法については、「TIPS:C#でタスク・ベースのコード・スニペットを利用するには?」の「タスク・ベースのコード・スニペットの利用設定と実際の使用」の項目を参考にしてほしい。

 次の画面はSnippet Editorを実際に起動して、上記で示したフォルダを登録しているところである。

独自のコード・スニペットを格納するフォルダの登録
Snippet Editorの編集可能なコード・スニペット・ディレクトリのツリー一覧の中に、独自のコード・スニペットを格納するフォルダを登録しているところ。Snippet Editor自体は、「<マイ ドキュメント>\MSDN\Code Snippet Editor」フォルダに配置されている「SnippetEditor.exe」をダブルクリックすることで起動できる。
  ツリー表示のルートにある「Visual Basic」フォルダを右クリックしてコンテキスト・メニューを表示し、そこから[Add Path]を選択する。これにより、[フォルダの参照]ダイアログが表示される。
  [フォルダの参照]ダイアログで「<マイ ドキュメント>\Visual Studio 2005\Code Snippets\Visual Basic\My Code Snippets」フォルダを選択して、[OK]ボタンをクリックする。これにより、Snippet Editorのツリー・コントロールの中に「My Code Snippets」フォルダが追加される。独自のコード・スニペットは、このフォルダの中に追加しておけば、後はVS 2005で何も設定することなく呼び出せるようになる。

■独自のコード・スニペットの作成

 以上の準備が完了したら、独自のコード・スニペットを作成しよう。次の画面は実際にそれを行っているところだ。Snippet Editorの操作方法については、この画面の説明内容を参考にしてほしい。

Snippet Editorによるコード・スニペットの作成(1)
この画面の例は、MessageBoxクラス(System.Windows.Forms名前空間)の静的なShowメソッド(2つの文字列をパラメータに取るバージョン)の呼び出しを挿入するコード・スニペットを作成しているところである。なおこの例ではVBコード・スニペットを作成しているが、もちろんXMLなどのコード・スニペットも作成できる(XMLのコード・スニペットはXMLファイル編集用のエディタ上で利用できる)。
  先ほど追加した「My Code Snippets」フォルダを右クリックしてコンテキスト・メニューを表示し、そこから[Add New Snippet]を選択する。これにより[Add New Snippet]ダイアログが表示されるので、コード・スニペットのファイル名(本稿の例では「MessageBoxShow」)を指定して[OK]ボタンをクリックする。以上の操作によって、「My Code Snippets」フォルダ内に新規のスニペット・ファイル(本稿の例では「MessageBoxShow.snippet」)が追加される。
  ツリー・コントロールで先ほど追加された新規スニペット・ファイルをダブルクリックして編集を開始する。
  コード・スニペットの実際のコードを記述する。変数(=ユーザーが書き換えなければならない部分。[TAB]キーにより移動する部分)は“$”で囲んで利用する。変数自体の定義は[Replacements]タブから行える(詳細後述)。
  タブをクリックして[Properties]ページを開く。このページで、コード・スニペットの基本情報を入力する。
  コード・スニペットのタイトルを指定する。
  コード・スニペットのショートカット名を入力する。ここで指定した名前が、「TIPS:コード・スニペットを素早く挿入するには?」で紹介したショートカット名として利用できる。
  コード・スニペットの内容に関する説明を記述する。
  コード・スニペットの作成者の名前を指定する。
  言語を「Visual Basic」「Visual C#」「Visual J#」「XML」の中から選択する。
  作成するコード・スニペットが使用可能なスコープを「Class declaration」「Member declaration」「Member body」「Unspecified」から選択する(詳細後述)。
  コード・スニペットに関する詳細情報を入手できるWebページへのURLを指定する。この値は省略可能だ。
Snippet Editorによるコード・スニペットの作成(2)
コード・スニペットの変数(=ユーザーが書き換えなければならない部分。[TAB]キーにより移動する部分)を編集しているところ。変数は[Replacements]タブで開かれるページで編集する。
  [+]ボタンをクリックして、コード・スニペット内で利用するリテラル(=文字列)やオブジェクトといった変数を追加する。[+]ボタンで追加、[×]ボタンで削除、[<]ボタンや[>]ボタンで編集できる。
  コードで使用する変数名を指定する。必須。この例では「text」というIDを指定しているが、実際のコード内容では「$text$」というように“$”で囲んで利用する。
  ユーザーがコード・スニペットを挿入すると、変数部分にデフォルトで入力される値。省略可能。
  変数がリテラル(Literal)かオブジェクト(Object)かを指定する(オブジェクト変数の場合、次のの指定が必須である)。
  変数となるオブジェクトの型を指定する。
  ユーザーがコード・スニペットを挿入すると、VS 2005によって(書き換えなければならない)変数部分は色付けされるが、その上にマウス・カーソルを乗せると表示されるツールチップのテキストを入力する。省略可能。
  ユーザーがコード・スニペットを挿入した後、VS 2005で変数部分がフォーカスを受け取ったときに実行される関数を指定する。省略可能。ここで使用できるコード・スニペットの関数については、「コード スニペットの関数」を参照されたい。
  ユーザーが変数部分を編集可能(Editable)かどうかを指定する。通常はチェックを入れて編集可能にすべきである。ここでチェックを外すケースとしては、上述のコード・スニペット関数を利用する場合が挙げられる。
Snippet Editorによるコード・スニペットの作成(3)
コード・スニペットで必要となるアセンブリへの参照設定を追加しているところ。参照は[References]タブで開かれるページで編集する。
  コード・スニペットをコンパイルするのに必要となるアセンブリへの参照を指定する。この例では「System.Windows.Forms.dll」を追加している。ここで指定したアセンブリへの参照が、コード・スニペットを挿入する際に自動的に追加される。
Snippet Editorによるコード・スニペットの作成(4)
コード・スニペットでインポートする必要がある名前空間を追加しているところ。インポートする名前空間は[Imports]タブで開かれるページから編集できる。
  コード・スニペットをコンパイルするのに必要となる名前空間のインポートを指定する。この例では「System.Windows.Forms」を追加している。ここで指定した名前空間のImports文が、コード・スニペットを挿入する際に自動的に追加される。
Snippet Editorによるコード・スニペットの作成(5)
作成したコード・スニペットをテストしてコンパイル可能かを確認し、最終的にファイルに保存しているところ。コード・スニペットのテストは[Test]タブで開かれるページから実行できる。
  [Test]ボタンをクリックすると、ここまでに作成したコード・スニペットをテストできる。
  ここにテストの実行結果が表示される。コンパイルに成功した場合は、「Compilation found 0 error(s)」と表示される。
  コード・スニペットが完成したら、これをクリックして、その内容をスニペット・ファイルに保存する。

 上記のスコープ(Scope)で指定可能な値の意味は、次の表のとおりである。

Scopeの値 説明
Class declaration コード・スニペットがクラス、モジュールもしくは名前空間の内部に挿入される必要があることを示す(実際の値は「type decl」)
Member declaration コード・スニペットがクラスもしくはモジュールの内部に挿入されなければならないことを示す(実際の値は「method decl」)
Member body コード・スニペットがメソッド内部に挿入される必要があることを示す(実際の値は「method body」)
Unspecified コード・スニペットのスコープを指定しないことを意味する
スコープ(Scope)に指定可能な値の意味

 実際にはスコープに指定可能な値はこれだけではないのだが、Snippet Editorではこれしか選択できない。これ以外のスコープとして指定可能な値については、次のサイトの「Code要素のKind属性」に関する記述をご参照いただきたい。

 VBのコード・スニペットでは、名前空間やアセンブリへの参照も自動的に挿入できる。このため、C#では必要だったSimpleTypeName関数を使った名前空間の挿入の設定などは不要だ(詳しくは「TIPS:C#で独自のコード・スニペットを登録するには?」の「コード・スニペット関数を利用した名前空間の自動省略」の項を参照)。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Visual Studio 2005 処理対象:IDE
関連TIPS:コード・スニペットを素早く挿入するには?
関連TIPS:C#でタスク・ベースのコード・スニペットを利用するには?
関連TIPS:C#で独自のコード・スニペットを登録するには?

この記事と関連性の高い別の.NET TIPS
C#で独自のコード・スニペットを登録するには?
C#でタスク・ベースのコード・スニペットを利用するには?
チーム内でコード・スニペットを共有するには?
コード・スニペットを素早く挿入するには?
[ASP.NET AJAX]JavaScriptからEditorコントロールを生成するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


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 記事ランキング

本日 月間