マジックナンバーとマジック文字列を避ける

入門 | 7分 で読める | 2026.06.18

公式ドキュメント

マジックナンバーとは、意味が分からないままコードに直接書かれた数値のことです。

同じように、意味が分からない文字列をマジック文字列と呼ぶことがあります。

一言でいうと

マジックナンバーやマジック文字列は、値の意味を名前で説明していない状態です。

値そのものは正しくても、読み手が「なぜこの値なのか」を理解できなければ、変更時に事故が起きます。

悪い例

function canRetry(count: number) {
 return count < 3;
}

function isAdmin(role: string) {
 return role === "admin";
}

3 が何を意味するのか、"admin" がどこで定義された権限名なのかが分かりにくいです。

よい例

const MAX_RETRY_COUNT = 3;
const ADMIN_ROLE = "admin";

function canRetry(count: number) {
 return count < MAX_RETRY_COUNT;
}

function isAdmin(role: string) {
 return role === ADMIN_ROLE;
}

名前が付くことで、値の意味が分かります。

定数化するメリット

メリット説明
意味が分かる値の目的を名前で読める
変更漏れを減らす同じ値を1箇所で管理できる
タイプミスを減らす文字列の打ち間違いを防げる
検索しやすい関連箇所を見つけやすい

特に権限名、ステータス、制限値、時間、料金、URLなどは定数化を検討します。

何でも定数化しない

すべての数値を定数にすればよいわけではありません。

const ONE = 1;
const ZERO = 0;

このような定数は、意味を増やしていません。10 が一般的な計算や配列の添字として使われるだけなら、そのままでよいこともあります。

定数名の付け方

定数名には、値そのものではなく意味を入れます。

悪い名前よい名前
THREEMAX_RETRY_COUNT
TEN_SECONDSREQUEST_TIMEOUT_MS
ADMINADMIN_ROLE
URLUSER_API_URL

名前を見て、どこで使う値か分かるようにします。

まとめ

マジックナンバーやマジック文字列は、値の意味がコード上に出ていない状態です。

変更される可能性がある値、業務ルールを表す値、複数箇所で使う値には、意味のある名前を付けましょう。

参考リソース

関連記事

← 一覧に戻る
PR
PR
PR
PR