Azure

Azure Bicep チュートリアル|ARM 後継 IaC の基本構文・モジュール化・What-If・CI/CD 統合

2026-05-24
NicheeLab編集部

Bicep は Azure Resource Manager (ARM) テンプレートの後継として Microsoft が開発した宣言的 IaC DSL です。 2021 年 GA で、Microsoft Azure 公式の推奨 IaC ツールとして急速に普及。 本記事では、Bicep の基本構文・モジュール化・What-If デプロイ・CI/CD 統合・ARM からの移行手順を網羅的に整理します。

なぜ Bicep か

Bicep の主な利点:

  • ARM JSON より大幅に簡潔・可読性が高い構文
  • IntelliSense・型チェック (VS Code 拡張機能)
  • モジュール化対応 (大規模 IaC に最適)
  • 最新 Azure 機能を即時サポート (Preview 機能含む)
  • State 管理不要 (ARM が自動管理)
  • 無料
  • ARM JSON への自動トランスパイル (Bicep → ARM JSON 自動変換)

2026 年現在の Azure 新規プロジェクトでは Bicep がデファクトスタンダードで、ARM JSON は新規利用なし・既存保守用途のみです。

基本構文

Bicep は宣言的構文で、主要要素は以下の通り。

  • param: パラメータ宣言・型・デフォルト値・許容値
  • var: 変数・計算式
  • resource: Azure リソース定義・apiVersion 指定
  • module: 子テンプレートの呼び出し・再利用
  • output: 出力値・他テンプレートへの引き渡し
  • targetScope: subscription / managementGroup / tenant の階層指定

シンプルな Storage Account の例

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.blob

型システム

Bicep は型システムを持ち、明示的に指定します。

  • string: 文字列
  • int: 整数
  • bool: 真偽値
  • array: 配列
  • object: オブジェクト
  • カスタム型 (2024 新): 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
  ]
}

条件付きデプロイとループ

Conditional Deployment

param environment string

resource backup 'Microsoft.RecoveryServices/vaults@2023-01-01' = if (environment == 'prod') {
  name: 'rsv-prod'
  location: location
  sku: { name: 'Standard' }
}

Loops (for 反復)

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 デプロイ

What-If デプロイは、Bicep / ARM テンプレートを実際にデプロイする前に『何が変更されるか』を予測表示する機能。本番デプロイ前の必須ステップです。

コマンド

az deployment group what-if \
  --resource-group myRG \
  --template-file main.bicep \
  --parameters main.parameters.json

出力カテゴリ

  • + Create: 新規作成
  • - Delete: 削除
  • ~ Modify: 変更 (差分表示)
  • = NoChange: 変更なし
  • * Deploy: デプロイのみ (Idempotent)

CI/CD パイプラインに What-If を組み込み、Pull Request のレビューフェーズで自動実行する設計が現代的なベストプラクティスです。

Bicep vs Terraform

項目BicepTerraform
開発元MicrosoftHashiCorp
対応クラウドAzure 専用マルチクラウド (Azure / AWS / GCP)
言語Bicep DSLHCL (HashiCorp Configuration Language)
State 管理不要 (ARM が自動)必要 (Storage Account / Terraform Cloud)
最新 Azure 機能即時サポート遅れることあり
料金無料OSS 無料 / Terraform Cloud は有料
判断Azure 専用・最新機能優先マルチクラウド・既存資産

CI/CD 統合

GitHub Actions パターン

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 テンプレートからの移行

既存 ARM JSON → Bicep への自動変換ツール:

az bicep decompile --file template.json

これで ARM JSON が Bicep ファイルに自動変換されます。ただし完全変換ではなく、手動調整が必要なケース:

  • 複雑な式・関数の Bicep 構文への変換
  • Conditional / Loop の構文最適化
  • Module 化されていないテンプレートのモジュール分割
  • Public Registry または社内 Registry への公開

現実的な移行戦略: 新規 = Bicep、既存 = 必要に応じて Bicep 化、というハイブリッドアプローチが推奨。 Microsoft 自身も既存 ARM テンプレートの利用継続を許容しており、無理な一括移行は不要です。

ベストプラクティス

  1. 必ずモジュール化 (機能別に modules/ ディレクトリ)
  2. 環境別 parameters (dev.parameters.json・prod.parameters.json)
  3. What-If を本番デプロイ前に必ず実行
  4. az bicep lint で静的解析
  5. Workload Identity Federation で CI/CD 認証 (Secret 不要)
  6. Resource 名は命名規則に従う (CAF: Cloud Adoption Framework 推奨パターン)
  7. Tag 付与 (Environment・Owner・CostCenter・Project)
  8. 機密パラメータは Key Vault 参照 (@secure() デコレーター)
  9. AVM (Azure Verified Modules) を活用 (Microsoft 公式 verified モジュール)
  10. Bicep Visualizer で依存関係可視化 (VS Code 拡張機能)

関連認定試験

よくある質問

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 日時点の公式公開資料に基づきます。最新情報は必ず公式ページをご確認ください。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

Azure 試験対策ページを見る
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Azure

AZ-900 完全ガイド|Microsoft Azure Fundamentals 出題範囲・学習リソース・合格戦略

Microsoft Azure Fundamentals (AZ-900) の 2026 年 1 月 14 日改訂版に対...

Azure

Azure 認定資格ロードマップ 2026 完全版|全 26 試験の体系と大型再編 (AI-901/AI-103/SC-500)

Microsoft Azure 認定資格 全 26 試験 (現行 23 + 退役 3) の 2026 年版ロードマップ。...

Azure

AI-901 完全ガイド|Azure AI Fundamentals 新試験

Microsoft Certified: Azure AI Fundamentals (AI-901) の出題範囲・Mi...

Azure

Microsoft Entra ID 入門|旧 Azure AD から学ぶ ID 管理 (AZ-900/SC-900/AZ-104 必須知識)

Microsoft Entra ID (旧 Azure Active Directory) の入門解説。2023 年 7...

Azure

DP-900 完全ガイド|Azure Data Fundamentals 出題範囲・学習リソース・合格戦略

Microsoft Azure Data Fundamentals (DP-900) の完全ガイド。4 ドメインの出題範...

Azureの記事一覧 (103件)
© 2026 NicheeLab All rights reserved.