Bicep ばいせっぷ
簡単に言うとこんな感じ!
BicepはMicrosoft Azureのクラウド環境を「コードで設計図として書いて、自動で構築する」ための言語だよ!筋肉みたいな名前だけど、実はAzureのインフラ管理を”力強く・スッキリ”こなすために生まれたツールなんだ。難解なJSONを書かなくても、シンプルな文法でサーバーやネットワークをコードで作れちゃうってこと!
Bicepとは
Bicepは、Microsoft Azureのクラウドリソース(仮想マシン・ネットワーク・データベースなど)をコードで定義・自動構築するためのドメイン固有言語(DSL: Domain Specific Language)です。Infrastructure as Code(IaC) の考え方に基づき、「インフラの設計図をコードとして管理する」ことを可能にします。
従来、AzureのIaCはARM(Azure Resource Manager)テンプレートと呼ばれるJSON形式のファイルで行われていましたが、記述が冗長で難解でした。Bicepはそれを”人間が読み書きしやすい”シンプルな構文に置き換えたものです。書いたBicepコードは裏側でARMテンプレート(JSON)に自動変換されてAzureに適用されるため、既存のAzureの仕組みをそのまま活用できます。
2020年にMicrosoftが公開し、現在はAzure公式のIaC手段として積極的に推奨されています。AzureポータルやAzure CLIとも深く統合されており、CI/CDパイプラインへの組み込みも容易なため、システム構築の自動化・標準化を目指す現場で急速に普及しています。
Bicepの基本的な仕組み
Bicepで書いたコードは以下の流れでAzureに反映されます。
.bicep ファイル
(人間が書く)
↓ bicep build(コンパイル)
ARM テンプレート(JSON)
(自動生成)
↓ az deployment コマンド
Azure へデプロイ
(リソースが実際に作られる)
主な構成要素
| 要素 | 役割 | 記述例のイメージ |
|---|---|---|
resource | 作成するAzureリソースを定義 | 仮想マシン・ストレージなど |
param | 外部から渡せる変数(環境ごとに値を変えられる) | リージョン・サイズなど |
var | ファイル内で使い回す変数 | 名前の命名規則など |
output | デプロイ後に取り出したい値 | エンドポイントURLなど |
module | 他の.bicepファイルを部品として呼び出す | 共通テンプレートの再利用 |
Bicepコードの例(ストレージアカウント作成)
param location string = 'japaneast'
param storageAccountName string = 'mystorage${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
output storageEndpoint string = storageAccount.properties.primaryEndpoints.blob
同じ内容をARMテンプレート(JSON)で書くと3〜4倍の行数になります。Bicepのシンプルさが実感できます。
覚え方:「腕の筋肉=力強く・無駄なく」
名前の由来は文字通り「上腕二頭筋(Bicep)」。AzureのARMを”力強く動かす筋肉”という比喩です。「ARM(腕)を動かすBicep(筋肉)」と覚えると関係性がスッと入ります。
歴史と背景
- 2014年 — MicrosoftがARM(Azure Resource Manager)を導入。JSONテンプレートでインフラを定義できるようになる
- 2016年〜 — JSONテンプレートの複雑さが問題視され、開発者コミュニティから「もっとシンプルな記法を」という声が高まる
- 2020年 — MicrosoftがBicepをOSSとしてGitHubで公開。プレビュー版提供開始
- 2021年3月 — Bicep v0.3 がGA(一般提供)開始。Azure CLIに統合される
- 2021年〜 — Azure Portalのデプロイ画面でBicepエクスポートに対応。公式ドキュメントもBicep優先に切り替わる
- 2022年以降 — Visual Studio CodeのBicep拡張機能が強化され、補完・検証・可視化が充実。企業導入が本格化
- 現在 — MicrosoftはAzureのIaCとしてBicepを第一推奨。Terraformとの選択肢として並ぶ存在に
BicepとARMテンプレート・Terraformとの比較
AzureのIaC手段として代表的な3つを比較します。
| 比較項目 | Bicep | ARMテンプレート(JSON) | Terraform |
|---|---|---|---|
| 記法のシンプルさ | ◎ 読みやすい | △ 冗長なJSON | ○ HCL言語で読みやすい |
| Azure対応の速さ | ◎ 最新機能をすぐサポート | ◎ 同上(Bicepの変換先) | △ プロバイダ更新待ちがある |
| マルチクラウド対応 | ✗ Azureのみ | ✗ Azureのみ | ◎ AWS・GCPにも対応 |
| 学習コスト | 低〜中 | 高 | 中 |
| Microsoft公式サポート | ◎ 公式推奨 | ◎ 公式 | △ サードパーティ |
| 既存ARMテンプレートとの互換 | ◎ 相互変換可能 | — | △ 変換ツールが必要 |
BicepとTerraformの使い分け指針
- Azureだけを使う場合 → Bicepが有利(最新API対応が速く、Microsoftの公式サポートも厚い)
- AWS・GCPも含めてマルチクラウドを管理したい場合 → Terraformが向いている
- 既存のARMテンプレートがある場合 →
bicep decompileコマンドでBicepに変換できる
関連する規格・RFC
※ Bicepは特定のIETF RFCやISO規格には直接対応していないため、このセクションは省略します。
関連用語
- Infrastructure as Code — インフラをコードで定義・管理する考え方
- ARM テンプレート — AzureリソースをJSONで定義するMicrosoft公式テンプレート形式
- Terraform — HashiCorp製のマルチクラウド対応IaCツール
- Azure Resource Manager — Azureのリソースを統合管理するデプロイ・管理レイヤー
- CI/CD — コードの変更を自動でテスト・デプロイするパイプラインの仕組み
- DevOps — 開発と運用を連携させてシステム改善を高速化する考え方・文化
- クラウドコンピューティング — インターネット経由でITリソースを提供・利用するサービス形態
- Microsoft Azure — Microsoftが提供するクラウドプラットフォーム