> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 開発環境と本番環境のデータベース

> アプリが持つ2つのデータベース、つまり構築に使用する開発データベースと、公開したアプリを提供する本番データベースについて説明します。

すべてのReplit Appは2つのデータベースを使用します。**開発データベース**は、構築中にあなたとAgentが実験を行う場所です。**本番データベース**は、公開したアプリを動かす実際のデータを保存し、構築を続けている間も実際のデータを安全に保ちます。

<Frame>
  <img src="https://mintcdn.com/replit/tlGd6oyGOaUUeRxr/images/databases/production-databases.jpg?fit=max&auto=format&n=tlGd6oyGOaUUeRxr&q=85&s=b60de03dc3f59d971894d1795033cc6b" alt="本番データベース管理インターフェース" width="1080" height="471" data-path="images/databases/production-databases.jpg" />
</Frame>

## 比較

| 観点        | 開発データベース                  | 本番データベース                 |
| --------- | ------------------------- | ------------------------ |
| **目的**    | 実験と機能開発                   | 実際のユーザーへの提供とビジネスデータの保存   |
| **データ**   | テストデータ、ダミーレコード、小規模なデータセット | 実際のユーザーデータ、ビジネスクリティカルな情報 |
| **作成**    | すべてのReplit Appで自動的に作成される  | アプリを公開したときに作成される         |
| **Agent** | Agentはテーブルの作成・変更が可能       | Agentはアクセスできない           |
| **変更**    | 頻繁なスキーマ変更、迅速な反復           | 公開時に適用される、慎重で計画的な変更      |
| **請求**    | すべてのReplit Appに無料で含まれる    | 使用量に応じた課金                |

<Note>
  Agentは本番データベースを変更できません。この制限は、本番データベースを安全に保つために設けられています。

  Agentは開発データベースを編集できます。公開時に、Agentが開発データベースの構造に加えた変更(列やテーブルの追加・削除)は本番データベースに適用されます。

  本番データはいつでも手動で編集できます。**Database**ツールを開き、本番データベースを選択して**My Data**を開き、**Edit**を切り替えてください。
</Note>

## 公開時に本番データベースを作成する

公開したアプリには、構築中に使用する開発データベースとは別に、専用の本番データベースが用意されます。

* **現在のインフラストラクチャ(Helium)**: Replitが公開時に必要に応じて本番データベースを作成します。特別な設定は不要です。
* **レガシーNeon開発データベース**: 公開設定から本番データベースを作成します。公開中に**Production database settings**を開き、**Create production database**をオンにします。必要に応じて**Set up your production database with your current development data**もオンにすると、現在の開発データをコピーできます。

<Frame caption="PublishingのProduction database settings">
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/production-database-settings.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=a5ca44635f062423aaa9c8d8b73753e3" alt="Create production databaseオプションを表示する発行設定" width="1406" height="1207" data-path="images/databases/shared-database-migration/production-database-settings.png" />
</Frame>

<Warning>
  開発データを本番にコピーするのは、そのデータがライブアプリで安全に使用できる場合のみにしてください。開発データにはテストアカウント、サンプルレコード、または不完全なコンテンツが含まれている場合があります。
</Warning>

公開後、公開したアプリは本番データベースを使用し、Project Editorは引き続き開発データベースを使用するため、今後の開発における変更がライブデータに直接影響することはありません。

## 本番データベースへの安全な変更

データベースの変更を含む更新を公開する際、ダウンタイムやデータ損失を避けるために、慎重な計画が必要な変更もあります。

<Info>
  公開中に、公開したアプリで短いダウンタイムが発生することがあります。データベースの変更を適用する際、競合を防ぎデータを保護するために、アプリを一時的に停止する必要がある場合があります。
</Info>

以下の種類の変更は、通常特別な注意が必要です:

* アプリケーションコードがまだ参照している**データベース列の削除**
* 既存のコードが処理できない方法での**列のデータ型の変更**
* デフォルト値なしで既存テーブルに**必須フィールドを追加**すること
* 既存のクエリを壊す**テーブルや列の名前変更**
* 既存のアプリケーションロジックを拒否する可能性のある**制約の変更**

