.NET TIPS C#で独自のコード・スニペットを登録するには?[VS 2005のみ、C#]デジタルアドバンテージ 一色 政彦2006/05/12 |
|
|
Visual Studio 2005(以後VS 2005)には、繰り返し利用するパターン化されたコードを簡単に挿入するための「コード・スニペット」という機能が搭載されている。このコード・スニペット機能に、よく使う独自のコードを登録したいという要望は少なくないだろう。そこで本稿では、独自のコード・スニペットを新たに追加登録する方法を紹介する。
なお、コード・スニペットの基本的な利用方法については、「TIPS:コード・スニペットを素早く挿入するには?」に記述されているので、併せて参照していただきたい。ちなみに、コード・スニペットはC#やVisual Basic(以降、VB)の各Express Edition以上のすべてのエディションで利用できる機能である。
独自のコード・スニペットを登録・利用するためには?
VS 2005では、1つのコード・スニペットは、「.snippet」という拡張子を持つ、1つのXMLファイルで管理される。従って、独自のコード・スニペットを作成するには、このXMLファイルを作成する必要がある。
.snippetファイルはコード・スニペット用のスキーマ(=「コード スニペット スキーマ」)に基づいて作成しなければならないので、手動で作成する*1よりも、.snippetファイル作成用のツールで自動生成する方が便利だ。だが残念ながら、VS 2005では標準でそのようなツールが提供されていないため、サードパーティが提供するツールを使う必要がある。
とはいっても現時点でVS 2005全体(=全言語共通)で使える決定打となるコード・スニペットの編集ツールはまだ存在しないようだ。現時点で筆者が最もお薦めできるのは、C#では「Snippy」、VBでは「Visual Basic Snippet Editor」である(※なお、どちらのツールもC#とVBの両方のコード・スニペットを作成できるのだが、それぞれのツールには向いている言語/向いていない言語という特色があるため、ここではツールを言語ごとに分けた)。
本稿ではこのうちSnippyを使ってC#のコード・スニペットを作成する方法を紹介する。なおVBでコード・スニペットを作成する方法については後日公開するTIPSであらためて紹介する。
*1 手動でコード・スニペットを作成するには、VS 2005のIDEでXMLファイルの新規作成を行い(具体的にはメニュー・バーから[ファイル]−[新規作成]−[ファイル]をクリックし、表示される[新しいファイル]ダイアログで「XML ファイル」を作成する)、エディタに開かれたXMLファイルのコード上に「Snippet」という名前のコード・スニペットを挿入すればよい(コード・スニペットを挿入するには、[Ctrl]+[K]キーを押してすぐに続けて[X]キーを押すか、メニュー・バーから[編集]−[IntelliSense]−[スニペットの挿入]を選択すればよい)。 |
Snippyを使ったコード・スニペットの作成
C#でコード・スニペットを作成するには、GotDotNet(米国)のWorkspaces上で開発されているオープンソース・ツールである「Snippy」というツールがお薦めだ。Snippyは、以下のサイトからダウンロードできる。
ダウンロード後、ツールをインストールし、[スタート]メニューから[PowerToys for Visual Studio 8]−[Snippy]−[Snippy]を選択すると起動する。次の画面はSnippyを実際に起動して、独自のコード・スニペットを作成しているところだ。Snippyの操作方法については、この画面の説明内容を参考にしてほしい。
Snippyによるコード・スニペットの作成 | |||||||||||||||||||||||||||||||||||||||||||||
この画面の例は、MessageBoxクラス(System.Windows.Forms名前空間)の静的なShowメソッド(※2つの文字列をパラメータに取るバージョン)の呼び出しを挿入するコード・スニペットを作成しているところである。なおこの例ではC#のコード・スニペットを作成しているが、もちろんVBやXMLのコード・スニペットを作成することもできる(XMLのコード・スニペットはXMLファイル編集用のエディタ上で利用できる)。 | |||||||||||||||||||||||||||||||||||||||||||||
|
この画面の手順に従ってコード・スニペットの内容を入力し終わったら、メニュー・バーから[File]−[Save]を選択してスニペット・ファイル(.snippetファイル。本稿では「MessageBoxShow.snippet」)として保存する。保存しようとすると[名前を付けて保存]ダイアログが表示されるので、そこで次に示す場所に保存するとよい(C#の場合)。
<マイ ドキュメント>\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets
ここに保存すれば、ほかに何もしなくても、コード・スニペットがすぐに利用できる(これは「My Code Snippets」フォルダがデフォルトでコード・スニペット・ディレクトリとして登録されているためだ)。
これ以外のフォルダにコード・スニペットを保存する場合、そのフォルダをコード・スニペット・ディレクトリとして登録する必要がある。その方法については、「TIPS:C#でタスク・ベースのコード・スニペットを利用するには?」の「タスク・ベースのコード・スニペットの利用設定と実際の使用」の項目を参考にしてほしい。
コード・スニペット関数を利用した名前空間の自動省略
独自のコード・スニペットを作成する際には、挿入するクラスの記述に対して名前空間を記述すべきかどうかという問題がある。つまり、例えばMessageBoxクラスはSystem.Windows.Forms名前空間なので、どこでも利用できるコード・スニペットにするには、「System.Windows.Forms.MessageBox」と名前空間を含めた長いクラス名を記述する必要があるが、これではあまりに記述が冗長になってしまう。
この名前空間名の問題を解決するには、コードの状況(=コンテキスト)に合わせてクラス名のみの「MessageBox」で挿入されたり、完全な名前の「System.Windows.Forms.MessageBox」で挿入されたりするようにしなければならない。それを実現するのが、コード・スニペット関数の
SimpleTypeName(<名前空間名を含めたクラス名>)関数
である。
SimpleTypeName関数は、パラメータに指定された<名前空間を含めたクラス名>を、コード・スニペットが挿入されるコンテキストに合わせて最も単純な形式に縮小するためのものだ。これにより、例えばusingディレクティブによって「System.Windows.Forms」名前空間が宣言されている場合は「MessageBox」のみが挿入され、宣言されていなければ「System.Windows.Forms.MessageBox」と長いクラス名が挿入されるわけである。
なお、コード・スニペット関数は変数経由で使用しなければならないが、この変数をユーザーが書き換える必要はないので、前掲の画面のEditableのチェック・ボックスは外した方がよい。
次の画面は実際にSimpleTypeName関数を使用してリテラル変数を設定しているところである。
SimpleTypeName関数を使用したリテラル変数の設定例 | ||||||||||||
コード・スニペット関数を利用することで、コンテキストに合わせて名前空間を省略できる。 | ||||||||||||
|
VBで独自のコード・スニペットを登録する方法については、「TIPS:VBで独自のコード・スニペットを登録するには?」で紹介している。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Visual Studio 2005 処理対象:IDE 関連TIPS:コード・スニペットを素早く挿入するには? 関連TIPS:C#でタスク・ベースのコード・スニペットを利用するには? 関連TIPS:VBで独自のコード・スニペットを登録するには? |
|
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|