APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Azure Bicep Community Call 2021 August まとめ

f:id:thanaism:20210901144453p:plain

こんにちは、コンテナソリューショングループの髙井です。

先日、8月のAzure Bicep Community Callが公開されました。

Community Callは開発陣からユーザーに向けてトピックスを伝えてくれる動画配信コンテンツになっています。

Bicepはどんどん開発が進んでおり、今回も新機能および検討中の機能が取り上げられていました。

が、動画は全編英語ですので追うのはちょっと手間ですし、せっかくなので日本語で簡単にトピックスをまとめておきたいと思います。

youtu.be

注目トピックス

今回のCommunity Callのうち、私が注目したのは以下の3セクションです。

  • Latest Features Demo
  • Bicep Registry Update and Demo
  • Parameter Improvement Options

Latest Features Demo

f:id:thanaism:20210901183741p:plain

Latest Features Demoのセクションでは、最新機能が実演されていました。

まず、VSCodeの拡張機能についてです。

Linterの機能向上

Linterが進化しており、リアルタイムで以下のようなチェックが走ります。

  • 秘匿情報をハードコーディングしていないか
  • 定義されているのに使われていないパラメータ―がないか
  • 冗長なシンタックスを使っていないか

とくに、シンタックスの修正が親切です。

以下のようにstring interpolationを使わない形に直したり、

arg = '${myParameter}'
↓
arg = myParameter

逆にstring interpolationを使うべき場合は使うように直してくれます。

arg = concat(myParameter,'-mySuffix')
↓
arg = '${myParameter}-mySuffix'

また、すべてのVSCode上の警告は種別ごとにbicepconfig.jsonによって制御することが可能です。

Go to Definition

各パラメーターの定義部分へのジャンプやマウスオーバー時のホップアップへの情報表示がサポートされています。

スニペット

補完機能が強力になっています。たとえば以下のように中途半端に入力したとします。

resource hoge 'SomeProvider@ApiVersion' =

すると、required-propertiesという候補が出てきます。

これは驚異的に便利で、選択するとARM APIのSwagger等々に応じて、そのリソースに必須のプロパティを自動補完してくれる頼もしい機能です。

外部JSONファイルのパース

これも便利な機能です。

var policy = json(loadTextContent('policy.json'))

などとすると、外部のjsonファイルを読み取って、パースしてくれます。

利用する際は、policy.idといったようにプロパティアクセスのような形で記述することができ、さらにインテリセンスも効く親切っぷりです。

Bicep Registry Update and Demo

f:id:thanaism:20210901184031p:plain

こちらはBicep v0.5で予定されている機能です。

github.com

BicepモジュールをOCI形式で外部レジストリに登録したり、登録されたモジュールを直接利用可能にする機能です。

これはPrivate Registryにも対応する予定のようです。AzureなのでACR(Azure Container Registry)

これにより、以下のような記述が可能になりそうだとのこと。

module siteDeploy 'oci:myreg.azurecr.io/demo/site:v3' = {

Parameter Improvement Options

f:id:thanaism:20210901184144p:plain

こちらはまだまだ検討段階の機能のようですが、より高度な型付けが可能になりそうです。

たとえば、LoadBalancerのルールはたくさんあって煩雑ですが、以下のようにApiVersionに応じたルール記述全体として型を規定できたりすることが検討されています。

param rule type 'Microsoft.Network/loadBalancers@2020-06-01#LoadBalancerRule'

開発をしている人だったりすると特に嬉しさを感じるポイントだと思います。

現在だとこのような階層構造をもった内容はすべてobject型で包括的にしか指定できないので、実装されたらかなり助かる感じですね。

おわりに

この記事を読んでから、動画のほうで映像だけ流し見すればだいたいの概要はサクッとつかめるのではないでしょうか!

どんどん機能追加されるBicep、アツいですね~。
最近はTerraformの投稿が続いていましたが、私は芸人のなかやまきんに君さんが大好きです。

ようするに、つまりアレですね。いつも心の中にはBicep(上腕二頭筋)という感じでやっていきたいと思っています。

なんといってもMicrosoftにはPower Platformがあるくらいですから、Microsoftもなかやまきんに君を推しているに違いありません。