Bicep は Azure Resource Manager (ARM) テンプレートの後継として Microsoft が開発した宣言的 IaC DSL です。 2021 年 GA で、Microsoft Azure 公式の推奨 IaC ツールとして急速に普及。 本記事では、Bicep の基本構文・モジュール化・What-If デプロイ・CI/CD 統合・ARM からの移行手順を網羅的に整理します。
Bicep の主な利点:
2026 年現在の Azure 新規プロジェクトでは Bicep がデファクトスタンダードで、ARM JSON は新規利用なし・既存保守用途のみです。
Bicep は宣言的構文で、主要要素は以下の通り。
param storageAccountName string
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
allowBlobPublicAccess: false
minimumTlsVersion: 'TLS1_2'
}
}
output storageId string = storage.id
output storageEndpoint string = storage.properties.primaryEndpoints.blobBicep は型システムを持ち、明示的に指定します。
type myType = { name: string, age: int }大規模 IaC は必ずモジュール化します。
infra/ ├── main.bicep # エントリポイント ├── main.parameters.json # 環境別パラメータ ├── modules/ │ ├── network.bicep # VNet / NSG / Subnet │ ├── storage.bicep # Storage Account / Container │ ├── compute.bicep # VM / App Service / AKS │ └── identity.bicep # Managed Identity / Key Vault └── README.md
module network 'modules/network.bicep' = {
name: 'networkDeploy'
params: {
vnetName: vnetName
addressPrefix: '10.0.0.0/16'
location: location
}
}
module compute 'modules/compute.bicep' = {
name: 'computeDeploy'
params: {
vmName: vmName
subnetId: network.outputs.appSubnetId
}
dependsOn: [
network
]
}param environment string
resource backup 'Microsoft.RecoveryServices/vaults@2023-01-01' = if (environment == 'prod') {
name: 'rsv-prod'
location: location
sku: { name: 'Standard' }
}param storageAccountNames array = [
'stgapp001'
'stgapp002'
'stgapp003'
]
resource storageAccounts 'Microsoft.Storage/storageAccounts@2023-01-01' = [for name in storageAccountNames: {
name: name
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
}]What-If デプロイは、Bicep / ARM テンプレートを実際にデプロイする前に『何が変更されるか』を予測表示する機能。本番デプロイ前の必須ステップです。
az deployment group what-if \ --resource-group myRG \ --template-file main.bicep \ --parameters main.parameters.json
CI/CD パイプラインに What-If を組み込み、Pull Request のレビューフェーズで自動実行する設計が現代的なベストプラクティスです。
| 項目 | Bicep | Terraform |
|---|---|---|
| 開発元 | Microsoft | HashiCorp |
| 対応クラウド | Azure 専用 | マルチクラウド (Azure / AWS / GCP) |
| 言語 | Bicep DSL | HCL (HashiCorp Configuration Language) |
| State 管理 | 不要 (ARM が自動) | 必要 (Storage Account / Terraform Cloud) |
| 最新 Azure 機能 | 即時サポート | 遅れることあり |
| 料金 | 無料 | OSS 無料 / Terraform Cloud は有料 |
| 判断 | Azure 専用・最新機能優先 | マルチクラウド・既存資産 |
name: Deploy Bicep
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: What-If
uses: azure/CLI@v2
with:
inlineScript: |
az deployment group what-if \
--resource-group myRG \
--template-file infra/main.bicep
- name: Deploy
uses: azure/arm-deploy@v2
with:
resourceGroupName: myRG
template: infra/main.bicep
parameters: infra/main.parameters.json標準パターンの段階構成: Lint → Build → What-If → Manual Approval (Production) → Deploy。詳細は Azure Pipelines YAML 完全ガイド を参照。
既存 ARM JSON → Bicep への自動変換ツール:
az bicep decompile --file template.json
これで ARM JSON が Bicep ファイルに自動変換されます。ただし完全変換ではなく、手動調整が必要なケース:
現実的な移行戦略: 新規 = Bicep、既存 = 必要に応じて Bicep 化、というハイブリッドアプローチが推奨。 Microsoft 自身も既存 ARM テンプレートの利用継続を許容しており、無理な一括移行は不要です。
modules/ ディレクトリ)@secure() デコレーター)Bicep とは何ですか?
Bicep は Azure Resource Manager (ARM) テンプレートの後継として Microsoft が開発した宣言的 IaC (Infrastructure as Code) DSL (Domain Specific Language)。2021 年 GA で、ARM JSON テンプレートを Bicep にトランスパイル (Bicep → ARM JSON 自動変換) する仕組み。ARM JSON より大幅に簡潔・可読性が高い構文で、IntelliSense・型チェック・モジュール化対応。Microsoft Azure 公式の推奨 IaC ツールで、Terraform より Azure 専用機能 (Preview 機能・最新 API) のサポートが早い。2026 年現在の Azure 新規プロジェクトでは Bicep がデファクトスタンダードで、ARM JSON は新規利用なし・既存保守用途のみ。
Bicep の基本構文は?
Bicep は宣言的構文で、主要要素: 1) param (パラメータ宣言・型・デフォルト値・許容値)、2) var (変数・計算式)、3) resource (Azure リソース定義・apiVersion 指定)、4) module (子テンプレートの呼び出し・再利用)、5) output (出力値・他テンプレートへの引き渡し)、6) targetScope (subscription・managementGroup・tenant の階層指定)。例: `param storageAccountName string`・`resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = { name: storageAccountName, location: location, sku: { name: 'Standard_LRS' }, kind: 'StorageV2' }`。型は明示的に指定 (string・int・bool・array・object・カスタム型 2024 新)、ARM JSON より遥かに直感的です。
Bicep モジュール化のベストプラクティスは?
大規模 IaC は必ずモジュール化。代表的なディレクトリ構造: 1) main.bicep (エントリポイント、parameters.bicepparam で環境別パラメータ)、2) modules/ ディレクトリに機能別モジュール (network.bicep・storage.bicep・compute.bicep・identity.bicep)、3) Azure Bicep Public Registry または社内 Bicep Registry に共通モジュール公開。実装例: `module network 'modules/network.bicep' = { name: 'networkDeploy', params: { vnetName: vnetName, addressPrefix: '10.0.0.0/16' } }`。さらに Conditional Deployment (if 条件付きデプロイ) や Loops (for 反復) も対応。AVM (Azure Verified Modules) は Microsoft 公式の verified モジュールセットで、Bicep ベストプラクティスのリファレンス実装として活用可能。
Bicep と Terraform はどう違いますか?
Bicep: Microsoft 純正・Azure 専用 DSL・最新 Azure 機能を即時サポート・State 管理不要 (ARM が自動管理)・無料・Visual Studio Code 拡張機能で高度な IntelliSense。Terraform: HashiCorp 製・マルチクラウド対応 (AzureRM Provider 経由)・大規模コミュニティ・HCL (HashiCorp Configuration Language) で記述・State 管理が必要 (Azure Storage や Terraform Cloud で管理)・Open Source は無料、Terraform Cloud は有料 (商用)。判断: Azure 専用・最新機能優先 → Bicep、マルチクラウド・既存 Terraform 資産活用 → Terraform。2026 年現在、Microsoft 自身は Bicep を推奨、HashiCorp との連携も継続中で Terraform AzureRM Provider も活発に更新。
What-If デプロイって何ですか?
What-If デプロイは、Bicep / ARM テンプレートを実際にデプロイする前に『何が変更されるか』を予測表示する機能。コマンド: `az deployment group what-if --resource-group myRG --template-file main.bicep`。出力で『+ Create (新規作成)』『- Delete (削除)』『~ Modify (変更)』『= NoChange (変更なし)』『* Deploy (デプロイのみ)』のカテゴリで変更内容を一覧表示。本番デプロイ前の必須ステップで、想定外のリソース削除や設定上書きを事前に検知可能。CI/CD パイプラインに What-If を組み込み、Pull Request のレビューフェーズで自動実行する設計が現代的なベストプラクティスです。
Bicep の CI/CD 統合は?
GitHub Actions / Azure DevOps Pipelines への統合パターン。GitHub Actions: `azure/login@v2` で Workload Identity Federation 認証 → `azure/arm-deploy@v2` または `azure/CLI@v2` で Bicep デプロイ。Azure Pipelines: AzureCLI@2 タスクで `az deployment group create` を実行。標準パターン: 1) Lint (`az bicep lint`)、2) Build (`az bicep build`)、3) What-If (`az deployment group what-if`)、4) Manual Approval (Production 環境)、5) Deploy (`az deployment group create`)。Environment 機能で本番デプロイには Approval Gate 必須、Bicep のバージョン管理は Bicep Public Registry または GitHub Container Registry 経由。詳細は Azure Pipelines YAML 完全ガイド を参照してください。
ARM テンプレートからの移行手順は?
既存 ARM JSON → Bicep への自動変換ツール: `az bicep decompile --file template.json`。これで ARM JSON が Bicep ファイルに自動変換される。ただし完全変換ではなく、手動調整が必要なケース: 1) 複雑な式・関数の Bicep 構文への変換、2) Conditional / Loop の構文最適化、3) Module 化されていないテンプレートのモジュール分割、4) Public Registry または社内 Registry への公開。移行戦略: 1) 既存 ARM を全 Bicep 化 (大規模) vs 2) 既存 ARM はそのまま・新規のみ Bicep (段階的)。新規 = Bicep、既存 = 必要に応じて Bicep 化、というハイブリッドアプローチが現実的。Microsoft 自身も既存 ARM テンプレートの利用継続を許容しており、無理な一括移行は不要です。
関連認定試験は?
AZ-104 (Administrator) のドメイン 1 で Bicep / ARM の基礎、AZ-204 (Developer Associate、2026-07 リタイア注意) で開発者視点での IaC 活用、AZ-400 (DevOps Engineer Expert) のドメイン 3 で CI/CD パイプライン内 Bicep 統合 (配点最大)、AZ-305 (Solutions Architect Expert) でアーキテクト視点での IaC 戦略、AZ-120 (SAP on Azure) で ACSS の Bicep 自動デプロイ。Azure を扱うすべてのエンジニアにとって Bicep の理解は必須で、特に DevOps エンジニア・SRE には深い知識が求められます。詳細は Azure DevOps エンジニア キャリアロードマップ を参照してください。
関連記事・技術深掘り
ARM テンプレート → Bicep 移行ガイド|decompile・手動調整・段階的移行・What-If 検証【2026 年版】
既存 ARM テンプレートから Bicep への移行完全ガイド。az bicep decompile による自動変換、手動調整が必要なケース、段階的移行ロードマップ (4 Phase)、Module 化、What-If デプロイ検証、Bicep Linter 活用、関連認定試験 (AZ-400 / AZ-104 / AZ-305) を日本語で網羅。
Terraform on Azure 完全ガイド|AzureRM/AzAPI Provider・State 管理・Module 設計・CI/CD 統合【2026 年版】
Terraform で Azure リソースを管理する完全ガイド。AzureRM Provider と AzAPI Provider の使い分け、Terraform State の Azure Storage Backend 管理、Module 設計と Azure Verified Modules (AVM)、Bicep との併用、Drift Detection、GitHub Actions / Azure Pipelines 統合、関連認定試験 (AZ-400 / HashiCorp Terraform Associate) を日本語で網羅。
Azure DevOps エンジニア キャリアロードマップ|AZ-104 → AZ-400 → SC-100 シニア DevOps への道【2026 年版】
Azure DevOps Engineer になるための認定取得ロードマップ完全版。AZ-900 → AZ-104 → AZ-400 の王道ルート、GitHub と Azure DevOps の両方を扱う AZ-400 の構成、Kubernetes 認定 (CKA / CKAD / CKS) との二刀流、IaC (Bicep / Terraform) 戦略、年収レンジまで日本語で網羅。
GitHub Actions vs Azure Pipelines 完全比較|CI/CD 選定・Self-hosted Runner・OIDC 認証【2026 年版】
GitHub Actions と Azure Pipelines を完全比較。機能差・Marketplace エコシステム・Self-hosted Runner / Agent・OIDC (Workload Identity Federation) 認証・Matrix Build・Composite Action / Reusable Workflow・DevSecOps 統合・関連認定試験 (AZ-400 / AZ-204) を日本語で網羅。
本記事の技術情報は Azure Bicep Documentation に基づいています。 本記事は Microsoft Corporation の公式商品ではなく、いかなる提携・後援関係もありません。 Microsoft、Azure は Microsoft group of companies の商標です。Terraform は HashiCorp の商標です。 情報は 2026 年 5 月 24 日時点の公式公開資料に基づきます。最新情報は必ず公式ページをご確認ください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
AZ-900 完全ガイド|Microsoft Azure Fundamentals 出題範囲・学習リソース・合格戦略
Microsoft Azure Fundamentals (AZ-900) の 2026 年 1 月 14 日改訂版に対...
Azure 認定資格ロードマップ 2026 完全版|全 26 試験の体系と大型再編 (AI-901/AI-103/SC-500)
Microsoft Azure 認定資格 全 26 試験 (現行 23 + 退役 3) の 2026 年版ロードマップ。...
AI-901 完全ガイド|Azure AI Fundamentals 新試験
Microsoft Certified: Azure AI Fundamentals (AI-901) の出題範囲・Mi...
Microsoft Entra ID 入門|旧 Azure AD から学ぶ ID 管理 (AZ-900/SC-900/AZ-104 必須知識)
Microsoft Entra ID (旧 Azure Active Directory) の入門解説。2023 年 7...
DP-900 完全ガイド|Azure Data Fundamentals 出題範囲・学習リソース・合格戦略
Microsoft Azure Data Fundamentals (DP-900) の完全ガイド。4 ドメインの出題範...