Azure Static Web Apps プレビュー後の注目アップデートまとめ

Azure Static Web Apps(以降 SWA と略す場合があります) が登場し、パブリックプレビューとして利用できるようになってから既に数ヶ月が経過しました。このエントリーの執筆時点ではまだ GA にはなっていませんが、プレビューが開始されてから SWA は地道な改善を続けています。

そんな素晴らしいアップデートが行われているのに、GitHub の Issue 以外には公式でアナウンスされている情報源が見当たらないので、微力ながら私が独断と偏見で気に入っている更新をピックアップして紹介したいと思います。

JAM Stack のサポート

Azure Static Web Apps はその登場時に SPA や JAM Stack を含めた SSG (Static Site Generation) に対応してる点がアピールされていましたが、実はプレビュー開始直後は、ビルド時に API 経由でコンテンツを動的に取得するタイプの JAM Stack には対応できていませんでした。

とあるオンラインイベントで SWA による JAM Stack のデモを企画していた自分は、この状況にイラッとしてしまいすぐに Issue を立てて、チームに猛烈改善アピールをしました。

対応できていなかった原因は、GitHub Actions で外部サービスから Webhook を使って起動する repository_dispatch というトリガーに SWA のビルドの仕組みが対応していなかっただけでした。原因が明確だったため、比較的短時間に Issue が解決され、Contentful などの Headless CMS を使った JAM Stack なサイトを運用できるようになりました。

JAM Stack

monorepo のサポート

最近は、サービスやアプリケーションを開発する際に monorepo でリポジトリを運用するケースが増えてきました。その背景や狙いなどはここでは割愛しますが、自分のプロジェクトでも当初バックエンドとフロントエンドで別々に運用していたリポジトリを monorepo として統合する動きが増えています。

しかし、Azure Static Web Apps ではプレビューからしばらくの間、 monorepo に対応できていませんでした。具体的には、リポジトリの中からひとつのサイトしかホストできない制約があり、ユーザー向けサイトと管理者向けサイトなど複数のフロントエンドを別々のホストで運用する場合に、リポジトリを分割しなければなりませんでした。GitHub Packages などを使ってコンポーネントを共有する方法はあるものの、小規模なサイトではいちいちパッケージ共有の仕組みを入れるのが面倒というケースは多いと思います。

この Issue については、かなり初期の頃からいろいろな人が改善を求めていましたが、途中議論がおかしな方向に行くこともありいよいよ不安を感じたので、具体的なユースケースを提示し重要性を強めに訴えたところ、再度 Issue が活性化し無事解決に至りました。

複数のステージング環境サポート

Azure Static Web Apps の便利な機能に ステージング環境での PR プレビュー機能 がありますが、プレビュー開始後しばらくの間は、ステージング環境を1つしか作れないという制約がありました。

この機能自体は、プルリクエストを作成すると自動でプレビュー可能なステージング環境をホストしてくれのでとても便利なのですが、逆にいうと1つしか PR を作れないという制約は意外にもきつく、GA 後の本格利用を見据えた検証などでは、ここで萎えることも多かったです。

これもかなり初期に立てられた Issue でしばらく放置されてましたが、11月に突然解決しました。ただ、ステージングは3つまでという制約はあります。GA 時はもっと増えるのかどうかはわかりませんが、最低限運用には耐えられそうな感じです。

Staging

その他注目のアップデート

ここまでは、SWA の GitHub Issue 内だけでこっそり公開されているものでしたが、これ以外にも注目のアップデートはいくつかあり、Ignite か何かでもアナウンスされていたのでご存知の方も多いと思います。

パブリックプレビューの開始から時間が空いたこともあり注目度が少し下降気味?の Azure Static Web Apps ですが、着実にアップデートされていますし、Issue の動き をみている限りは開発もそれなりに行われているようです。今後も気になったことはどんどんフィードバックして、GA を楽しみに待ちたいと思います。