# 環境変数

> .env ファイルを使って、Daki Hosting でアプリケーションの環境変数を設定する方法。

環境変数を使うと、Discord ボットのトークンや API キーなどの設定値を、ソースコードに直接書かずにアプリケーションへ渡せます。Daki Hosting では、Portal のファイルマネージャーまたは SFTP を使って、サーバー上に **`.env` ファイル** を直接作成する方法をおすすめします。

## このページで学べること

- 環境変数とは何か、なぜ重要か
- サーバー上に `.env` ファイルを作成する方法
- Node.js と Python で `.env` の値を読み込む方法
- シークレットを安全に保つためのベストプラクティス

---

## 環境変数とは？

環境変数は、実行中のアプリケーションが自身の環境から読み取れるキーと値のペアです。次の用途に使われる標準的な方法です:

- 機密性の高い値（トークン、API キー、パスワード）をコードと分けて保存する
- ソースファイルを変更したり再デプロイしたりせずに、設定を変更する
- シークレットをバージョン管理にコミットしないようにする

---

## `.env` ファイルの作成

Daki で環境変数を管理する最も簡単で確実な方法は、サーバー上に `.env` ファイルを作成することです。方法は 2 つあります:

### 方法 1: ファイルマネージャーを使う（簡単な編集）

1. Portal（[portal.daki.cc](https://portal.daki.cc)）でサーバーを開きます。
2. **Files** タブを開きます。
3. **New File** をクリックし、`.env` と名前を付けます。
4. ファイルをクリックして Web エディターで開き、変数を追加します:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. **Save** をクリックします。
6. サーバーを再起動します。

### 方法 2: SFTP を使う（初期セットアップにおすすめ）

SFTP（認証情報は **Settings** タブにあります）でサーバーに接続し、ローカルマシンから `.env` ファイルを直接アップロードします。SFTP の設定方法は [ファイルマネージャー](https://daki.cc/ja/wiki/guides/file-manager) を参照してください。

> **注意:** `.env` ファイルを公開の Git リポジトリに絶対にコミットしないでください。シークレットが誤って公開されないように、`.env` を `.gitignore` ファイルに追加してください。

---

## アプリケーションで `.env` の値を読み込む

アプリケーションは `.env` ファイルを自動では読み込みません。環境に読み込むためのライブラリが必要です。

**Node.js (dotenv)**

パッケージをインストールします（`package.json` に依存関係として追加します）:
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
エントリーファイルの一番上で読み込みます:
```js
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const port  = process.env.PORT || 3000;
```

**Python (python-dotenv)**

`python-dotenv` を `requirements.txt` に追加します:
```
python-dotenv
```
エントリーファイルの先頭で読み込みます:
```python
from dotenv import load_dotenv
import os

load_dotenv()

token = os.environ.get("BOT_TOKEN")
port  = int(os.environ.get("PORT", 3000))
```

---

## `.env` ファイルの形式

`.env` ファイルの各行は `KEY=VALUE` の形式に従います:

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- キーは通常、大文字とアンダースコアで書きます。
- 値は引用符で囲む必要はありませんが、引用符も使えます。
- `#` で始まる行はコメントで、無視されます。

---

## ベストプラクティス

- トークンやシークレットを**ソースコードに直接書かない**でください。特にコードが GitHub にある場合は注意してください。
- **`.env` を `.gitignore` に追加**して、誤ってコミットされないようにします。
- **`.env` ファイルはローカルではなくサーバー上で作成**してください。または、バージョン管理から除外したローカルの `.env` を SFTP でアップロードしてください。
- `.env` ファイルの作成・変更後は、**サーバーを再起動**してください。
- 設定を見ただけで内容が分かる、**分かりやすいキー名**を使ってください。

---

## 次のステップ

- [起動設定](https://daki.cc/ja/wiki/guides/startup-settings) — インストールコマンド、起動コマンド、Docker イメージ を設定します。
- [Discord.js ボットをデプロイ](https://daki.cc/ja/wiki/guides/deploy-discordjs) — トークンの設定を含む、完全なデプロイの手順。
- [Python ボットをデプロイ](https://daki.cc/ja/wiki/guides/deploy-python) — トークンの設定を含む、完全なデプロイの手順。

---
Source: https://daki.cc/ja/wiki/guides/environment-variables
