Vercel だけ東京にしても、まだ遅かった。データベースがムンバイにいたから
関数を東京に置いたのに、まだ遅い。残っていたのは、データベースまでの往復でした。
日本向けのアプリが、なんだかもっさりしている。そういう時、最初に疑うのは Vercel の実行場所でした。
Vercel の関数は、何も書かないと アメリカ東海岸(iad1) で動きます。日本からの通信は、まず太平洋を渡る。これを東京(hnd1)に変えるだけで、驚くほど速くなる。実際、そうでした。
でも、それだけでは終わらなかった、という話です。
1まず、Vercel を東京にした
vercel.json に "regions": ["hnd1"] を1行足すだけです。short-maker というアプリで測ると、こうでした。
実行場所を東京に変えただけの結果(2026-06-30・同じ画面を測り直し)
| 測った所 | 変える前 | 東京にした後 |
|---|---|---|
| /share(動的なページ) | 2.30秒 | ◎0.38秒 |
| /api/sales-bot | 0.73秒 | ◎0.35秒 |
測る時の注意が1つ。静的なページやキャッシュから返るページで測ると、どこで動いていても速く見えます。必ず動的なルートに curl -sD- -o /dev/null を投げて、返事の x-vercel-id の2つ目を見ます。iad1 なら米国、hnd1 なら東京です。静的なページで測って「速い」と言ったら誤診です。
2それでも遅いアプリがあった
東京にしても、まだ遅いアプリがある。調べると、データベースが別の場所にいました。
うちの複数のアプリが、ひとつの共有の Supabase(データベースを貸してくれるサービス)を使っていました。そのリージョンを supabase projects list で見ると、ムンバイ(ap-south-1)。インドです。
関数が東京にいても、データを読むたびに東京からインドまで往復します。日本からムンバイの認証の窓口を5回叩いて測ったら、1回 0.25〜0.37秒。
3往復の数が、問題を大きくしていた
1回の往復なら、0.3秒ほどです。困るのは、往復が重なる時でした。迷子札のアプリ(NFCドッグタグ)で、タグへの書き込み1回あたりの通信を数えたら、約25往復。単純に掛け算すると 6〜9秒分になります(これは計算で、書き込み全体の時間を測った数字ではありません)。
そこで 2026-10-08、この迷子札アプリのデータだけを、東京の新しいプロジェクトへ移しています。拾った人が開くページの表示は、移す前の 0.31〜0.73秒 から、移した後の 0.20〜0.29秒 に。この日に測った数字で、今の速さを保証するものではありません。
4移し方でも、迷った
全部は移していません。ログインだけは、ムンバイのままです。配布済みの iOS アプリが、ログインの URL を中に持っているからです。アプリを更新しないと、ログインは動かせません。
データだけ東京に移し、サーバーはログインの印(トークン)の署名を、元の鍵でその場で確かめます。合わない時は拒まず、本来の確認に回す。鍵を間違えて全員を締め出す事故を避けるためです。
もう1つ。「元に戻す」が使えなくなります。Vercel の「前の版に戻す」を押すと、データの向き先もムンバイに戻って、東京で増えたデータが見えなくなる。なので、ムンバイ側の表は消さずに残す。戻すなら、差分を写してから。そう決めています。
5間違えていたこと
恥ずかしい話が1つあります。
- 「共有のプロジェクトに、表の名前の頭に印をつけて足す」という前の決まりが、ムンバイに載せ続ける抜け道になっていました。2026-10-08 に、新しく作るものは東京だけ、ムンバイには1つも載せない、と決め直しています
6正直に言うと、まだ分からないこと
うちのアプリが全部で何本、いまも実行場所が米国のままなのかは、数えていません。東京にする決まりは全アプリが対象ですが、既存のものを1本ずつ x-vercel-id で測り直してはいません。
この記事を書いた人
NextCode(沖縄県宜野湾市)は、iOSアプリ・ホームページ/LP・NFCデジタル名刺・AI業務自動化を作っている開発スタジオです。ここで書いているのは、実際に作って公開したものと、その過程で詰まったことだけです。
お問い合わせフォームは24時間受け付けています。