.env移植性事前チェック
.envファイルを貼り付け、Nodeのdotenv、Docker/Docker Compose、POSIXシェルで値の解釈が異なる、または失敗する箇所を確認します。実際の.envには秘密情報が含まれることが多いため、すべてブラウザー内で処理し、貼り付けた内容をアップロード、記録、送信しません。
ブラウザー内でローカルに処理します。ファイルがアップロードされることはありません。
使い方 ツール
- .envの内容または代表的な一部を貼り付けます。解析はブラウザー内で行われ、実際の秘密値はこのページから送信されません。
- 「.envファイルを確認」を選びます。
- 指摘された各行について、曖昧さ・リスクとdotenv、Docker Compose、POSIXシェルの差を確認します。
- 安全な書き換え案を適用します。閉じていない引用符、重複キー、展開参照、不正キー名は推測の方が危険なため手動対応として残します。
前提条件
- dotenv、Docker Compose env_file、POSIXシェルで使われる一般的形式として、1行にKEY=value、`#`で始まるコメント、空行を想定します。
- 値が引用符付きとみなされるのは、対応する一組の一重または二重引用符で始まり終わる場合のみです。ほかの位置の孤立引用符は閉じていない引用符検査の対象です。
- 重複キー、変数展開参照、不正キー名の意図を推測せず、黙って解決しません。
出典と参考データ
方法論
各行をキー、未加工値、引用符の有無に分け、dotenv、Docker/Docker Compose、POSIXシェルで文書化された差を確認します:引用符なし空白や`#`、`export`接頭辞、閉じていない引用符、dotenv-expandを使わない場合の`$VAR`/`${VAR}`、最後の重複キーによる上書き、dotenvでは保持されシェルexportでは削除される末尾空白、POSIXシェル識別子として無効なキー名。値を引用する、末尾空白を削除する、exportを除去する場合のみ安全な書き換えを提案し、意図を推測しません。
計算例
別の変数を参照する値
入力項目: API_URL=${BASE_URL}/api
結果: 別途dotenv-expandを使わない限り、dotenvは`${BASE_URL}`を既定で展開せず文字列のままAPI_URLに入れます。一方POSIXシェルとDocker Composeは展開します。意図を推測できないため警告し、変換しません。
export接頭辞
入力項目: export APP_NAME=My Example App
結果: POSIXシェルでは有効ですが、dotenvとDocker Composeではexportの扱いが異なり、拒否またはキー名に含める場合があります。警告し、dotenvで一般的な単純形式にするため安全に接頭辞を削除します。値中の引用符なし空白は別の重大度の高い問題として指摘します。
重複キー
入力項目: TIMEOUT=30 TIMEOUT=60
結果: dotenvを含む多くのパーサーは最後の値だけを黙って保持し、TIMEOUT=30を破棄します。2回目の行を警告し、上書き元の行を示します。
実用的なアドバイス
- 空白または`#`を含む値は、dotenv単体では引用符なしでも読める場合であっても引用符で囲みます。シェルから直接読み込む場合やDocker Composeでも揃いやすくなります。
- .env内の$VAR/${VAR}参照は、すべての利用側で同じように展開することを確認できない限り避けてください。
- dotenv系ツールとの互換性に`export`接頭辞を頼らず、KEY=value形式を使います。直接シェルで読み込む必要があればラッパースクリプトを使ってください。
よくある間違い
- アプリが起動する値なら移植可能と思うこと。引用符なし空白、未展開参照、重複キーの上書きは、誤った値でも正常に読み込まれる場合があります。
- .envキー名を自由なラベルとして扱うこと。ハイフンや数字始まりはdotenvのような寛容なパーサーが受け入れても、実際のシェルから読むと失敗します。
よくある質問
本物の秘密値をこのツールへ貼っても安全ですか?
解析はすべてブラウザー内で実行し、貼り付け内容をアップロード、記録、送信しません。このページ独自の分析・テレメトリーも追加しません。それでも、値を貼ることに不安がある場合は同じ形(長さ・特殊文字)を持つプレースホルダーを使ってください。検査するのは構文で、値の意味ではありません。
引用符なしの空白はエラーで末尾空白は情報扱いなのはなぜ?
値の途中の引用符なし空白はPOSIXシェルや厳格なDocker Composeパーサーで代入を壊す機能上の問題です。通常の値の後の末尾空白はdotenvが余分な文字を読むリスクですが、致命的であることは少なく安全に削除できます。
重複キーや不正キー名を修正しないのはなぜ?
重複したどちらの値が正しいか、不正キー名をどう直すかは意図を決める必要があります。推測してファイルを黙って変更するより問題を示して利用者に決めてもらいます。
`${BASE_URL}`はComposeで展開されるのにNode dotenvで文字列のままなのはなぜ?
Docker ComposeはCompose設定内の変数展開を行いますが、`dotenv`パッケージは既定で展開しません。Nodeで展開するには通常`dotenv-expand`などの追加パッケージが必要です。正確な動作はファイルと利用側で異なります。この事前チェックは構文上の移植性リスクを示すもので、Composeやdotenvを実行しません。
最終確認日: 2026-09-25
完全なシェルまたはDocker Composeパーサーではなく、一般的なKEY=value/コメント/空行形式と列挙した差だけを検査します。閉じていない引用符、展開参照、重複キーなど本当に曖昧な意図を判断せず、問題を報告します。
テーマとツールの設定、保存済みリストと最近使用したリストは、このブラウザー内にのみ保存されます。