> ## 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.

# シークレット

> APIキーなどの機密情報を暗号化された環境変数として安全に保存する方法を学ぶ。

Secretsツールは**シークレット**（APIキー、認証トークン、データベース接続文字列などのReplitアプリの機密情報）を保存・暗号化します。

シークレットを追加すると、ツールは自動的にデータを暗号化し、Replitアプリの環境変数として利用可能にします。
このアプローチにより、コードにシークレットをハードコーディングする必要がなくなり、漏洩リスクを軽減できます。

<Frame>
  <iframe width="100%" height="400" src="https://www.youtube.com/embed/qE_2Z8ReyWI" title="Secretsプロジェクトエディターツール" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

コードベースにシークレットをハードコーディングすると、以下のシナリオで偶発的な漏洩につながる可能性があります：

* 公開ReplitアプリやコピーペーストでコードをGitHubに共有する
* パブリックリポジトリにコードをコミットする
* ライブストリームやスクリーン共有でコードを表示する

Secretsツールを使用して、認証情報の漏洩を心配せずに安心してコードを共有しましょう。

<Frame caption="Secretsプロジェクトエディターツール">
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workspace/secrets-tool.png?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=5e5454a3daaa5fc3f30d823e6c8c3c79" alt="Secretsツールのスクリーンショット" width="2276" height="1136" data-path="images/workspace/secrets-tool.png" />
</Frame>

## 機能

Secretsには以下の機能が含まれています：

* **エンドツーエンド暗号化**：保存時はAES-256暗号化、転送時はTLS暗号化を使用してデータを自動的に保護
* **アプリレベルのシークレット**：特定のReplitアプリに固有のシークレットを保存・管理
* **アカウントレベルのシークレット**：すべてのReplitアプリで利用可能なシークレットを保存・管理
* **環境変数アクセス**：環境変数を使用してコードからシークレットにアクセス
* **コラボレーションアクセス**：コラボレーターやチームメンバーとシークレットを共有

## 使い方

<Note>
  シークレットは静的デプロイメントを除くすべてのデプロイメントタイプで利用できます。
</Note>

SecretsはSecretsプロジェクトエディターツールでアクセスできます。

<Accordion title="Secretsにアクセスする方法">
  左側の**ツールドック**から：

  1. <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-all-tools-button.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=579643854fb13c402de516695e52c554" alt="すべてのツールアイコン" width="16" height="16" data-path="images/icons/workspace-all-tools-button.svg" /> **すべてのツール**を選択してプロジェクトエディターツールの一覧を表示。
  2. <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/lock.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=0ebba01cdc579bafd52c21b5053788bc" alt="Secretsアイコン" width="16" height="16" data-path="images/icons/lock.svg" /> **Secrets**を選択。

  **検索バー**から：

  1. 上部の<img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-search-icon.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=d3feed840da2d19e1ee4873d137114dc" alt="虫眼鏡アイコン" width="16" height="16" data-path="images/icons/workspace-search-icon.svg" />虫眼鏡を選択して検索ツールを開く
  2. 「Secrets」と入力してツールを見つけ、結果から選択。
</Accordion>

### アプリシークレットを管理する

**Secrets**ペインの**アプリシークレット**タブでアプリレベルのシークレットを管理できます。
このタブにはReplitアプリに関連付けられたすべてのシークレットの一覧が表示されます。

<Accordion title="アプリシークレットを追加する">
  シークレットを追加するには：

  1. **新しいシークレット**を選択。
  2. **キー**（シークレットの名前）と**値**（シークレット自体）を入力。
  3. **シークレットを追加**を選択して保存。
</Accordion>

<Accordion title="アプリシークレットを編集する">
  シークレットを編集するには：

  1. シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="縦三点アイコン" height="16" width="16" data-path="images/icons/vertical-dots.svg" />縦三点メニューを選択。
  2. コンテキストメニューから**編集**を選択。
  3. **キー**または**値**フィールドのテキストを更新し、変更を保存するには**シークレットを更新**を、変更を破棄するには**キャンセル**を選択。

  タブの下部にある**JSONで編集**または\*\*.envで編集\*\*を選択して、アプリシークレットのリスト全体を変更することもできます。
</Accordion>

<Accordion title="アプリシークレットを表示する">
  シークレットを表示するには、シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="目のアイコン" width="16" height="16" data-path="images/icons/eye.svg" />目のアイコンを選択。

  シークレットを非表示にするには、<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="斜線付き目のアイコン" width="16" height="16" data-path="images/icons/eye-slash.svg" />斜線付き目のアイコンを選択。
</Accordion>

<Accordion title="アプリシークレットを削除する">
  シークレットを削除するには、シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="縦三点アイコン" height="16" width="16" data-path="images/icons/vertical-dots.svg" />縦三点メニューを選択して**削除**を選択。
</Accordion>

### アカウントシークレットを管理する

**Secrets**ペインの**アカウントシークレット**タブでアカウントレベルのシークレットを管理できます。
このタブにはReplitアカウントに関連付けられたシークレットのみが表示されます。

<Accordion title="アカウントシークレットを追加する">
  アカウントレベルのシークレットを追加するには：

  1. **アカウントシークレット**タブに移動。
  2. <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/settings-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=27601119959a9349e102c44c2adbd398" alt="歯車アイコン" width="16" height="16" data-path="images/icons/settings-icon.svg" />アイコンを選択して**設定**を開き、アカウントレベルのシークレットを管理。
  3. **新しいシークレット**を選択してシークレットを追加。
  4. **キー**（シークレットの名前）と**値**（シークレット自体）を入力。
  5. **保存**を選択して保存。
</Accordion>

