Nuxt 3 で Cloud Function for Firebase Gen 2 の region 指定等が可能に
ロンラン株式会社 CEO 兼 CTO の武部です。
Nuxt 3 の SSR / SSG サーバに Firebase Functions を選択している方/しようとしている方に朗報です。
Nuxt 3.7.3 から Cloud Function for Firebase Gen 2 をどの region に対してもデプロイできるようになりました。
また、maxInstance などの Cloud Fucntion Gen 2 向けオプション設定も反映されるようになりました。
こちら、私の unjs/nitro への PR が取り込まれたことがきっかけです。
こりゃ嬉しいぜという方、感謝の 💛 をお待ちしています。
経緯
当社が 2023 年 9 月 6 日にオープン β リリースした新サービス「Athty」(アスティ)、元々は Vue 3 SPA で開発していたのですが、リリース 2 週間前から Nuxt 3 に移行するという荒技をやってのけました(!)。
元々 Athty では、Cloud Function for Firebase Gen 2 の API を多数 asia-northeast1
リージョンに配備・利用していたため、Nuxt 3 / SSR でも Gen 2 / asia-northeast1 を選択するのは自然な流れでした。
しかし Nuxt 3 / nitro のドキュメントどおりに設定してもなぜか us-central1 へデプロイされてしまう という問題に遭遇しました。
この設定を踏襲してもなぜか us-central1 へ
Firebase / Google Cloud Platform 上のサービスを asia-northeast1
に集約してきた私たちにとって、これはなかなかクリティカルな問題です。us-central1
ということはデフォルト設定。指定が効いてない可能性大です。原因を探るべく unjs/nitro
のコードを追ってみました。
すると、以前私も Functions gen 1 -> gen 2 アップデートした際ハマった Global configuration 周りに問題がありそうでした。まずは issue を起票。
その傍らで、手元の build / トランスパイル後の js コードに無理やり修正を試みたところ、期待どおりに asia-northeast1
へデプロイされることが確認できました 💪
早速 unjs/nitro
を fork、コードを修正・テストし PR を送っておいたところ、翌日速やかにマージ頂きました。
その後、そもそも region のみならず maxInstance
や minInstance
などすべての httpsOptions
が反映されていないことに気づいてくれたコントリビューターが「追い PR」を送ってくれたことで、完全となりました。
そこから 1 週間程で nitro v2.6.3 release に取り込まれ...
さらに少し間を置いて、先日リリースされた Nuxt v.3.7.3 が nitro v2.6.3 を利用するようになったことで、Nuxt 3 ユーザーも晴れて利用できるようになった、というのが経緯です。
終わりに
また世界が一歩平和に近づいた!(言い過ぎ)
ロンラン株式会社はスポーツテック領域の IT 革命を試みている、野心的なスタートアップです。Nuxt 3 を始めとした最新の Web 技術を活用し、自社製品の機能拡張を続けています。事業化はまもなくの予定です。
特に「ソフトウェアエンジニアリング」はロンランのエンジニアリング思想における重要なキーワードで、持続可能なソフトウェア開発を意識し、守り続けています。
また、今回の私のような OSS への積極的なコントリビュートや、自社/個人の成果物を OSS 公開したり、記事やカンファレンス・勉強会などでの情報発信すること。こういった非営利のソフトウェア関連活動も積極的に行うなどで、日本の IT を世界水準に押し上げ、今日の世界のソフトウェア技術の発展に貢献できる、スーパーなエンジニア集団を目指しています。
共感頂いた方は、ぜひお気軽にご連絡ください!
ロンラン株式会社コーポレートサイト
・ミッション「ランナーが諦めない世界をつくる」
・ビジョン「全世代の人々が健康に生きる社会」
ロンランのファースト・プロダクト「Athty」
Athty プレスリリース「ランニング大会の新しい探し方を提供する「Athty」が本日よりオープン β 公開」
Discussion