コード スニペット: その内容と追加方法

コード スニペットは、コード ファイルに追加できる再利用可能なコードの小さなブロックです。 スニペットには、大抵、よく使用される try-finallyif-else などのコード ブロックが含まれています。 ただし、それらを使用してクラスまたはメソッド全体を追加することもできます。 スニペットには、プレースホルダーとして機能する置換パラメーターを含めることもできます。 スニペットは、数例として C#、C++、Visual Basic など、さまざまなプログラミング言語で使用することができます。

使用可能なスニペットを見つける

独自のスニペットを作成する前に、プログラム言語に使用できるスニペットをチェックし、メニュー バーから [ツール]>[コード スニペット マネージャー] を選択し (または、Ctrl+KCtrl+B キーを押して)、ダイアログ ボックスの上部にあるドロップダウン メニューから目的のプログラム言語を選択できます。

Screenshot of the Code Snippets Manager dialog box.

コード ファイルにスニペットを追加する

Visual Studio では、コード スニペットをコード ファイルに追加する方法がいくつかあります。

  • メニュー バーで、[編集]>[IntelliSense]>[スニペットの挿入] の順に選択します

  • コード エディターの右クリック メニューまたはコンテキスト メニューから、[スニペット]>[スニペットの挿入] を選択します

  • キーボードで Ctrl+K キー、Ctrl+X キーを押します

拡張スニペットとブロックの挿入用スニペット

ご利用のコードに追加できるコード スニペットとしては、2 種類あります。

スニペットの種類 用途
展開 指定した挿入ポイントに追加され、スニペットのショートカットを置き換える場合があります
ブロックの挿入 選択したコード ブロックの周りに追加されます (C# と C++ でのみ使用できます)

C# の拡張スニペットの次の例では、ショートカット tryf によって try-finally ブロックが追加されています。

try
{

}
finally
{

}

この拡張スニペットを追加する方法を次に示します。

  1. コード ウィンドウで、スニペットを追加する場所にカーソルを置きます。

  2. 右クリックコンテキスト メニューから [スニペットの挿入] を選択します。

    または、[編集] メニューの [IntelliSense] を選択し、[ブロックの挿入] コマンドを選択します。

  3. [Visual C#] を選択してから、「tryf」と入力し、Tab キーを押します (または、「tryf」と入力して Tab キーを 2 回押します)。

C++ のブロックの挿入用スニペットの例では、ショートカット if は挿入スニペットまたはブロックの挿入用スニペットとして使用できます。 コード行 (例: return FALSE;) を選択した場合は、[ブロックの挿入]>[if] を選択すると、行の周りにスニペットが展開されます。

if (true)
{
    return FALSE;
}

ヒント

Visual Studio 2019 では、Ctrl+KCtrl+S キーボード ショートカットを使用して、ブロックの挿入コード スニペットを挿入できます。

スニペットの置換パラメーター

スニペットには、置換パラメーターを含めることができます。置換パラメーターとは、作成中のコードに応じた置換を必要とするプレースホルダーです。 前の例で、true は置換パラメーターであり、適切な条件への置換が必要です。 置換を行うと、スニペット内の同じ置換パラメーターのすべてのインスタンスでもこれが繰り返されます。

たとえば、Visual Basic には、プロパティを挿入するコード スニペットがあります。

スニペットを挿入するには:

  1. Visual Basic コード ファイルの右クリック コンテキスト メニューから [スニペット]>[スニペットの挿入] の順に選択してください。
  2. [コード パターン]>[プロパティ、プロシージャ、イベント]>[プロパティの定義] の順に選択してください。

Screenshot of the code snippet menu for Define a Property.

次のコードが挿入されます。

Private newPropertyValue As String
Public Property NewProperty() As String
    Get
        Return newPropertyValue
    End Get
    Set(ByVal value As String)
        newPropertyValue = value
    End Set
End Property

newPropertyValuem_property に変更すると、newPropertyValue のすべてのインスタンスが変更されます。 プロパティ宣言の StringInt に変更すると、set メソッド内の値も Int に変更されます。

コード スニペットを使用するためのベスト プラクティス

コード スニペットのコードは、最も基本的な処理方法のみを示しています。 ほとんどのアプリケーションでは、そのアプリケーションに合わせてコードを変更する必要があります。

例外処理

通常、コード スニペットの Try…Catch ブロックは、すべての例外をキャッチして再スローします。 これは、プロジェクトにより適していない場合があります。 例外ごとに、対応方法はいくつかあります。 たとえば、「方法: try/catch を使用して例外を処理する (C#)」や「Try...Catch...Finally ステートメント (Visual Basic)」を参照してください。

ファイルの場所

ファイルの位置をアプリケーションに採用する場合、次の点を考慮する必要があります。

  • アクセス可能な場所を見つけます。 ユーザーはコンピューターの Program Files フォルダーにアクセスできない可能性があるので、アプリケーションのファイルと共にファイルを保存してもうまくいかないことがあります。

  • セキュリティで保護された場所を見つけます。 ルート フォルダー (C:\) にファイルを保存するのは安全ではありません。 アプリケーション データの場合は、Application Data フォルダーをお勧めします。 個々のユーザー データの場合は、アプリケーションで Documents フォルダーに各ユーザーのファイルを作成できます。

  • 有効なファイル名を使用します。 OpenFileDialog コントロールと SaveFileDialog コントロールを利用し、無効なファイル名の可能性を減らすことができます。 ユーザーがファイルを選択してから、コードがファイルを操作するまでの時間に注意してください。その間にファイルが削除されることがあります。 また、ユーザーはファイルに書き込みアクセス許可を持っていない可能性があります。

セキュリティ

スニペットのセキュリティは、ソース コードで使用する位置と、コード内でどのように変更するかによって変わります。 次の一覧は、考慮する必要がある点の一部です。

  • ファイルおよびデータベースのアクセス

  • コード アクセス セキュリティ

  • リソース (イベント ログ、レジストリなど) の保護

  • シークレットの保存

  • 入力の検証

  • データをスクリプティング テクノロジに渡す

詳細については、「Securing Applications」 (アプリケーションのセキュリティ保護) を参照してください。

ダウンロードしたコード スニペット

Visual Studio でインストールされるコード スニペット自体は、セキュリティ ハザードではありませんが、 アプリケーションのセキュリティ リスクになる可能性があります。 インターネットからダウンロードしたスニペットは、他のダウンロードしたコンテンツと同様に、十分に注意して扱ってください。

  • 信頼しているサイトからのみスニペットをダウンロードし、最新のウイルス対策ソフトウェアを使用します。

  • ダウンロードしたすべてのスニペット ファイルはメモ帳または Visual Studio の XML エディターで開き、よく確認してからインストールします。 次の問題がないか確認します。

    • スニペット コードを実行した場合にシステムが破損する可能性があります。 ソース コードをよく読んでから実行してください。

    • スニペット ファイルのヘルプ URL ブロックには、悪意のあるスクリプト ファイルを実行する URL や、不快感を与える Web サイトを表示する URL が含まれている可能性があります。

    • スニペットには、プロジェクトに自動的に追加され、任意の場所からシステムに読み込まれる参照が含まれている可能性があります。 このような参照は、スニペットをダウンロードしたコンピューターにダウンロードされている可能性があります。 また、スニペットから、悪意のあるコードを実行する参照内のメソッドを呼び出す可能性があります。 このような攻撃から保護するには、スニペット ファイルのインポート ブロックと参照ブロックを確認します。