Azure Static Web Apps が GA になりました(速報)

プレビューが発表されてから 約1年の期間を経て、 Azure Static Web Apps が GA になりました! プレビュー中も地道な改善が続けられてきたことは 私のブログ: Azure Static Web Apps プレビュー後の注目アップデートまとめ をみていただければわかると思いますが、この GA のタイミングでもいくつかのアップデートがあったので、気になる箇所を独断と偏見でピックアップして紹介します。

公式な情報は以下をみるようにしてください。

Standard Plan の登場と料金体型

プレビュー期間は Free Plan のみでしたが、 GA のタイミングで Standard Plan という有料プランが追加になっています。

Price

1 サイトが約 1000 円/月でホスティングできて、100GB/月の帯域が付属している感じですね。Free だと帯域を超えるとサイトが使えなくなり、Standard は超過分を約 22 円/GB で精算するモデルのようです。それほどアクセス数が多くないサイトであれば、ほぼ基本料金の枠に入り切るのではないでしょうか。ただし、帯域はサブスクリプションでの合計になるので、複数のサイトを運用する際には注意が必要ですね。

Free プランもこのまま継続になったのも嬉しいですね。個人開発や小規模サイトのホスティングであれば引き続き無償で運用できます。

なお、この表にある Private Link はまだサポートされていないので、近日中にこの表からは一旦削除されるらしいです。

カスタムドメインでルートドメインがサポート

プレビュー中サブドメインだけが有効だったカスタムドメインで、ルートドメイン(APEX ドメイン)がサポートされました。無償で SSL/TLS 証明書も自動発行されるのは助かりますね。

ルートドメインのバリデーションは TXT レコードを使ってエイリアスレコードを検証するようになっていました。詳細は 公式ドキュメント: Add domain using TXT record validation をみましょう。

カスタム認証で OIDC (Azure AD B2C など) がサポート

これまで主要な認証プロバイダーのビルトイン認証のみサポートされていましたが、GA のタイミングでカスタム認証を追加できるようになり、OpenID Connect provider を追加できるようになりました。OIDC に対応したということは、みんな大好き Azure AD B2C も使えるということだと思います。

これも詳細な手順が 公式ドキュメント - Configure a custom OpenID Connect provider に出ていたので、試したい方はこちらを確認してください。

Bring your own function のサポート

これまでもビルトインの Functions がサポートされていましたが、言語やトリガーに制約があり、Azure Fucntions の良いところが出しきれていない面がありました。この GA のタイミングで、Bring your own function がサポートされたので、通常の Azure Fucntions を作って、それを紐づけるといった方法も利用できるようになったのは朗報だと思います。

注意点は紐づける Function App は Premium Plan に限定されている点あたりですかね (訂正: プロダクトグループからドキュメントの表記が間違っていたとの連絡をいただき訂正しました。全てのタイプの Function App を紐づけできるそうです)。これで、みんな大好き Durable Functions を含めた全てのトリガータイプや言語が使えるので、素晴らしい改善だと思います。

これも 公式ドキュメント: Bring your own functions to Azure Static Web Apps が出ているので興味ある方はみておくと良いと思います。

構成ファイルやビルド周りの変更

GA より少し前のタイミングで重要な変更が入っていました。ひとつは、サイト全体の設定を管理する構成ファイル形式が staticwebapp.config.json に変わったことです。プレビュー期間では routes.json を使っていましたが非推奨なので気をつけてください。書き方も変わっていますので、詳細は Configure Azure Static Web Apps をみましょう。

また、プレビュー時に不評だった CI/CD パイプラインのプロセスも改善しています。具体的には、ビルドとデプロイ部分を切り離せるようになりました。ビルドは自前で組んだステップで実行し、デプロイだけはビルトインの仕組みに任せたいというニーズに対応できるようになりました。その場合は、 skip_app_buildtrue に設定することで、ビルトインのステップではデプロイのみが行われるようになります。詳細は Skip app build をみてください。

コンテンツの配信

Azure Static Web Apps は、「Globally distributed content for production apps」というコンセプトの通り、静的コンテンツについてはリージョンを意識する必要がありません。デプロイすると複数のリージョンに分散配置され、クライアントに近いところから配信される仕組みになっているようです(詳細な技術仕様は調査中)。

しかし、現実にはよりクライアントに近いエッジから配信してもらいたいので、GA 時点で日本リージョンからの配信がサポートされていないのは少し残念です。いつか CDN と統合される日がくるのでしょうか?そのあたりのアップデートを待ちたいと思います。

いずれにせよ、これで Azure の本番環境で SPA や SSG で構築したアプリケーションをデプロイできるようになったのは良かったです。個人的には 3 年待ちました。でも開発チームがオープンに健全な運営をしているので、今後の発展にとても期待しています。素晴らしいプロダクトを産んでくれてありがとうございました!