### デプロイメントプレビューで変更をテストする

デプロイメントプレビューは、実際のユーザーに影響を与える前にデータベースの変更やアプリケーションの更新をテストできる、一時的で分離された本番環境のコピーです。次のような用途に使用します:

* データベースの変更を適用した状態でも、主要なユーザーフロー全体でアプリが問題なく動作することを確認する
* 既存のデータが正しく移行され、新しいフィールドに期待される値が含まれていることを確認する
* クエリの応答時間にパフォーマンスの低下がないか確認する

## 請求とリソース使用量

本番データベースは、サーバーレスデータベースプロバイダーであるNeonを通じた使用量に基づいて課金されます。データベースは5分間非アクティブになるとアイドル状態になり、コンピュート時間の課金が一時停止され、クエリを受け取ると即座に再起動します。

Databaseツールのランディングビューには、**Billing Period**と**Hours of Compute Used**が表示されます。データベースごとのストレージを確認するには、データベースの**Settings**タブを開きます。すべてのReplit Appにわたる使用状況を確認するには、**Settings** → **Account** → **Account usage**を開き、**PostgreSQL Storage**と**PostgreSQL Compute**の行を展開します。

Replitがデータベースの使用量に対してどのように課金するかについては、[デプロイメントとデータベースの請求](/ja/billing/about-usage-based-billing#databases)を参照してください。

## 本番データベースの削除

<Warning>
  削除操作は7日間の保持期間を過ぎると元に戻せません。続行する前に、重要なデータを必ずバックアップしてください。データベースには7日間のソフト削除期間があり、その間はデータベースを復元できます。サポートが必要な場合はお問い合わせください。7日を過ぎると、データベースは完全に削除され、復元できなくなります。
</Warning>

<Accordion title="データベースの削除方法">
  **Database**ツールから:

  1. データベースを選択し、**Settings**タブを開きます
  2. **Remove database**を選択し、**Yes, Remove database**を選択して確認します
</Accordion>

## レガシー開発データベース

2025年12月4日以前は、開発データベースは<a href="https://neon.com/" target="_blank">Neon</a>でホストされていました。新しい開発データベースはすべて、Replit独自のインフラストラクチャ(Helium)でホストされています。アプリがどちらを使用しているかは、**Settings**タブで確認できます。`DATABASE_URL`に`neon.tech`が含まれていればレガシーNeon、`helium`が含まれていれば現在のインフラストラクチャです。

| **機能**        | **Replit(現在)**                                                                                      | **Neon(レガシー)**                                                                         |
| ------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| **ホスティング**    | Replit独自のインフラストラクチャでホストされる                                                                          | Neon(サードパーティプロバイダー)でホストされる                                                             |
| **請求**        | すべてのReplit Appに無料で含まれる                                                                              | 使用量ベースの課金。詳細は[発行とデータベースの請求](/ja/billing/about-usage-based-billing#databases)を参照してください。 |
| **復元機能**      | [ロールバック機能](/ja/features/data-and-storage/data-recovery)を使用して、任意のチェックポイントにデータベースを復元できます              | ポイントインタイム復元(PITR):バックアップ保持期間内の任意の時点に復元できます。                                            |
| **接続セキュリティ**  | アプリ内からのみアクセス可能で、公開されることはありません。                                                                      | 完全な接続文字列を使用していました。漏洩した場合、誰でもデータベースにアクセスして変更できました。                                      |
| **リミックスの動作**  | [リミックス](/ja/features/projects-and-artifacts/remix-an-app)は、分離とセキュリティのためにデータをコピーした新しい開発データベースを作成します。 | リミックスではすべてのコピーで同じデータベースが再利用されるため、リミックス内の変更が元のアプリに影響する可能性がありました。                        |
| **データベースの作成** | 各Replit Appに対して自動的に作成されます。                                                                          | 明示的な設定が必要でした。                                                                          |
| **公開ワークフロー**  | 公開時に、環境間の分離のために独立した本番データベースが作成されます。                                                                 | 開発と本番が同じデータベースを共有していたため、意図しない開発の変更が本番アプリに影響する可能性がありました。                                |

## データベースインフラのアップグレード

Replitは開発データベースをNeonから、Replit独自のマネージドPostgreSQLインフラストラクチャである**Helium**へアップグレードしています。このアップグレードは自動的に行われ、Project Editorでアプリを開くとアプリごとに1回実行され、すべてのデータが保持されます。

変更内容:

* **低レイテンシとストレージの増加**: データベースがアプリと同じReplitインフラストラクチャ上で動作するようになり、ストレージ制限が10GBから20GBに増加します。
* **同じデータベースエンジン**: HeliumはNeonと同じバージョンのPostgreSQL 16を使用します。クエリ、スキーマ、データの動作は変わりません。
* **接続情報の自動更新**: `DATABASE_URL`はHeliumを指すように更新されます。以前のNeon接続文字列は、参照用として`NEON_DATABASE_URL`としてSecretsに保存されます。
* **個別のPG変数の削除**: `PGHOST`、`PGPORT`、`PGUSER`、`PGPASSWORD`は削除されます。代わりに`DATABASE_URL`を使用してください。

アップグレード中は、\*\*「Upgrading your database」\*\*という進捗画面が表示されます。所要時間は数分から、大規模なデータベースでは数時間かかる場合があります。タブを閉じて後で戻ってきても構いません。アップグレードで問題が発生した場合は自動的にスキップされ、次回アプリを開いたときに再試行されます。完了すると確認ダイアログが表示されます。

ほとんどのビルダーにとって、アップグレード後に特別な対応は必要ありません。以下が該当する場合は確認してください:

* **ハードコードされたNeon接続文字列**: `neon.tech`接続文字列を参照しているコードを、代わりに`DATABASE_URL`環境変数を使用するように更新してください。
* **カスタムPostgreSQLロール**: ロールと権限は自動的に移行されますが、ロールのパスワードはコピーできません。新しいデータベースでカスタムロールのパスワードをリセットしてください。

### アップグレード後のSSL接続エラー

`The server does not support SSL connections`のようなエラーが表示される場合、接続コードがSSLハンドシェイクを強制しています。NeonはSSLを必須としていましたが、Heliumはアプリのそばでローカルに動作するためSSLを使用しません。SSLの設定を環境に応じて条件分岐させてください:

<CodeGroup>
  ```js JavaScript theme={null}
  // 変更前(アップグレード後に動作しなくなる)
  const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
    ssl: { rejectUnauthorized: false },
  });

  // 変更後(開発・本番の両方で動作する)
  const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
    ssl:
      process.env.NODE_ENV === "production"
        ? { rejectUnauthorized: false }
        : false,
  });
  ```
</CodeGroup>

<Tip>
  Drizzle、Prisma、SequelizeなどのORMを使用している場合は、SSL設定を条件的に構成する方法についてそのドキュメントを確認してください。同じ原則が適用されます。開発データベースではSSLを無効にし、本番では有効にします。
</Tip>

### データベースを共有していたフォークされたアプリ

レガシーNeonシステムでは、アプリをフォークすると元のアプリの`DATABASE_URL`がコピーされ、両方のアプリとその公開済みバージョンが同じデータベースに接続していました。共有されていたレガシーデータベースは**2026年6月8日**に停止されました。公開したアプリが動作しなくなった、またはデータへのアクセスを失った場合は、[共有データベースを使用する発行済みアプリの修正](/ja/features/data-and-storage/shared-database-migration)を参照するか、[サポートに問い合わせて](https://replit.com/support)ください。

## 次のステップ

* [データリカバリー](/ja/features/data-and-storage/data-recovery): 開発または本番のデータを復元します。
* [接続の詳細](/ja/features/data-and-storage/connection-details): データベースの接続文字列を確認します。
* [データを操作する](/ja/features/data-and-storage/work-with-your-data): データを参照、編集、クエリします。
