しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Hack Azure! #9 - 一度知ったら手放せない至高の開発体験!Azure × GitHub フォローアップ

先週になりますが、久し振りに Hack Azure という形でイベントを開催しました。過去の回では Azure の各サービスにフォーカスしたものが多かったのですが、今回は開発体験という視点から、各スピーカーが好きな Azure と GitHub の組み合わせを紹介しました。

長く Microsoft は Visual Studio を提供していることもあり、開発体験という面では頭一つ抜けたものを提供していると感じています。GitHub や Azure との統合も開発者の視点からはかなり優れたものになっています。

例によって Hack Azure のフォローアップは頑張って毎回書いていくつもりなので、今回も個人的な視点からイベントで紹介されたものをピックアップしてまとめていきます。

最近は Container Apps と Cosmos DB が激熱なので、次回は Container Apps の Dapr に特化した会をやる可能性があります。Dapr について語りたいゲスト募集中です。

Twitter まとめと YouTube アーカイブ

イベント中に呟かれたハッシュタグ付きのツイートまとめと YouTube のアーカイブは既に公開していますので、リアルタイムでの参加が出来なかった方はこちらを見返して貰えればと思います。

今回は時間の関係もあり、一度締めた後の楽屋裏トークみたいなものはなかったですね。脈絡のないフリートークは結構好きなのでどこかでやりたいです。

GitHub Codespaces / Dev Container で楽々開発

まずは大平さんのターンで GitHub Codespaces を使った開発体験について話がありました。開発環境を丸ごと Docker Image を使ってポータブルにする Dev Container と、それをブラウザや VS Code 向けに環境を提供する Codespaces は最高の開発体験が得られます。

個人向け Codespaces は現在もベータ版でサインアップが必要になるはずですが、Team / Enterprise では GA しているので、誰でも 16 コアのインスタンスまで利用可能になっています。

Codespaces のベースとなっているのは Visual Studio Code の Dev Container なので、ローカル開発時から全て Dev Container に環境を統一しておくと謎の環境構築手順書は必要なく、全て Git で管理できるためお勧めです。IaC でインフラをコード化した後は、開発環境もコード化するのは自然な流れです。

上のエントリでも紹介していますが、Azure Functions のようにランタイムが必要なものや、Node.js や Python などバージョン管理が必要な言語では特に便利に使えます。

Cosmos DB SDK + Change Feed で Event Sourcing

横浜さんのターンでは各言語向けにリリースされている Cosmos DB SDK、特に Core API と呼ばれる SQL を使ったネイティブ API を使う話でした。

Cosmos DB は同時実行に非常に強いですが、言語側が並列でリクエストを効率よく投げられない場合は宝の持ち腐れになってしまいます。サンプルによっては同期版に誘導されますが、ほぼ非同期 API が用意されているので、そちらを使うようにしましょう。SDK によって使える機能は以下のエントリでまとめています。

後半で話があった Change Feed を使った Event Sourcing ですが、Core API を選ばないと Azure Functions の CosmosDBTrigger を使った実装が行えないので、そういった意味でも Core API をお勧めしています。

Change Feed を使った Event Sourcing については、以下のエントリも参考にしてください。

多少 SDK はアップデートされていますが、根本的な部分は全く変わっていないのでそのまま使えます。Cosmos DB はプレビュー中の新機能が多いので、また実際に触る会が出来ればよいと思っています。

Visual Studio 2022 / Container Apps に IDE の力を垣間見る

自分のターンでは、最近あまり話してこなかった Visual Studio の機能と Container Apps の組み合わせについて紹介しました。Container Apps の機能と立ち位置については前回の Hack Azure #8 を参照してください。

Git リポジトリのクローンから Container Apps の作成、デプロイといった流れの全てを Visual Studio 2022 だけで行うという珍しいデモを行いました。GitHub Actions の結果確認まで行う姿は、統合開発環境の名に恥じない機能の豊富っぷりをアピール出来たかと思います。

ちなみにデモの時には Container Apps 関連機能はプレビューだったのですが、17.3 から正式版になっているので安心して使うことが出来ます。

Container Apps 向けの拡張機能は Visual Studio Code にも提供されているのと、Azure Portal からも同じようにデプロイ用のワークフローを生成できるのでお勧めです。詳細は以下のエントリを参照してください。

今回は Container Apps 自体が持つ KEDA や Dapr といった機能は触っていないので、冒頭にも書きましたが次回辺りで Dapr を弄り回す会が出来ればと思います。

Static Web Apps CLI を使ったお手軽デプロイ

最後は三宅さんによる Static Web Apps CLI を使ったデプロイについてです。

これまで SWA は GitHub Actions や Azure DevOps からのデプロイが必須で、実アプリケーション向けには良かったのですが、ローカルでの開発中に簡単にデプロイして確認が行えなかったので不便でした。今は SWA CLI を使うことで自由にデプロイ出来るので検証が行いやすくなっています。

特に認証周りの設定は GitHub にプッシュする前に確認しておきたいこともあるので、SWA CLI でローカルのファイルを簡単にデプロイ出来るようになって助かりました。

GitHub Codespaces 上で SWA CLI を使う際には、ログイン周りで問題があるようなので、以下の大平さんの記事を参考にしてください。Dev Container では Azure CLI の認証情報を共有できるので回避可能な予感です

個人的には Deployment Token を使うようにしているので影響は受けませんでしたが、Secrets に Service Principal を設定しているケースではログインを行った方が楽なので使い分けていきましょう。