変数
Variable
変数は、値に名前を付けて、プログラムから参照できるようにする仕組みです。「名前付きの箱」は便利な比喩ですが、言語によって値の保持や参照の方法は異なり、必ず一つの独立した物理メモリ箱に対応するわけではありません。
🐾 猫で例えると?
ベッドを名前付きの置き場所、そこにいる猫を値に見立てます。ただし猫が現実に移動しただけでプログラムの値が自動更新されるわけではありません。変数の値を変えるには、代入などの処理を行います。
💻 開発現場における「変数」とは?
変数はプログラミングの最初の一歩でありながら、システムの品質を大きく左右する重要な要素です。現場では、データの計算、APIから取得した情報の保持、画面の表示状態の管理など、あらゆる場面で変数が使われます。
変数には必ず「名前(変数名)」を付けますが、この命名がエンジニアの腕の見せ所です。例えば x や a といった適当な名前ではなく、userId や totalPrice のように、誰もが「その箱に何が入っているか」を一目で理解できる名前を付けることが、保守性の高いコードを書くための大前提となります。
⚠️ 変数の仕組みと注意点
変数を扱う上で特に注意すべきは「スコープ(有効範囲)」と「値の再代入」です。変数はどこからでも読み書きできるわけではなく、関数の中だけで使えるローカル変数と、プログラム全体からアクセスできるグローバル変数があります。グローバル変数を多用すると、どこで値が書き換えられたか分からなくなり、深刻なバグを引き起こします。
let currentStatus = "お昼寝中";
const catName = "アメショ";
currentStatus = "おやつを要求"; // letは再代入できる
console.log(`${catName}:${currentStatus}`);
const cat = { status: "お昼寝中" };
cat.status = "遊ぶ"; // constでもオブジェクト内部は変更できる JavaScriptでは再代入が不要な名前にconstを使うと、意図しない置き換えを防げます。ただし配列やオブジェクトの内容は別です。二つの変数が同じオブジェクトを指すと、一方からの変更がもう一方にも見えることがあります。
🛠️ 変数を賢く使うためのポイント
変数を安全かつ効果的に扱うためのルールをチーム全体で統一することが重要です。
- 意味と単位が分かる名前: delayMsのように単位まで示すと、秒とミリ秒の取り違えを防げます。短いループのiなど、文脈上明確な短い名前まで機械的に禁止する必要はありません。
- スコープを最小限にする: 変数が影響を及ぼす範囲(有効範囲)をできるだけ狭く保ち、予期せぬ場所からの書き換えを防ぎます。
- 再代入と中身の変更を区別: constを使っても、共有するオブジェクトの変更は起こり得ます。どの処理がデータを書き換えるかを明確にし、必要な場所では新しい値を返す設計を選びます。
アメショが入るベッドを値の置き場所に見立てたら、変数名はその用途を示す札です。何の値か分かる名前を付け、値が変わる場所と使う範囲を絞ると、処理を追う人が途中の状態を理解しやすくなります。