🦐
【Bicep】デコレーターとコメントの違い
Bicepとは
Bicepとは、Azure専用のIaC(Infrastructure as Code)言語です。
ARMテンプレートよりもシンプルで読みやすく、インデントや構文もスッキリしています。Azureリソースをコードで管理するための標準的な手段として利用が広がっています。
デコレーターとは
デコレーターは、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