← Notes

/ WEB / INFRA

個人HPとゲームを同じドメインで分けて配信する

Astroの静的サイトと、API付きのブラウザゲームをCloudflare Workers上で共存させた構成の記録。

ホームページとゲームでは必要なものが違う

個人ホームページは文章や作品一覧が中心なので、Astroの静的ビルドで十分です。一方、イルカゲームや通知ゲームには全ユーザー共通のカウンターがあり、Cloudflare WorkersからAPIを呼び出します。

両方を1つのリポジトリやWorkerに無理にまとめると、ページの見た目を更新するだけでもゲームの集計APIに影響する恐れがあります。そこでホームページとゲームを別の配信単位にしています。

URLごとに担当を決める

morio-23.net のルート側は morio-23-home が担当し、/games/* は別のゲーム用Workerが担当します。ゲームのほうが具体的な経路になるため、ホームページを差し替えてもゲームのAPIや静的ファイルへつなぐ設計にしています。

DNSレコード、メール用MX/TXT、ゲーム用のルートを維持しながらホームページだけ切り替えるのが重要でした。これは静的サイトを新しく公開するときに見落としやすい点です。

ビルド時の思わぬ自動設定

初回のCloudflareデプロイでは、Astroの静的ビルドは完了したのに、Wranglerが自動でCloudflare用アダプターを追加しようとしてエラーになりました。

実際にはサーバーサイド描画が不要だったため、wrangler.jsonc に静的ファイルの配置先 dist を明示して自動変換を避けました。必要な仕組みだけ使うほうが設定も把握しやすくなります。

公開作業と確認作業を分ける

新デザインの確認には workers.dev のプレビューURLを使い、見た目と主要ルートを確かめてから本番ドメインの経路を切り替えました。

新しいページや記事を追加するときも、動いているゲーム用Workerとデータベースは触らず、静的サイトだけ更新できる形を保ちたいと思っています。

制作メモ一覧へ戻る ←