業務アプリの本番とテスト環境の分け方:データベースとドライブは分け、AI の鍵は共通に

業務アプリの本番環境とテスト環境を、何を分けて何を共通にするかで決めました。データベースと Google ドライブのフォルダは分け、AI(Gemini)の鍵は共通に。データは本番からテストへの一方向だけ、修正は必ずテストで確かめてから本番へ出します。

「本番とテスト」の文字と、データベース・ドライブは別、AI の鍵は共通、の札

本番環境とテスト環境は、データベースと Google ドライブのフォルダを分け、AI(Gemini)の鍵だけは共通にする、と決めました。データのコピーは本番からテストへの一方向だけで、修正は必ずテストで確かめてから本番に出します。

不動産の業務アプリ(Kaitori Base)を作っていた2026年9月21日、手元の iPhone のアプリがテスト環境を向いたまま、お客様へのデモを迎えそうになりました。幸い気づきましたが、本番とテストの分け方を、その場その場で決めていたことが原因でした。

そこで、本番とテスト環境で「何を分けて、何を共通にするか」を設計書に書き、決まりにしました。この記事は、その決まりと理由の記録です。

本番環境とテスト環境で、分けたものと共通にしたもの

本番 テスト
サーバーの入口(ドメイン) 専用 専用
データベース 専用 専用
Google ドライブのフォルダ 専用の一番上のフォルダ 専用の一番上のフォルダ
AI(Gemini)の鍵 共通 共通
使い道 本物のデータ。営業が使う 確かめるため。壊してよい
本番とテストが、それぞれ専用のデータベースとドライブのフォルダを持ち、本番からテストへ矢印が向いている。AI の鍵は本番とテストで共通
データのコピーは、本番からテストへの一方向だけ。AI の鍵だけは共通にした

データベースは、必ず分ける

「表の形はほとんど変わらないから、データベースは共通でいい」と考えたくなります。けれども、開発中のアプリでは、表の形はしょっちゅう変わります。

緑の背景に置かれた、2つのオレンジの写真
データベースは、必ず分ける(イメージ写真)

ほかにも、共通にすると困ることがあります。

  • テストのデータが本番に混ざる。自動のテストは、案件を作る。手で確かめる時も、査定などを作る
  • 巻き戻せない。アプリを前の版に戻しても、データベースの形は新しいままになる
  • アプリのサーバーの変更は、ほぼ必ずデータベースの形の変更を伴う。共通にした時点で、テスト環境の意味が無くなる
データベースを共通にしていたら、テストで表の名前を変えた瞬間に本番のアプリが止まる。分けていたので、本番は止まらなかった、という比較の図
テストで表の名前を変えても、本番は止まらない

Google ドライブのフォルダも分ける

アプリは、物件の写真や資料を、会社の Google ドライブに保存します。ここも、本番とテストで一番上のフォルダを分けました。フォルダの名前は設定から読み、設定が無ければアプリのサーバーを動かしません。決まった名前に勝手に戻らないようにするためです。

Google ドライブの一番上のフォルダを本番とテストで分ける。共通にすると、テストでファイルを消す操作を確かめた時に本番の物件の写真まで消えるおそれがある
フォルダの名前は設定から読み、設定が無ければサーバーを動かさない

AI の鍵は、共通にした

AI(Google の Gemini)の鍵は、本番とテストで共通にしました。分けなくても、データが混ざるなどの害は小さいからです。

AI(Gemini)の鍵は本番とテストで共通にしたので、1分あたりに使える回数などの上限も共有する。テストで上限に当たると本番も止まる
余裕ができたら、AI の契約の単位を分けることも考える

データは、本番からテストへ一方向だけ

テスト環境が空っぽだと、本物に近い確かめ方ができません。そこで、本番のデータをテストへ写すことにしました。

データは本番からテストへだけ写す。写す前にテストのデータベースを消してから入れ、テストのデータを本番に入れることは絶対にしない
テストのデータは、消えてもよいものとして扱う

修正は、必ずテストで確かめてから本番へ

サーバーへの送り方(デプロイの道具)は、送り先を引数で受け取ります。テストへはそのまま送れ、本番へは送る前に確認を求めます。本番に出してよいのは、テストで動きを確かめたものだけです。テストを飛ばして本番に出すことは、決まりで禁じています。

舞台の照明がついた、客席が空の劇場の写真
修正は、必ずテストで確かめてから本番へ(イメージ写真)
Macで実行
scripts/deploy.sh stg
(テストへ。確認なしで送る)
scripts/deploy.sh prod
(本番へ。送る前に確認を求める)

サーバーが動いているかの見張りも、両方の環境に置きました。ただし、知らせの届け先は分けています。テストの障害の知らせに埋もれて、本番の障害を見落とさないためです。

ターミナルの再現。テストへはそのまま送り、本番へは送る前に確認を求められる。表示は見本
テストへはそのまま、本番へは確認つき(表示は見本)

アプリの側の分け方

サーバーを分けても、アプリがどちらにつながっているかを間違えれば同じことです。冒頭の「テストを向いたままデモを迎えそうになった」は、アプリの側の問題でした。アプリの側では、接続先を切り替えるボタンを、オーナー本人のビルドにだけ入れています。

サーバーを分けても、アプリがどちらにつながっているかを間違えれば同じこと。アプリの側では接続先を切り替えるボタンを、オーナー本人のビルドにだけ入れている
切り替えのボタンは、オーナー本人のビルドだけ
「切り替えボタンは App Store 版に入れない」の文字と、Debug・TestFlight・Release の札アプリ開発本番のアプリから「テスト環境に切り替えるボタン」を消した理由と、#if DEBUG では足りなかった話本番とテストの接続先を切り替えるボタンを、開発用と TestFlight 用のビルドにだけ出し、App Store 版には入れないことにしました。TestFlight のビルドは Debug ではないので #if DEBUG では分けられず、SWIFT_ACTIVE_COMPILATION_CONDITIONS の独自フラグで切った方法です。

まとめ

業務アプリの本番とテスト環境の分け方:データベースとドライブは分け、AI の鍵は共通に:要点のまとめ。データベースと Google ドライブのフォルダは、本番とテストで必ず分ける
この記事の要点
  • データベースと Google ドライブのフォルダは、本番とテストで必ず分ける
  • AI の鍵は共通でよい。ただし上限も共有することを覚えておく
  • データは本番からテストへの一方向だけ。テストのデータは消えてもよいものとして扱う
  • 修正は必ずテストで確かめてから本番へ。見張りの知らせの届け先も分ける

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • テスト環境
  • 本番環境
  • データベース
  • Googleドライブ
  • デプロイ
  • 設計

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