変数

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

プログラミング基礎

変数とは

変数 (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 で宣言した変数も、そのブロックの外からは参照できない。

命名規則

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

規則 用途
camelCase userName 変数、関数
PascalCase UserProfile クラス、型
UPPER_SNAKE MAX_RETRY 定数

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

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

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

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

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

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

他言語との比較

言語 不変 可変
TypeScript const let
Rust デフォルト不変 let mut
Python 慣習のみ 全て可変
Java final 通常の宣言

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

よくある間違い

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

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

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

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

関連用語

関連する記事