【Visual Studio 2017入門:第12回】コードスニペットって何?どうやって使うの?
前回はショートカットの有用性や使い方、新しいショートカットキーの設定方法について解説しました。
今回はコードスニペットとは一体何なのか、コードスニペットの使い方と設定方法について解説していきます。
コードスニペットとは?
コードスニペットとは、ソフト開発時に簡単に挿入できるようにあらかじめ作成されたコードを指します。
ですが「簡単に挿入できるようにあらかじめ作成されたコード」なら「コピペ」も当てはまりそうです。
「コピペ」と「コードスニペット」は一体何が違うのでしょうか。
この記事を書くまで、コードスニペットのことをコード「スペニ」ットと間違えて覚えていました。
こんな風に間違えるのは私だけかもしれませんが、みなさんは間違えないように気を付けてください。
コピペとコードスニペット
コピペは、過去に書いたコードと全く同じコードを書く場面でないと用いることが出来ません。
ソフト開発において、過去と全く同じコードを書く場面はほとんどないためコピペだけでは入力の手間を省くことは不可能です。
ですが、全く同じコードを書く場面はなくても似たようなコードを書く場面なら存在します。
例えば下のような例です。
過去書いたコード
Ball ballInstance = new Ball();
今書こうとしているコード
Block blockInstance = new Block();
変数名やクラス名は異なりますが、文全体を見るとよく似ていることがわかります。
このような場合に「文の構造だけ呼び出して変数名、クラス名は後で書き換えられる」ようにすれば、入力の手間を大きく省くことが出来ます。
これこそがまさしくコードスニペットと呼ばれる機能になります。
コードスニペットを使ってみる
では、実際にコードスニペットを使ってみましょう。
コードスニペットを呼び出すにはエディタ上の挿入したい場所でCtrl+Space
を押します。(Spaceはスペースキーを表します。)
続いてfor
と入力します。すると、プルダウンメニューにfor
が表示されEnterキーを押すとfor文のコードスニペットが挿入されます。
背景が白色の部分は、コードスニペット挿入後に値を変更することが出来ます。
Tabキーを押すことで、次の値を変更するところへ移動することが出来ます。
今回は、for文のコードスぺニットしか解説しませんでしたが他にもC++であればswitch文やif文、while文などのコードスぺニットが存在します。
いずれもCtrl+Spaceを押してswitch,if,whileと入力すれば上と同様にコードスニペットを呼び出すことが出来ます。
コードスニペットを追加する
前節では既存のコードスぺニットを使用しましたが、本節では自分でコードスニペットを作成してみましょう。
.snippetファイルを作成する
コードスニペットを作成するには、コードスニペットの内容を定義したファイルを作成する必要があります。(xml形式のファイル)
適当な場所にTestCode.snippet
を作成し、以下の内容を入力してください。(内容の説明は後述)
<CodeSnippets> <CodeSnippet Format = "1.0.0"> <Header> <Title>classNew</Title> <Shortcut>classNew</Shortcut> </Header> <Snippet> <declarations> <Literal> <ID>classType</ID> <default>classType</default> </Literal> <Literal> <ID>className</ID> <default>classType</default> </Literal> <Literal> <ID>constructor</ID> <default>argument</default> </Literal> </declarations> <Code Language="CPP"> $classType$* $className$ = new $classType$($constructor$); </Code> </Snippet> </CodeSnippet> </CodeSnippets>
ファイルをインポートする
VisualStudio上でCtrl+K,Ctrl+B
を押しコードスニペットマネージャーを開きます。
コードスぺニットマネージャーの言語の下にあるプルダウンメニューをクリックし、Visual C++
を選択します。
続いて、ウィンドウの下側にあるインポート
をクリックし、先ほど作成したTestCode.snippet
をクリックしてOKを押します。
これで作成したコードスニペットがVisualStudio上で使用できるようになりました。
エディタ上でclassNew
を入力して、コードスニペットを呼び出せるようになったはずです。
ファイルの解説
コードスニペットの定義ファイルはXMLと呼ばれる形式で書かれています。
1行目:CodeSnippets
先ほど作成したTestCode.snippet
を上から順番に見ていくことにします。
1行目には<CodeSnippets>
と書かれています。これは、19行目の</CodeSnippets>
と対になっています。<CodeSnippets>
~</CodeSnippets>
の中に後述する<CodeSnippet>
を入れることで一つのファイルで複数のコードスニペットを定義することが出来ます。
<CodeSnippets> <!-- この中に複数の<codeSnippet>を入れて複数のコードスニペットを定義できる--> <CodeSnippets>……</CodeSnippets> <CodeSnippets>……</CodeSnippets> </CodeSnippets>
2行目:CodeSnippet
<CodeSnippet>
~</CodeSnippet>
で一つのコードスニペットを定義しています。
Format = "1.0.0"
という部分はバージョンを表すようですが、具体的なバージョン番号のつけ方は公式ドキュメントに記載がなかったため不明です。
3行目:Header
<Header>
~</Header>
でコードスニペットのタイトルとショートカット文字列(Ctrl+Space
を押したときに表示される文字列。検索の際用いる)を設定しています。5行目の<Title>
でコードスニペットのタイトルを6行目の<Shortcut>
でショートカット文字列をそれぞれ設定しています。
25行目:コードスニペットの定義
少し飛ばして先に<Code>
の解説から行います。
<Code>
~</Code>
で挿入する文字列の定義を行います。
基本ここで入力した文字列がコードスニペットを呼び出したときに挿入されることになります。
<Code>
のLanguageは今定義しようとしているコードスニペットがどの言語で呼び出されるかを指定するものです。
今回指定しているCPP
はこのコードスニペットがC++でしか呼び出されないことを意味します。
Languageで指定した言語以外の言語ではCtrl+Space
を押してショートカット文字列を入力してもコードスニペットを呼び出すことが出来なくなります。
置換文字列(コードスニペットを呼び出したときに書き換えられる文字列)を挿入したい場合は$
で特定の文字列を囲みます。この特定の文字列は<Code>
の上にある<Literal>
で定義します。
10行目:Literal
一つの<Literal>
で一つの置換文字列を定義します。
<ID>
で置換文字列を設定し、<Default>
で置換文字列に最初から入っている値を設定します。
<Literal>
は<declartions>
~</declartions>
で囲む必要があります。
コードスニペットの公式ドキュメント
コードスニペットについてもっと詳しく知りたい方は以下のリンクから、VisualStudio2017のコード スニペット スキーマ リファレンスをご覧ください。
各要素の意味について詳しく載っています。
次回予告
次回は、VisualStudioの公式ドキュメントの読み方・探し方について解説していきます。
次回で最終回となる予定です。