【On to PHP】変数ってなに?

こんにちは、さるまりんです。

いきなりですが。

変数ってなに?

今日はこれについて考えてみたいと思います。

変数とは

変数とはデータを入れる箱のようなものです。データの入れ物ですね。そのような認識でいます。
コンピュータプログラムは大抵何かしらの目的を持って書かれます。
何かの入力を元に計算しそれを表示する。その途中でデータを一時的に入れて置くところがこの変数です。

どんなものを入れて置くのかというと、計算する数値であったり、表示する文字列であったり、「はい」か「いいえ」の値であったり様々です。本当にいろんなものを入れて置くことができるのでそれはおいおい触れていきたいです。

ではその入れ物である変数をどのように使うでしょうか。

$greeting = "こんにちは、さるまりんです。";
print $greeting;

上記のPHPプログラムの実行結果は

こんにちは、さるまりんです。

の文字列を表示します。

プログラムが何をしているかというと、

1行目では$greetingという名前の変数(入れ物)を作り、そこに「こんにちは、さるまりんです。」という文字列を入れています。
変数に値を入れることを代入と言うのですがこの行はそれをしています。「=」のことを代入演算子と呼び(演算子についてもおいおいね)、その右にあるものを左にある変数に格納しなさいという命令なのです。
なので繰り返しになりますがここでは「こんにちは、さるまりんです。」を$greetingに代入しています。
=」を使いますが算数・数学のように右と左は等しいと言う意味ではないです。僕はこれをイコール(equals)ではなく、得る(gets)だと教わりました。変数$greetingが「こんにちは、さるまりんです。」の文字列を得る。といった具合です。

2行目ではその$greetingという変数に入っている文字列を出力しています。
変数の中身を利用するには変数名を使って表すことができます。ここではprintを使って、$greetingの中身を出力しています。

結果

こんにちは、さるまりんです。

の文字列が表示されます。

変数の名前

上では$greeingという名前の変数を使いました。この変数の名前にはルールがあります。
それについてまとめておきますね。

1. 名前の最初は$であり、その後ろに文字列が続く形であること($文字列)
$greetingはOK、greetingはNGです。

2. $の次は英字かアンダースコア(_)であること
$greeting$_greetingはOK、$1greeting$挨拶はNGです。

3. $に続く文字列の2文字目以降は、英数字かアンダースコア(_)であること
$greetingや$_greetingはOK、$_挨拶$greeing-XはNGです。

で、名前に関していうと、変数は大文字と小文字が区別されます。なので$greeting$Greetingは違う変数です。

変数名で気をつけたいこと

結構自由に名前をつけられるんです。かといってわかりにくい名前にするとプログラムが読みにくく、理解しにくくなってしまうので名前をつけるときは注意ですね。たくさんの人が関わるプロジェクトなんかだとこの辺りが厳格に決められていることもあります。

先ほどの例では$greetingという名前の変数でしたね。これはなんとなく挨拶(greeting)に関するものだと読んで知ることができると思います。これが$aという変数に入っていたとしたらどうでしょう?aが全くなのことかわからないですよね。そういうことです。

長すぎても短すぎてもわかりにくいですし、似たような名前の変数が多くあるのもプログラムをわかりにくくしてしまいます。命名に悩みすぎないでいいと思いますが、わかりやすい名前をつけることは心がけたいですね。

変数名には英字が利用できるので英単語にするかローマ字にするか、これも統一するとわかりやすいと思います。僕はなるべく英単語を使っています。$greeting$aisatsuでは$greetingです。

英単語1つで表せない場合でどうでしょう?「挨拶」ではなく「朝の挨拶」の場合です。その場合は二つの単語を連結して名前にします。「朝の挨拶」の場合は$morningGreetingのようにです。

変数名には英字、数字、アンダースコア(_)が利用できますので、$morning_greetingも有効です。一つ目の変数名のように変数名に含まれる二つ目以降の単語の頭文字を大文字にする形式と二つ目の変数名のように複数の単語をアンダースコアで繋いでいく形式が一般的です。が、これらも混在しないようにした方がプログラムはわかりやすくなります。朝の挨拶は$morningGreetingなのに夜の挨拶は$evening_greetingだとわかりにくくなるかな、それ以前にちょっと気持ち悪いなってなります。ルール上ダメな訳ではないですが気にしたいポイントです。

ちょっと哲学的なことが出てきましたが、長い間プログラムを書き続けてきてもなかなか難しいところです。

厳格にルールがあった方がやりやすいという方もいるでしょうし、そんなこと関係なく自由に書きたいんだって方もいるでしょう。これは誰が読むのかとかどこで書くのかとかによって変わってくると思います。が、誰かが読んでわかりやすいプログラムは自分が読んでもわかりやすいはずです。一度書いたプログラムを半年後に見直すとき、それを書いたのが自分であっても、まあたくさんのことを忘れています。その時の自分はまるで誰か別人じゃないかってくらいのこともあります。そうなるとその頃書いたプログラムがわけわからないこともありますよ。未来の自分のためにわかりやすくがいいかな。

ちょっと脱線?いやいや、わかりやすいプログラムを書く上で変数やその他のも命名を含め書き方や統一感って大事だと思っています。いろいろ気をつけてプログラムしていきたいです。

次はまた別のデータの入れ物についてです。

読んでくださってありがとうございました。

ではまた!

Onto PHP 目次