Bicep とは

Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 Bicep ファイル内で、Azure にデプロイするインフラストラクチャを定義し、そのファイルを開発ライフサイクル全体にわたって使用して、インフラストラクチャを繰り返しデプロイします。 リソースは一貫した方法でデプロイされます。

Bicep では、簡潔な構文、信頼性の高いタイプ セーフ、およびコードの再利用のサポートが提供されます。 Bicep により、Azure のコードとしてのインフラストラクチャ ソリューションに最適な作成エクスペリエンスをオファーします。

Bicep の利点

Bicep には次の利点があります。

  • すべてのリソースの種類と API バージョンのサポート: Bicep では、Azure サービスのすべてのプレビュー版と GA バージョンがすぐにサポートされます。 リソース プロバイダーが新しいリソースの種類と API バージョンを導入するとすぐに、Bicep ファイルでそれらを使用できます。 新しいサービスは、ツールが更新されるまで待たなくても使用することができます。

  • 単純な構文: 同等の JSON テンプレートと比較すると、Bicep ファイルはより簡潔で読みやすくなっています。 Bicep は、プログラミング言語に関する知識を必要としません。 Bicep 構文は宣言型であり、デプロイするリソースとリソース プロパティを指定します。

    次の例は、Bicep ファイルと、同等の JSON テンプレートの違いを示しています。 どちらの例でも、ストレージ アカウントをデプロイします。

    param location string = resourceGroup().location
    param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    

  • 作成エクスペリエンス: VS Code の Bicep 拡張機能を使用して Bicep ファイルを作成すると、ファーストクラスの作成エクスペリエンスが得られます。 エディターには、豊富なタイプセーフ、IntelliSense、構文検証が用意されています。

    Bicep ファイルの作成の例

    Visual Studio 用 Bicep 拡張機能を使用して Visual Studio で Bicep ファイルを作成することもできます。

  • 反復可能結果:インフラストラクチャを開発のライフサイクル全体で繰り返しデプロイし、常に一貫性のある方法でリソースをデプロイします。 Bicep ファイルはべき等です。つまり、同じファイルを何度でもデプロイし、同じリソースの種類を同じ状態で作成できます。 更新を提示する個別のファイルを多数開発するのではなく、望ましい状態を提示するファイルを 1 つ開発することができます。 たとえば、次のファイルではストレージ アカウントが作成されます。 このテンプレートをデプロイし、指定したプロパティを持つストレージ アカウントが既に存在する場合、変更は行われません。

    param location string = resourceGroup().location
    
    resource mystore 'Microsoft.Storage/storageAccounts@2023-04-01' = {
      name: 'mystorageaccount'
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
    }
    

  • オーケストレーション:複雑な順序付けのことを心配する必要はありません。 Resource Manager では、相互に依存するリソースのデプロイが調整され、正しい順序で作成されます。 Resource Manager では、可能な箇所でリソースが並列デプロイされます。そのため、直列デプロイに比べ、短時間でデプロイが完了します。 複数の命令コマンドではなく、1 つのコマンドを使用してファイルをデプロイします。

    Bicep のデプロイの比較

  • モジュール性: モジュールを使用して、Bicep コードを管理しやすいパーツに分割できます。 モジュールによって、関連するリソースのセットがデプロイされます。 モジュールを使用すると、コードを再利用し、開発を簡素化することができます。 これらのリソースをデプロイする必要がある場合はいつでも、モジュールを Bicep ファイルに追加します。

  • Azure サービスとの統合: Bicep は、Azure Policy、Template Specs、Blueprints などの Azure サービスと統合されています。

  • 変更のプレビュー: Bicep ファイルをデプロイする前に、what-if 操作を使用して、変更のプレビューを取得できます。 what-if では、どのリソースが作成、更新、または削除されるか、および変更されるリソース プロパティが表示されます。 what-if 操作により、環境の現在の状態が確認され、状態を管理する必要がなくなります。

  • 管理する状態または状態ファイルがない: すべての状態が Azure に格納されます。 ユーザーは共同作業を行うことができ、更新プログラムが想定どおりに処理されることを確信できます。

  • コストがかからないオープン ソース: Bicep は完全に無料です。 Premium 機能に対して料金を支払う必要はありません。 また、Microsoft サポートによってサポートされています。

