変数

データに名前をつけて保存し、プログラム中で参照・変更できる仕組み

プログラミング基礎
変数」の技術書を見る (9 冊) →

変数とは

変数 (Variable) は、データに名前をつけて保存する仕組みである。プログラムの中で値を記憶し、後から参照したり変更したりできる。

宣言と代入

変数を使うには、まず宣言 (名前の登録) を行い、次に代入 (値の格納) を行う。多くの言語では宣言と代入を同時に行える。

// 宣言と代入を同時に行う
const name = "Alice";
let age = 15;

// 代入のみ (let で宣言済みの変数)
age = 16;

const と let の使い分け

TypeScript / JavaScript では constlet の 2 種類がある。

キーワード再代入用途
const不可変更しない値
let後から変更する値

原則として const を使い、再代入が必要な場合だけ let を使う。var は歴史的な理由で残っているが、スコープの挙動が直感的でないため使わない。

型と変数

静的型付け言語では、変数に格納できるデータの種類 (型) が決まっている。

const count: number = 42;       // 数値のみ
const message: string = "hello"; // 文字列のみ
const active: boolean = true;    // 真偽値のみ

TypeScript は型推論が働くため、明示的な型注釈を省略しても型が決まる。

const count = 42; // number と推論される

スコープ

変数には有効範囲 (スコープ) がある。関数の中で宣言した変数は、その関数の外からは参照できない。

function greet() {
  const msg = "hello"; // この関数の中だけで有効
  console.log(msg);
}
// console.log(msg); // ❌ エラー: msg は関数の外では参照できない

ブロック ({}) の中で letconst で宣言した変数も、そのブロックの外からは参照できない。

命名規則

変数名はコードの読みやすさに直結する。以下の慣習が広く使われている。

規則用途
camelCaseuserName変数、関数
PascalCaseUserProfileクラス、型
UPPER_SNAKEMAX_RETRY定数

名前は「何が入っているか」がわかるようにつける。xtmp のような曖昧な名前は避け、userAgeitemCount のように具体的にする。

ミュータブルとイミュータブル

変数の値を後から変更できるかどうかは、プログラムの安全性に大きく影響する。

// イミュータブル (変更不可)
const items = Object.freeze([1, 2, 3]);

// ミュータブル (変更可)
const list = [1, 2, 3];
list.push(4); // OK

イミュータブルな変数を多用すると、意図しない値の変更を防げるため、バグが減る。

他言語との比較

言語不変可変
TypeScriptconstlet
Rustデフォルト不変let mut
Python慣習のみ全て可変
Javafinal通常の宣言

Rust はデフォルトで不変であり、明示的に mut をつけない限り再代入できない。この設計は安全性を重視している。

よくある間違い

よくある間違いを以下にまとめる。

間違い問題対策
未初期化で参照undefined やエラー宣言時に初期値を設定
グローバル変数の乱用依存関係が不明瞭スコープを狭く保つ
意味のない名前可読性の低下具体的な名前をつける
const なのに中身を変更オブジェクトの中身は変更可能Object.freeze を使う

変数の設計と命名の考え方は関連書籍に詳しい。

この記事は役に立ちましたか?

関連用語

関連する記事