<Accordion title="アカウントシークレットを編集する">
  シークレットを編集するには：

  1. シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="鉛筆アイコン" width="16" height="16" data-path="images/icons/pencil-icon.svg" />鉛筆アイコンを選択。
  2. **キー**または**値**フィールドのテキストを更新し、変更を保存するには**保存**を、変更を破棄するには**キャンセル**を選択。
</Accordion>

<Accordion title="アカウントシークレットを表示する">
  シークレットを表示するには、シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="目のアイコン" width="16" height="16" data-path="images/icons/eye.svg" />目のアイコンを選択。

  シークレットを非表示にするには、<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="斜線付き目のアイコン" width="16" height="16" data-path="images/icons/eye-slash.svg" />斜線付き目のアイコンを選択。
</Accordion>

<Accordion title="アカウントシークレットをリンクする">
  Replitアプリでアカウントレベルのシークレットを使用するには、アプリにリンクする必要があります。
  アカウントレベルのシークレットをリンクするには：

  1. **アプリシークレット**タブに移動。
  2. シークレットの左側のチェックボックスを選択。
  3. **このアプリにリンク**を選択。

  シークレットのリンクを解除するには：

  1. **アプリシークレット**タブに移動。
  2. シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" width="16" height="16" alt="縦三点アイコン" data-path="images/icons/vertical-dots.svg" />縦三点メニューを選択。
  3. **リンクを解除**を選択。
</Accordion>

<Accordion title="アカウントシークレットを削除する">
  1. シークレットの横にある<img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="鉛筆アイコン" width="16" height="16" data-path="images/icons/pencil-icon.svg" />鉛筆アイコンを選択。
  2. **削除**を選択。
</Accordion>

### コードでシークレットにアクセスする

<CodeGroup>
  ```python Python theme={null}
  import os
  print(os.getenv("MY_SECRET"))
  ```

  ```javascript JavaScript theme={null}
  console.log(process.env.MY_SECRET);
  ```

  ```java Java theme={null}
  System.out.println(System.getenv("MY_SECRET"))
  ```

  ```csharp C# theme={null}
  using System;
  Console.WriteLine(Environment.GetEnvironmentVariable("MY_SECRET"));
  ```

  ```go Go theme={null}
  package main
  import (
      "fmt"
      "os"
  )
  func main() {
      fmt.Println(os.Getenv("MY_SECRET"))
  }
  ```

  ```ruby Ruby theme={null}
  puts ENV["MY_SECRET"]
  ```
</CodeGroup>

### シークレットの可視性を管理する

シークレットの可視性は、Replitアプリへのアクセス方法と作成者かどうかによって異なります。

Replitアプリを共有するには以下のいずれかのオプションを使用できます：

* **マルチプレイヤー**：Replitユーザーをリアルタイムコラボレーションに招待
* **カバーページ**：リミックスオプション付きでReplitアプリのプレビューを表示
* **リミックス**：個人または組織のReplitアプリを公開して、他の人が独自のバージョンを作成できるようにする

以下の表は、さまざまなシナリオでのシークレットの名前と値の可視性を示しています：

| アクセス方法   | 誰が                               | 名前を見られる | 値を見られる |
| -------- | -------------------------------- | ------- | ------ |
| マルチプレイヤー | マルチプレイヤーコラボレーター                  | ✓       | ✓      |
| マルチプレイヤー | 組織メンバー（オーナーロール）                  | ✓       | ✓      |
| マルチプレイヤー | 組織メンバー（非オーナー）                    | ✓       |        |
| カバーページ   | すべての訪問者                          |         |        |
| リミックス    | 自分のReplitアプリをリミックスするオーナー/コラボレーター | ✓       | ✓      |
| リミックス    | Replitアプリをリミックスする非オーナー/コラボレーター   | ✓       |        |
| リミックス    | カバーページからリミックスする誰でも               | ✓       |        |
| 組織リミックス  | オーナーロールを持つ組織メンバー                 | ✓       | ✓      |
| 組織リミックス  | オーナーロールを持たない組織メンバー               | ✓       |        |

<Warning>
  オーナーロールを持たない組織メンバーはReplitアプリのシークレット値を表示できませんが、環境変数を出力することで値にアクセスできます。
</Warning>

## データベース関連のシークレット

ReplitのDatabaseを追加すると、プロジェクトエディターは自動的に以下のシークレットを作成します：

| シークレット         | 説明             |
| -------------- | -------------- |
| `DATABASE_URL` | SQLデータベース接続文字列 |

<Info>
  レガシーのNeon開発データベースには `PGHOST`、`PGUSER`、`PGPASSWORD`、`PGDATABASE`、`PGPORT` も含まれる場合があります。現在のReplit開発データベースは代わりに `DATABASE_URL` を使用します。
</Info>

ReplitアプリのすべてのEnvironment variableを表示するには、Shell プロジェクトエディターツールで `printenv` を実行するか、コードから出力してください。

## 定義済み環境変数

Replitはアプリからアクセスできる以下の環境変数を自動的に設定します：

| 環境変数                | 説明                                         |
| ------------------- | ------------------------------------------ |
| `REPLIT_DOMAINS`    | Replitアプリに関連付けられたすべてのドメインのカンマ区切りリスト        |
| `REPLIT_USER`       | マルチプレイヤーセッションでは異なる場合がある現在のエディターのユーザー名      |
| `REPLIT_DEPLOYMENT` | 公開済みアプリでコードが実行されている場合は `1` に設定、そうでない場合は未設定 |
| `REPLIT_DEV_DOMAIN` | デプロイメントURLとは異なる `replit.dev` ドメインの開発URL    |

これらはSecretsツールには表示されませんが、`os.environ` オブジェクトを使用するか、Shellで `printenv` を実行してコードからアクセスできます。
