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

# Replitアプリの設定

> .replitおよびreplit.nixファイルを使用してReplitアプリを設定する方法を学びましょう。

Replitアプリは2つのファイル（`.replit`と`replit.nix`）で設定されます。これらのファイルは、コードの実行から開発ツールや言語まで、Replitアプリの動作に影響を与えます。

これらの設定ファイルはデフォルトで非表示になっています。ファイルツリーメニューから「Show hidden files」を選択して、Replitアプリに表示させてください。

<Frame>
  <img src="https://mintcdn.com/replit/rBzGsKp9NcWJ7sib/images/getting-started/show-hidden-files.png?fit=max&auto=format&n=rBzGsKp9NcWJ7sib&q=85&s=847e381d949d2432e58079ec166f1c08" alt="隠しファイルを表示する画面" width="530" height="488" data-path="images/getting-started/show-hidden-files.png" />
</Frame>

## `replit.nix` ファイル

Replitはパッケージと環境を管理するために`Nix`を使用します。`replit.nix`ファイルは以下の目的で使用されます：

**システム依存関係の指定：** パッケージマネージャーであるNixで管理される、Replitアプリに必要なソフトウェアパッケージを正確に定義します。

**再現可能な環境の作成：** 開発環境が一貫して再現可能であることを確保し、共同プロジェクトや複数のシステムでのテストに最適です。

