プログラミングを学び始めて最初に出会う「変数」。何となく使えても、意味はよくわからないという方は多いはずです。この記事では、変数の役割や使い方から、実務で差がつく名前の付け方までわかりやすく紹介します。
変数とは(プログラミングにおける)

プログラミングにおける変数とは、一時的にデータを保管する場所に名前を付けたものです。計算結果などをメモリー上に置いておき、あとで取り出しやすいように名札を付けておく、というイメージが近いです。宣言・代入・参照という使い方は言語を問わず共通の基礎で、早いうちに身につきます。ただ、最終的に差がつくのは使い方そのものよりも、意味が伝わる名前を付ける習慣のほうです。
先に具体的なコード例を確認したい方は、変数の使い方まで読み進めてみてください。
変数の役割
変数の役割は大きく2つあります。同じ計算結果を何度も使い回せることと、値が何を表すのかをはっきりさせることです。
たとえば商品を扱うプログラムで、税抜き価格を priceExcludingTax、税込み価格を priceIncludingTax のように名前を付けるとします。そうすれば、その値が何なのかコードを読むだけで伝わります。値に名前を付けると、コードの意味が読み取りやすくなるのです。
変数と定数の違い
変数と定数の違いは、値が変わりうるかどうかです。変数はプログラムの実行中に何度でも書き換えられますが、定数は一度決めたら変わりません。
たとえば消費税率のように当面変わらない値は定数に、商品ごとに変わる価格は変数にする、という使い分けになります。多くの言語には、定数であることを示す書き方(JavaScript の const など)が用意されています。
変数のデータ型

変数に入れるデータには「型」があり、扱う値の種類によって型が決まります。数値と文字列を混同するとエラーになりやすいため、初心者のうちから型を意識しておくと、つまずきを減らせます。
主なデータ型(数値・文字列・配列)
よく使う基本的なデータ型は次の3つです。
- 数値: 整数や小数を表す型。金額や個数など計算に使う値に向く
- 文字列: 文字の並びを表す型。名前やメッセージなど文章として扱う値に使う
- 配列: 複数の値をまとめて扱う型。順番に並べたデータをひとつの変数で持てる
数値の中にも整数型や小数点付きの型があり、言語によっては型の違う数どうしを自動でそろえて計算してくれます。文字列は日本語や英語を正しく表示するための文字コードの扱いがあり、見た目より奥が深い型です。
静的型付け言語と動的型付け言語の違い
型の扱い方によって、プログラミング言語は静的型付け言語と動的型付け言語に分かれます。
静的型付け言語(Java や C 言語など)は、変数を用意するときに型を指定します。一方の動的型付け言語(Python や JavaScript など)は型の指定がいらず、値を入れるとその型が自動で決まります。初心者が最初に触れるのは、たいてい後者です。だから Python や JavaScript は、型を細かく指定しなくてもすぐ書き始められます。
変数の使い方

変数の使い方は、用意する(宣言)、値を入れる(代入)、値を使う(参照)の3ステップが基本です。ここでは Python と JavaScript の両方でコード例を並べます。言語が変わっても変数の考え方は同じだと分かるはずです。
宣言(変数を用意する)
まず変数を使うには、宣言という準備から入ります。
JavaScript では let や const というキーワードで変数を用意します。const は後から書き換えない値に使います(出典: MDN Web Docs)。
// JavaScript:let で変数を用意する
let price = 1000;
const taxRate = 0.1;Python は宣言という手順がなく、値を入れた時点で変数ができます(出典: Python公式チュートリアル)。
# Python:宣言はいらず、代入すると変数ができる
price = 1000
tax_rate = 0.1代入(値を入れる)
用意した変数に値を入れる操作を代入と呼びます。多くの言語で「=」を使います。
注意したいのは、この「=」が数学の等号とは違う点です。左右が等しいという意味ではなく、右の値を左の変数に入れる、という意味になります。
num = 1
num = num + 2 # num は 3 になる最後の行は数学ではありえませんが、プログラミングでは「num に今の値+2を入れ直す」と読むので成り立ちます。
参照(値を使う)
宣言と代入が済んだ変数を別の場所で使うと、その中身が読み出されます。これが参照です。
let num = 1;
let total = num + 10; // total は 11 になるここでは num の 1 が参照され、total に 11 が入ります。変数は、こうしてどこかで参照されて初めて役に立ちます。
変数のスコープ

