定数
Constant
プログラムの実行中に、一度決めたら後から値を書き換えられない固定の値(データ)のこと。税率や円周率など、途中で変わってはいけない重要なデータを安全に管理するために使用します。
🐾 猫で例えると?
写真に写る茶トラとアメショのツーショット。この圧倒的な可愛さは、昨日も今日も明日も決して変わることのない「真理」です。ITの世界にも、このように「一度決まったら絶対に変わらない(変えてはいけない)値」が存在し、それを「定数(Constant)」と呼びます。プログラムの中で「猫=可愛い」と定数で定義しておけば、誰かが間違って「猫=怖い」と書き換えようとしても、システムがエラーを出して強固に守ってくれます。
🐾猫あるある:IT現場の日常
- 「猫は可愛い」という不変の真理: プログラムの実行中に一度代入されたら、後から値を上書きしたり変更したりすることができない不変のデータ。
- 「ご飯は朝7時」という絶対厳守の固定値: セッションの有効期限やAPIの最大リトライ回数など、システム全体で共通して参照される静的な設定値。
- 「私は猫である」という自身の識別名: エラーコードの文言や環境変数のキー名など、コード内で一意に定義され、変更すると動作に影響を及ぼす重要な文字列。
💻 プログラミングにおける「定数」とは?
プログラミングにおいて、データを一時的に入れておく箱を「変数(Variable)」と呼ぶのに対し、一度値を入れたら二度と中身を取り替えられない「鍵付きの箱」が「定数(Constant)」です。JavaScriptでは const、Javaでは final といったキーワードを使って宣言します。
なぜわざわざ書き換えられない箱を用意するのでしょうか?それは、予期せぬバグを防ぐためです。複雑なプログラムでは、様々な処理が連鎖してデータを操作します。もし「消費税率」を変数に入れておくと、どこかの処理が誤って「0.1」を「0.5」に書き換えてしまう事故が起こるかもしれません。定数を使えば、そうした意図しない上書きをシステムレベルでブロックできます。
⚠️ 定数のメリットとマジックナンバーの排除
定数を使う最大のメリットは「安全性の向上」と、コードの「保守性の高さ」にあります。
マジックナンバー(意味不明な数字)を無くす
ソースコードの中に直接 0.1 や 3 といった数字を書くことを「マジックナンバー」と呼び、現場では嫌われます。これを定数に置き換えることで、コードの意図が劇的に読みやすくなります。
// JavaScriptでの例
// 悪い例:3って何?マジックナンバーの直書き
if (retryCount >= 3) {
showError();
}
// 良い例:定数を使って意味を持たせる(書き換えも防げる)
const MAX_LOGIN_RETRY = 3;
if (retryCount >= MAX_LOGIN_RETRY) {
showError();
}
// もし後から誤って値を上書きしようとすると...
MAX_LOGIN_RETRY = 5; // TypeError: Assignment to constant variable.(エラーで守られる!) また、もし将来仕様変更で「上限を5回にしてほしい」と言われた場合も、定数 MAX_LOGIN_RETRY の定義箇所を1つ書き換えるだけで、システム全体の挙動を安全に変更することができます。
🛠️ 「定数」を賢く使うためのポイント
現場で定数を定義・利用する際の一般的なルールや注意点は以下の通りです。
- 命名規則を守る(大文字スネークケース): 一般的に、定数名は
TAX_RATEやMAX_COUNTのように「すべて大文字とアンダースコア(スネークケース)」で記述し、一目で定数(書き換え不可)だと分かるようにします。 - スコープ(有効範囲)を意識する: アプリ全体で共通して使う定数(グローバル定数)なのか、特定の関数内だけで使う定数なのかを設計し、適切なファイルや位置で一元管理しましょう。
- 配列やオブジェクトの罠に注意: JavaScriptの
constは「変数の再代入」を防ぎますが、配列やオブジェクトの「中身(プロパティ)」は書き換えられてしまいます。中身まで完全に固定したい場合は、Object.freeze()などを活用する必要があります。
「猫は可愛い」という揺るぎない事実のように、システムの中で決してブレない軸を作ってくれる「定数」。変更を防ぐ鍵付きの箱をうまく使って、バグのない安全で読みやすいコードを書きましょう。