変数 へんすう
データ型代入スコープ定数メモリ宣言
変数について教えて
簡単に言うとこんな感じ!
変数は「名前のついた箱」だよ!たとえば「age(年齢)」という名前の箱に「25」って数字を入れておけば、プログラムのどこからでも「ageの箱の中身を使って!」って呼び出せるんだ。箱の中身はあとから入れ替えられるから「変わる数」で”変数”ってこと!
変数とは
変数(variable) とは、プログラムの中でデータを一時的に保存しておくための「名前付きの入れ物」です。数値・文字・真偽値など、さまざまな種類のデータを格納でき、プログラムの実行中に中身を読み書きできます。
プログラムは膨大な計算や処理を行いますが、その途中結果や入力値をどこかに覚えておかなければなりません。変数はその「メモ帳の1行」のような役割を担っており、プログラミングのもっとも基本的な概念 のひとつです。
たとえば「ユーザーが入力した名前を画面に表示する」という処理では、入力された名前を一度変数に保存し、あとから取り出して使います。変数がなければ、同じデータを何度も計算・取得し直す必要が生じ、プログラムは非常に非効率になります。
変数の基本的な仕組み
変数には「宣言」「代入」「参照」という3つの基本操作があります。
| 操作 | 意味 | 例(Python) |
|---|---|---|
| 宣言(Declaration) | 変数の名前を確保する | age = 0(言語によっては int age;) |
| 代入(Assignment) | 箱に値を入れる | age = 25 |
| 参照(Reference) | 箱の中身を取り出す | print(age) → 25 と表示 |
変数名: age
┌─────────────┐
│ 25 │ ← メモリ上のある場所に値が格納される
└─────────────┘
↑
age という名前でいつでもアクセスできる
覚え方:「変数=名前のついた箱」
「変わる数を入れる箱」 と覚えよう。箱には名前(変数名)があって、中身(値)は後から変えられる。箱の名前さえ覚えておけば、中身が何であっても呼び出せる!
データ型:箱の「種類」
変数には格納できるデータの型(データ型)があります。型が違うと入れられるものも違います。
| データ型 | 入れられるもの | 例 |
|---|---|---|
| 整数型(int) | 整数 | 42、-10、0 |
| 浮動小数点型(float) | 小数を含む数値 | 3.14、-0.5 |
| 文字列型(string) | 文字・テキスト | "田中太郎"、"Hello" |
| 真偽値型(boolean) | 真か偽か | true / false |
| 配列・リスト(array) | 複数の値をまとめて | [1, 2, 3] |
歴史と背景
- 1950年代前半 — コンピュータが登場した当初、データはメモリのアドレス(番地)を直接指定して操作していた。人間には非常に扱いづらかった
- 1957年 — IBMがFORTRAN(フォートラン)を発表。プログラマが意味のある名前で変数を宣言できる最初期の高水準言語として普及した
- 1960年代 — COBOL・ALGOLなど多くの言語が変数の概念を標準化。「名前でメモリを扱う」スタイルが定着した
- 1970年代〜 — C言語が登場し、変数の**スコープ(有効範囲)やポインタ(メモリアドレスの直接操作)**という概念が整理された
- 現在 — Pythonなど動的型付け言語の普及により、型宣言不要でより直感的に変数を扱えるようになった。しかし概念の本質は変わっていない
変数・定数・リテラルの違い
変数と混同しやすい概念を整理します。
スコープ(有効範囲):変数が使える場所
変数は「宣言した場所」によって使える範囲(スコープ)が決まります。
| スコープの種類 | 意味 | 使える場所 |
|---|---|---|
| ローカル変数 | 関数・ブロックの中だけで使える | 宣言した関数の内側 |
| グローバル変数 | プログラム全体で使える | どこからでも |
| インスタンス変数 | オブジェクトごとに持つ | クラスの中 |
実務上のポイント
システム発注・プロジェクト管理の立場で変数という概念を知っておくと役立つ場面を紹介します。
- 命名規則の話が出たら要注意:変数名は自由につけられますが、チームで統一しないと「このnameってどの名前?」という混乱が起きます。開発標準として命名規則(ネーミングルール)を決めることは品質に直結します
- 「ハードコーディング」は避けるべき:消費税率や外部サービスのURLなど、変わりうる値をリテラルとしてプログラム中に直書きすることを「ハードコーディング」と言います。変数・定数として定義しておかないと、値が変わるたびにプログラム全体を修正することになります
- グローバル変数の乱用はバグの温床:「どこからでも変えられる変数」が多いと、予期しない値の書き換えによるバグが増えます。コードレビューでグローバル変数の使用数が指摘されたら設計上の問題サインです
関連用語
- ./021-data-type.md — データ型 — 変数に入れられるデータの種類(整数・文字列・真偽値など)の分類
- ./023-function.md — 関数 — 処理をひとまとめにした部品。変数を受け取り・返す
- ./024-scope.md — スコープ — 変数が有効な範囲・寿命を定義する概念
- ./025-constant.md — 定数 — 変更できない変数。設定値や固定値に使う
- ./026-assignment.md — 代入 — 変数に値を入れる操作
- ./027-memory.md — メモリ — 変数の値が実際に保存されるコンピュータの記憶領域
- ./028-array.md — 配列 — 複数の値をまとめて管理できる変数の拡張形
- ./029-naming-convention.md — 命名規則 — 変数名・関数名などの付け方のルール。チーム開発での品質基準