スコープとは、変数が使える範囲のことです。どこからでも使えるグローバル変数と、決まった範囲でだけ使えるローカル変数があり、使い分けを誤ると値がどこで変わったか追えなくなります。
グローバル変数
プログラムのどこからでも読み書きできるのがグローバル変数です。
便利に見えますが、どこで値が書き換わったのか分かりにくくなるため、多用すると不具合の原因を探しづらくなります。
ローカル変数
反対に、関数の中など決まった範囲でだけ使えるのがローカル変数です。
使える範囲が狭いぶん、値の変化を追いやすく、コードが読みやすくなります。同じ処理をどちらでも書ける場合は、ローカル変数を優先すると安全です。
関数については以下の記事で詳しく紹介しています。
変数の考え方がつかめてきたら、次は自分にエンジニアの適性があるかも気になるところです。
変数名の付け方

冒頭でも触れたとおり、変数で最終的に差がつくのは、使い方よりも意味が伝わる名前を付ける習慣です。計算などの処理は慣れれば難しくありませんが、良い名前を付けるのはいつまでも頭を使う作業で、ここに経験の差が出ます。
意味が伝わる名前を付ける
変数名でいちばん大事なのは、その変数が何を表すのかが一読で分かることです。
日付なら date、価格なら price のように、ひねらずストレートに付けます。fd や lp のように省略しすぎると、半年後の自分がコードを読んでも意味が分からなくなります。スクールで初学者を指導していると、名前を曖昧に付けた方ほど、時間が経ってから「この変数は何だっけ」と手が止まりがちです。
読みやすさを意識した長さにする
意味を込めようとして名前が長くなりすぎると、逆に読みにくくなります。
たとえば繰り返し処理の番号には i や j のような短い名前を使うのが一般的で、そのほうがコード全体を見渡しやすくなります。意味の分かりやすさと、見た目の読みやすさのバランスを取るのがコツです。
同じ概念には同じ名前を使う
同じものを指すなら、名前も統一します。
価格を price と決めたら、別の場所で value に変えたりせず、最後まで price で通します。文字列を str と略すと決めたら、ある場所だけ string や s にしない、ということです。表記がバラバラだと、読み手は違いがあるのかと戸惑います。
チームで使うコーディング規約に合わせる
複数人で開発するときは、コーディング規約という名前の付け方のルールに合わせます。
newPrice のように大文字でつなぐキャメルケースや、new_price のように下線でつなぐスネークケースなどがあり、プロジェクトごとに決まっています。複数人で開発する現場を見ていると、命名がバラついたコードほどレビューで指摘が集中しやすく、直す手間も増えます。
最後に、良い変数名かどうかを次の点で確認してみましょう。
- 意味が一読で伝わるか
- 長すぎず短すぎないか
- 同じ概念に同じ名前を使っているか
- プロジェクトの規約に沿っているか
よくある質問
変数名に使える文字にルールはありますか?
あります。多くの言語で、変数名には英数字とアンダースコア(_)が使え、先頭に数字は使えません。日本語や空白、記号の多くも使えないのが一般的です。if や for のように言語があらかじめ使う単語(予約語)も変数名にできません。まずは半角英字で始めると覚えておけば、大きく外しません。
変数はいくつ作ってもよいのですか?
基本的には必要なだけ作って問題ありません。ただ、数が増えるほど名前の管理が大変になるので、使わない変数は作らない、意味のまとまりごとに整理する、といった心がけが役立ちます。数を制限するより、一つひとつに分かりやすい名前を付けることのほうが大切です。
まとめ
変数は、データに名前を付けて一時的に保管する仕組みで、宣言・代入・参照という使い方は言語が違っても共通です。そして、学習を続けるほど差になって表れるのが、意味が伝わる名前を付ける習慣です。最初から丁寧な命名を心がけておくと、あとで読み返す自分にとっても、一緒に開発する誰かにとっても読みやすいコードになります。
変数を理解したら、次に学ぶとよいテーマへ進んでみましょう。関連する記事を以下にまとめました。









