🦐

【Bicep】デコレーターとコメントの違い

に公開

Bicepとは

Bicepとは、Azure専用のIaC(Infrastructure as Code)言語です。
ARMテンプレートよりもシンプルで読みやすく、インデントや構文もスッキリしています。Azureリソースをコードで管理するための標準的な手段として利用が広がっています。
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/file

デコレーターとは

デコレーターは、Bicepの宣言に対して追加の情報や制約を与える仕組みです。
@ から始まり、param や resource の直前に書きます。
↓よく使われるデコレーター

デコレーター 役割 使用例
@description Azureポータルやツール上に説明文を表示する @description('リソースのリージョン')
@allowed パラメータの値を制限する(指定外の値だとエラー) @allowed(['Hot','Cool'])
@minLength 文字列の最小長を指定する @minLength(3)
@maxLength 文字列の最大長を指定する @maxLength(24)
@secure 機密情報を隠す(ログに出力されないようにする) @secure() param password string
@minValue 数値の最小値を指定する @minValue(1)
@maxValue 数値の最大値を指定する @maxValue(100)

@description('ストレージアカウント名 3文字~24文字、小文字数字のみ')
param name string

特徴

  • AzureポータルやVSCodeで説明文が表示される(@description)
  • 値の制限を加えられる(@allowed, @minLength, @maxLength)
  • セキュリティを強化できる(@secureで機密パラメータを隠す)
  • デプロイの挙動に直接影響する

コメントとは

コメントは、コードの動作に影響しない人間向けのメモです。
// または /* ... */ で記述できます。

// ストレージアカウント名を定義
param storageName string

特徴

  • デプロイ結果には影響しない
  • チームメンバーや将来の自分のための説明文
  • 書かなくてもコードは動くが、可読性のために重要

2つの違い

項目 デコレーター コメント
書き方 @description @allowed など ///* */
役割 BicepやAzureに追加の指示を与える 人間に向けて補足を残す
影響 デプロイの挙動や入力値の制約に影響する デプロイ結果には一切影響しない
主な用途 入力制御、説明文の表示、セキュリティ強化 処理の意図や注意点を説明するため

まとめ

  • コメント は「人間のための説明」
  • デコレーター は「Bicep/Azureへの指示」
  • @descriptionは説明文を表示するという点でコメントに似ているが、AzurePortalに表示されるといった点で、デプロイに影響しているデコレーターである

↓このBicepコードがデプロイ時にAMRに変換されたとき

@description('ストレージアカウント名 3文字~24文字、小文字数字のみ')
param name string

↓AMRに変換されてもdescriptionによる説明が記述されている

ヘッドウォータース

Discussion