【はーどこーでぃんぐ】

ハードコーディング とは?

最終更新:
💡 コードに固定する値は、変更と秘密を考える

設定値や動作をソースコードに固定して記述すること。特に環境ごとに変わる値や秘密情報の埋め込みは問題になります。すべての定数が悪いわけではなく、変更の必要性と情報の性質で判断します。

📌 このページのポイント
ハードコーディング:値の性質で判断接続先をコードに固定する例const API_URL = …名前を付けても、変更にはコード修正が必要外部の設定環境に応じて用意値の検証も必要秘密情報権限・配布・失効外に置くだけでは不十分変わらない内部の規則はコードに置くこともある環境の設定と、内部の規則を分ける名前付き定数も、値の固定は残る
環境で変わる設定、秘密情報、内部の規則を分けて判断します。外部化の工程ではなく、外部の秘密にもアクセス制限や失効などの管理が必要です。
ひよこ ひよこ
ハードコーディングって何?
ペンギン先生 ペンギン先生
接続先や設定値などを、コードの中に固定して書くことだよ。開発用のURLを固定して本番で変える必要があれば、コードを修正することになる。どんな値を固定しているかが大切なんだ。
ひよこ ひよこ
定数に名前を付ければ解決?
ペンギン先生 ペンギン先生
名前を付けると意味は分かりやすくなる。でもconst API_URLの値をコードに書いたままなら、接続先はまだ固定されているよ。読みやすさと、環境ごとの変更のしやすさは別の問題なんだ。
ひよこ ひよこ
全部の値を外部に出すべき?
ペンギン先生 ペンギン先生
そうとは限らない。環境ごとに変わらない内部の規則などはコードで表すこともある。変わる設定は環境変数や設定ファイルなどに分け、秘密情報はアクセスを制限した管理の仕組みで扱おう。外部化しても入力の検証は必要だよ。
ひよこ ひよこ
秘密を.envへ移せば安全?
ペンギン先生 ペンギン先生
ファイルや環境変数を読める人やプロセスには見えるので、それだけでは安全とは言えない。.envなどの実際の秘密が入るファイルを公開しないこと、読み取り権限やログへの出力も確認しよう。ブラウザに配るコードへ入れる秘密も隠せないんだ。
ひよこ ひよこ
誤って公開したらコードを消せばよい?
ペンギン先生 ペンギン先生
消すだけでは、履歴やコピーに秘密が残るかもしれない。まず影響を調べて漏洩した認証情報を失効・更新し、履歴や配布物、利用状況も確認する。秘密管理の仕組みと権限を見直して再発を防ごう。
もっと詳しく知りたい人へ

設定ファイルに置けば秘密管理も完了?

公開リポジトリや配布物に含めれば、外部ファイルでも秘密は漏れます。読み取り権限、暗号化、取得時の認証、ローテーション、ログに残さないことなどを確認します。秘密の置き場所を変えるだけでなく、ライフサイクルを管理する必要があります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハードコーディング」って出てきたら「コードへの固定記述」と思えばだいたいOK!
📖 おまけ:英語の意味
「Hardcoding / Hard-coding」 = コードへの固定記述
💬 ここでは値や振る舞いをコードに直接固定することです。すべての固定値を同じ危険として扱わず、変更の必要性と公開してよい情報かを確かめます。

参考資料

← 用語集にもどる