`Dependencies`ツールを通じてNixパッケージを視覚的に管理できます。詳しくは[システム依存関係](/references/project-setup/dependency-management#system-dependencies)ガイドをご覧ください。

`replit.nix`ファイルでパッケージを設定するには、`deps`配列に`pkgs.`プレフィックスを付けて[Nixパッケージ](https://search.nixos.org/packages)を列挙できます。変更はシェルを再読み込みした後に同期されます。

```nix theme={null}
{ pkgs }: {
  deps = [
    pkgs.nodejs-19_x
    pkgs.nodePackages.typescript-language-server
    pkgs.yarn
    pkgs.replitPackages.jest
  ];
}
```

## `.replit` ファイル

`.replit`ファイルはReplitアプリの動作を制御します。`toml`[設定形式](https://toml.io/en/)を使用します。設定できる主な項目を以下に示します：

**実行コマンド：** Runボタンを選択したときに実行されるコマンドを指定します。各テンプレートにはコードをすぐに実行できるデフォルトの実行コマンドがあります。より高度なアプリには[Workflows](/references/workspace-tools/workflows)を使用してください。

**Language Server Protocol（LSP）：** オートコンプリート、コードナビゲーション、コードハイライト、リアルタイムのリントとエラー表示などの機能を提供します。

**環境変数：** アプリを正しく動作させるために必要な環境変数を設定・管理します。

**依存関係とパッケージ：** `.replit`ファイルを通じてパッケージのインストールと設定を直接管理し、起動時にReplitアプリが必要なツールをすべて準備できるようにします。`Dependencies`ツールを通じて依存関係を視覚的に管理できます。詳しくは[システムモジュール](/references/project-setup/dependency-management#advanced-configuration)ガイドをご覧ください。

Pythonアプリケーションのデフォルト`.replit`ファイルは次のようになります：

```toml theme={null}
entrypoint = "main.py"
modules = ["python-3.10:v18-20230807-322e88b"]

[nix]
channel = "stable-23_05"

[unitTest]
language = "python3"

[gitHubImport]
requiredFiles = [".replit", "replit.nix"]

[deployment]
run = ["python3", "main.py"]
deploymentTarget = "cloudrun"
```

以下の表は、`.replit`ファイル内の各設定の概要を示し、各設定がReplitアプリ環境に与える影響を説明しています。

| **設定キー**                                        | **値/例**                                | **説明**                                                                                                             |
| ----------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| <a name="entrypoint" />`entrypoint`             | `main.py`                              | エディターを開いたときにデフォルトで実行・表示されるメインファイルを指定します。アプリケーションに合わせてファイル名を変更できます。                                                 |
| <a name="modules" />`modules`                   | `["python-3.10:v18-20230807-322e88b"]` | Replitがサポートするプログラミング言語やその他の主要な依存関係の特定のバージョンを定義します。                                                                 |
| <a name="nix" />`[nix]`                         |                                        | システム依存関係を管理するパッケージマネージャーNixの使用設定を指定します。詳しくは[依存関係管理](/references/project-setup/dependency-management)ドキュメントをご覧ください。 |
| <a name="channel" />`channel`                   | `stable-23_05`                         | 使用するNixチャンネルを指定し、利用可能なシステム依存関係のバージョンに影響します。                                                                        |
| <a name="packages" />`packages`                 | `["cowsay", "htop"]`                   | インストールするNixパッケージを指定します。より細かい制御には`replit.nix`も使用できます。                                                               |
| <a name="unitTest" />`[unitTest]`               |                                        | Replitアプリ内のユニットテストに関連する設定を構成します。                                                                                   |
| <a name="language" />`language`                 | `python3`                              | ユニットテストに使用する言語を指定し、Python 3がテストに使用されることを示します。                                                                      |
| <a name="gitHubImport" />`[gitHubImport]`       |                                        | GitHubからプロジェクトをインポートする方法に影響する設定。特に含める必要があるファイルを指定します。                                                              |
| <a name="requiredFiles" />`requiredFiles`       | `[".replit", "replit.nix"]`            | プロジェクトを正しく機能させるためにインポート時に存在する必要があるファイルを列挙します。                                                                      |
| <a name="deployment" />`[deployment]`           |                                        | ReplitアプリからライブEnvironmentへのアプリケーションデプロイメントの設定を含みます。                                                                |
| <a name="run" />`run`                           | `["python3", "main.py"]`               | デプロイメント中にアプリケーションを起動するために実行されるコマンド。                                                                                |
| <a name="deploymentTarget" />`deploymentTarget` | `cloudrun`                             | アプリケーションをホストするデプロイメントターゲットプラットフォームを指定します。                                                                          |

`.replit`ファイルのデフォルト設定を理解したら、次のセクションでReplitアプリの基本設定と高度な設定の方法を確認してください。

## 基本設定の構成

### エントリーポイント

これはプロジェクトのメインファイルです。`run`プロパティを定義しない場合、`entrypoint`がランタイムによって実行されるファイルになります。

```toml theme={null}
entrypoint = "<file-name>.py"
```

### `Run`コマンド

`.replit`ファイルの`run`プロパティは、Replit環境で`Run`ボタンを選択したときに実行される最初のコマンドまたは一連のコマンドを決定する重要な機能です。`Run`コマンドは、実行するコマンドを表す文字列、またはコマンドとその引数を表す文字列の配列として指定できます。

`Run`コマンドを設定する一般的な方法：

* **単一コマンド：**
  この例は、Replitアプリで直接実行する単一コマンドを渡す方法を示しています。この設定で`Run`ボタンを押すと、`Console`ペインにグリーティングが表示されます：
  **例：** `run = "echo 'Hello, Replit!'"`

* **明示的な引数：**
  状況によっては、引用符やシェル補間ルールの解析を避けるために、より明示的にすることが有益な場合があります。引数を分離して上記の例を書き直すことができます。
  グリーティングを`echo`の最初で唯一の引数として明示的に渡しているため、`'`と`"`の両方は不要になります：
  **例：** `run = ["echo", "Hello, Replit!"]`

* **複数コマンド：**
  この例は、フロントエンドとバックエンドなど複数のプロセスを同時に実行する方法を示しています。各サーバーが異なるポートにバインドするPythonバックエンドとTypeScriptフロントエンドを開発する場合に役立ちます：
  **例：** `run = "python -m app & npm run start & wait"`

#### プロセス管理

`&`で複数のコマンドを同時に実行できますが、サービス間のログを区別するためにより良いエクスペリエンスが必要な場合があります。[システム依存関係を追加](/references/project-setup/dependency-management#system-dependencies)して、[`process-compose`](https://github.com/F1bonacc1/process-compose)などのツールで複数のプロセスをより適切にオーケストレーションできます。

#### `Build`フェーズ

一部の言語やランタイムでは、コードを`run`する前に別のコンパイルフェーズがあります。これは、TypeScript、Golang、Javaなどのコンパイル言語を対象とするほか、次の`run`が実行される前に環境、データ、設定をリセットするためのパラメーターを提供します。

* **コンパイル：**
  TypeScriptリポジトリでは、コードを実行する前に`tsc`を実行する必要がある場合があります。
  **例：**

```toml theme={null}
build = "tsc app.ts"
run = "node app.js"
```

#### 環境変数の設定

実行前にサービスに環境変数を提供するには、`run`プロパティを[テーブル](https://toml.io/en/v1.0.0#table)に展開できます。

これはより複雑な変更であり、`.replit`ファイル内の`run = "..."`プロパティの位置を移動する必要がある場合があります。

以下のdiffは、`[run]`の`args`でコマンドを指定し、`[run.env]`で変数`NAME`を指定する方法を示しています：

```diff theme={null}
-run = ["bash", "-c", "echo \"Hello, $NAME!\""]

 modules = ["nodejs-20"]

 hidden = [".pythonlibs"]

+# We need to move our new [run] down past all the
+# top-level properties that do not start with a `[`!
+[run]
+args = ["bash", "-c", "echo \"Hello, $NAME!\""]
+
+[run.env]
+NAME="Replit"

 [nix]
 channel = "stable-23_11"
```

#### インタラクティビティ

インタラクティブなプログラムも`Run`ボタンから起動でき、プログラムが実行されているターミナルと開発環境を区別する方法を提供します。
以下のカウントスクリプトを考えてみましょう：

**例**

```toml theme={null}
[run]
args = ["bash", "-c", """
count=0
while read -p "$PROMPT" -r next && [ -n "$next" ]; do
    count=$((count+next))
done
echo "The numbers you entered sum to $count!"
"""]

[run.env]
PROMPT = "Next number ([Enter] to end): "
```

## 高度な設定オプション

Replitアプリで利用可能な詳細な設定オプションを確認しましょう。開発環境のカスタマイズ、実行コマンドの管理、言語サービスの統合、依存関係の処理が可能です。

| **設定**     | **キー**                              | **値/例**                                     | **説明**                                      |
| ---------- | ----------------------------------- | ------------------------------------------- | ------------------------------------------- |
| onBoot     | <a name="onBoot" />`onBoot`         | `onBoot = "npm install"`                    | Replitアプリが起動したときに実行されるコマンド。                 |
| compile    | <a name="compile" />`compile`       | （デフォルト例なし）                                  | `run`コマンドの前に実行されるコマンド。C++などのコンパイル言語で使用されます。 |
| language   | <a name="language" />`language`     | `language = "javascript"`                   | GitHubインポート時またはReplitアプリ作成時の言語を指定します。       |
| entrypoint | <a name="entrypoint" />`entrypoint` | `entrypoint = "index.js"`                   | エディターを開いたときに実行・表示されるメインファイル。                |
| hidden     | <a name="hidden" />`hidden`         | `hidden = [".config", "package-lock.json"]` | サイドのファイルツリーでデフォルトで非表示にするファイルまたはフォルダー。       |
| audio      | <a name="audio" />`audio`           | `audio = true`                              | `true`に設定するとシステム全体のオーディオを有効にします。            |

### システム全体のオーディオに関する注意

`.replit`ファイルで`audio = true`を設定する場合、新しい設定を有効にするためにシェルで`kill 1`を実行する必要がある場合があります。

グラフィカルアプリケーションを実行する場合、`Output`ペインの右下にチェックボックス付きのヘッドフォンアイコンが表示されます。
ブラウザの制限により、更新するたびにこれを有効にする必要があります。

```toml theme={null}
# Ensure this is at the top of your `.replit` file, outside of any `[`-bracketed section
audio = true
```

## パッケージャーの設定

| **設定**            | **キー**                                            | **値/例**                                       | **説明**                                         |
| ----------------- | ------------------------------------------------- | --------------------------------------------- | ---------------------------------------------- |
| packager          | <a name="language" />`language`                   | `packager.language = "python3"`               | パッケージ操作に使用する言語。                                |
| packager features | <a name="guessImports" />`guessImports`           | `packager.features.guessImports = true`       | Replitアプリを実行する前にインストールするパッケージを自動的に推測します。       |
| packager features | <a name="packageSearch" />`packageSearch`         | `packager.features.packageSearch = true`      | `true`に設定するとパッケージャーのサポートを有効にします。               |
| packager features | <a name="enabledForHosting" />`enabledForHosting` | `packager.features.enabledForHosting = false` | ReplitアプリのホスティングにパッケージインストールのRunが必要かどうかを設定します。 |
| packager          | <a name="afterInstall" />`afterInstall`           | `afterInstall = "echo 'package installed'"`   | パッケージャーで新しいパッケージがインストールされた後に実行されるコマンド。         |
| packager          | <a name="ignoredPaths" />`ignoredPaths`           | `ignoredPaths = [".git"]`                     | パッケージを推測しようとするときに無視するパス。                       |
| packager          | <a name="ignoredPackages" />`ignoredPackages`     | `ignoredPackages = ["twitter", "discord"]`    | インストール時にパッケージの推測を試みないモジュール。                    |

### パッケージャー設定の`.replit`設定例

```toml theme={null}
# Define the language for the Replit App
packager.language = "python3"

# Enable features for automatic package management
[packager.features]
guessImports = true
packageSearch = true
enabledForHosting = false

# Command to run after each package installation
packager.afterInstall = "echo 'Package installed successfully'"

# Define paths and packages that should be ignored by the package manager
packager.ignoredPaths = [".git", "node_modules"]
packager.ignoredPackages = ["twitter", "discord"]

# Additional deployment settings
[deployment]
run = ["python3", "app.py"]
```

## デプロイメントの設定

| **設定**     | **キー**                                | **値/例**                              | **説明**                                   |
| ---------- | ------------------------------------- | ------------------------------------ | ---------------------------------------- |
| deployment | <a name="run" />`run`                 | `deployment.run = "npm start"`       | デプロイメントコンテナー起動時に実行されるコマンド。               |
| deployment | <a name="build" />`build`             | `deployment.build = "npm run build"` | デプロイメントを実行する前に実行されるコマンド。                 |
| deployment | <a name="ignorePorts" />`ignorePorts` | `deployment.ignorePorts = true`      | `true`の場合、デプロイメントの成功にオープンポートの確認が不要になります。 |

### デプロイメント設定の`.replit`設定例

```toml theme={null}

# Specifies the main entry point for the project
entrypoint = "app.js"

# Configuration settings for deploying the application
[deployment]
run = "npm start"
build = "npm run build"
ignorePorts = true
```

<Note>
  **インタープリターの設定**は非推奨となり、Replitでは利用できなくなりました。代わりに、`Run`コマンドを使用してReplitアプリ環境内でスクリプトとアプリケーションをどのように実行するかを設定することをお勧めします。
</Note>

## ポートの設定

| **設定** | **キー**                                  | **値/例**             | **説明**                          |
| ------ | --------------------------------------- | ------------------- | ------------------------------- |
| ports  | <a name="localPort" />`localPort`       | `localPort = 3000`  | Replitが外部ポートにバインドするポート。         |
| ports  | <a name="externalPort" />`externalPort` | `externalPort = 80` | `localPort`にリンクされた公開アクセス可能なポート。 |

### ポート管理のための`.replit`設定ファイルの例

```toml theme={null}
# Networking configuration to expose your application on specific ports
[[ports]]
localPort = 3000
externalPort = 80
```

## Replitアプリの環境メタデータへのアクセス

### Node.js

すべての環境変数にアクセスするには：

`console.log(process.env);`

単一の変数（REPL\_SLUG）にアクセスするには：

`console.log(process.env.REPL_SLUG);`

### Python

すべての環境変数にアクセスするには：

```python theme={null}
import os
print(os.environ)
```

単一の変数（REPL\_SLUG）にアクセスするには：

```python theme={null}
import os
variable = os.environ.get('REPL_SLUG')
print(variable)
```

### Rust

すべての環境変数にアクセスするには：

```rust theme={null}
use std::env;
fn main() {
    for (key, value) in env::vars() {
        println!("{}: {}", key, value);
    }
}
```

単一の変数（REPL\_SLUG）にアクセスするには：

```rust theme={null}
use std::env;
fn main() {
    let variable = env::var("REPL_SLUG").unwrap();
    println!("{}", variable);
}
```

## 環境変数

以下はReplitアプリ内からアクセスできる環境変数です：

| キー                                                | 説明                                                                                                 |
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| <a name="REPL_OWNER" />`REPL_OWNER`               | Replitアプリのオーナーのユーザー名。Replitアプリがテキストベースでウェブサーバーがない場合、`REPL_OWNER`はReplitアプリにアクセスしている現在のユーザーの値を反映します |
| <a name="REPL_ID" />`REPL_ID`                     | Replitアプリの一意のUUID文字列                                                                               |
| <a name="HOME" />`HOME`                           | Replitアプリのホームパス                                                                                    |
| <a name="system" />`system`                       | Replitアプリで動作しているオペレーティングシステム                                                                       |
| <a name="LANG" />`LANG`                           | Replitアプリの言語と文字エンコードを設定し、テキストの処理と表示方法に影響します                                                        |
| <a name="REPL_IMAGE" />`REPL_IMAGE`               | Replitアプリに対応するDockerイメージ                                                                           |
| <a name="REPL_LANGUAGE" />`REPL_LANGUAGE`         | Replitアプリに設定されたプログラミング言語。ランタイム環境とツールを決定するために使用されます                                                 |
| <a name="REPL_PUBKEYS" />`REPL_PUBKEYS`           | さまざまな公開APIキーを含む文字列化されたJSONオブジェクト                                                                   |
| <a name="REPL_SLUG" />`REPL_SLUG`                 | URLやファイル名で使用するのに適した、Replitアプリの名前のシンプルで機械可読なバージョン                                                   |
| <a name="PRYBAR_FILE" />`PRYBAR_FILE`             | Replitアプリのメイン/エントリーポイントファイル                                                                        |
| <a name="REPLIT_DEV_DOMAIN" />`REPLIT_DEV_DOMAIN` | プロジェクトエディターのReplitアプリに`replit.dev` URLを提供します。この環境変数はデプロイメントでは利用できません                               |