作業開始

Bicep を使用して作業を開始するには:

  1. ツールをインストールしますBicep の開発環境とデプロイ環境の設定に関するページを参照してください。 または、VS Code の Devcontainer または Codespaces のリポジトリを使用して、構成済みの作成環境を取得することもできます。
  2. クイックスタートBicep の Learn モジュールを完了します

既存の ARM テンプレートを Bicep に逆コンパイルするには、「Bicep への ARM テンプレート JSON の逆コンパイル」を参照してください。 Bicep Playground を使用すると、Bicep と同等の JSON を並べて表示できます。

Bicep ファイルで使用可能なリソースの詳細については、Bicep リソースのリファレンスに関するページを参照してください

Bicep の例については、Bicep GitHub リポジトリを参照してください

言語について

Bicep は、アプリケーションを作成するための一般的なプログラミング言語としては意図されていません。 Bicep ファイルでは、リソースを作成するための一連のプログラミング コマンドを記述せずに、Azure リソースとリソース プロパティを宣言します。

Bicep の作業状態を確認するには、Bicep プロジェクトのリポジトリを参照してください。

Bicep の詳細については、次のビデオをご覧ください。

JSON の代わりに Bicep を使用して、Azure Resource Manager テンプレート (ARM テンプレート) を開発できます。 ARM テンプレートを作成するための JSON 構文は冗長になることがあり、複雑な式を必要とします。 Bicep 構文では、その複雑さが軽減され、開発エクスペリエンスが向上します。 Bicep は ARM テンプレート JSON に対する透過的な抽象化であり、JSON テンプレートの機能は一切失われません。 デプロイ中、Bicep CLI により、Bicep ファイルが ARM テンプレート JSON に変換されます。

ARM テンプレートで有効なリソースの種類、API バージョン、およびプロパティは、Bicep ファイルで有効です。

Bicep では、同等の JSON と比較して、より簡単で簡潔な構文が提供されます。 ブラケット表現 [...] は使用しません。 代わりに、関数を直接呼び出したり、パラメーターと変数から値を取得したりします。 展開された各リソースにシンボリック名を与えます。それにより、テンプレートでそのリソースを参照しやすくなります。

構文の完全な比較については、「テンプレートにおける JSON と Bicep の比較」参照してください。

Bicep では、リソース間の依存関係が自動的に管理されます。 リソースのシンボル名が別のリソース宣言で使用されている場合に dependsOn を設定しないようにすることができます。

Bicep ファイルの構造は、JSON テンプレートよりも柔軟です。 ファイル内の任意の場所で、パラメーター、変数、および出力を宣言できます。 JSON では、テンプレートの対応するセクション内で、すべてのパラメーター、変数、および出力を宣言する必要があります。

サポートを受ける

Azure Resource Manager (ARM) テンプレートに関連する問題のサポート チケットを開くための手順を次に示します。

  1. Azure Portalを開きます。

  2. 右上隅にある [サポートとトラブルシューティング] アイコンを選択します。

  3. [問題の簡単な説明を入力してください] に「ARM テンプレート」と入力し、[進む] を選択します。

  4. [問題が発生しているサービスはどれですか?] で、[監視と管理] の下にある [ポータル] を選択し、[次へ] を選択します。

  5. サブスクリプションを選択し、 [次へ] を選択します。

  6. [ARM テンプレートに関する問題] を選択し、[次へ] を選択します。

    ARM テンプレートのサポートを要求する場合のスクリーンショット。

次のステップ

クイックスタートを開始します。

一般的な質問に対する回答については、「Bicep に関してよく寄せられる質問」を参照してください。