自分は今の会社に入るまで全くプログラミングの経験がなかった。もちろん変数のことも知らない。2年目になってなんとなく理解できるようになり、変数が使えると共にプログラミングもちょっとずつできるようになった。ほぼゼロから丁寧に教えてくれた職場の人たちには感謝している。今回はそんなプログラミングの基礎である変数について振り返ってみる。
変数とは一時的に値を入れておく箱のようなものである。プログラミング言語によっては型を宣言する必要のないものもあるらしいが、自分が仕事で使っている言語Delphiでは変数を使うためには型を宣言しなければならない。数値を入れるなら数値型、文字を入れるなら文字型でそこからさらに型が分かれている。
数値型は整数や実数(小数点のある数)、数値のケタ数によって型が異なる。宣言した数値型の範囲外の数値を変数に入れた場合、入ったように見えても異なる数値が入っていることがあるので注意が必要だ。対応する桁数以上の数値をセットすると、オーバーフローエラーになることも。
例)変数を名前hensu、数値型byteで宣言した場合
数値型byteは1バイト=8ビットの数値データを記憶できる。コンピュータ内部ではすべてのデータは1と0の組み合わせで表されている。1ビットにつき1か0の2通りでそれが8枠あるので、2の8乗=256通りとなりbyteには0〜255の数値を入れられる。範囲外の数値を入れた場合にはきちんとデータが保持されない。
200→hensu
hensu=200
300→hensu
hensu=?(255)
変数の名前には半角英数字を使うというルールはあるが、それにさえ従っていれば自由に好きな名前をつけることができる。とはいっても自分の好きな芸能人とかキャラクターの名前をつければいいというわけではない。ソースコードを見た時にどんな処理をしているかわかりやすい名前をつけたほうがいい。そうしておけば他の人が修正や機能追加をしやすくなる。自分が作ったものならどんな変数名でもわかると言う人もいるかもしれないが、自分が数年後にソースコードを見直した時のためにもわかりやすい変数名をつけておくことをおすすめする。
わかりやすい変数名とは一目でどんな処理に使う変数かわかるものである。あとは長すぎるとソースコードが見にくかったりごちゃごちゃしたりするので、より多くの情報を盛り込みながらいかに短い名前をつけられるかが大切だったりする。よく使う言葉は略したりする。
番号 number→no
ボタン button→btn
個数 count→cnt
年月日 YearMonthDay→ymd
削除 delete→del
開始 start→st
終了 end→ed
変数名にローマ字や日本語読みを使ってはいけないとかいう人もいるが、今の職場には日本人しかいないのでみんなガンガン使っている。自分は変数名に入れたい日本語をGoogle翻訳してみて、あまり馴染みのない英語が出てきた時は日本語読みにしている。英語と日本語をミックスして名づけることも。
例)契約開始日→KeiYmdSt
変数の頭に宣言した型の頭文字をつけることもある。数値型byteで宣言した変数はbHensuというように。社内のさまざまなソースコードで共通して使われているような変数なら頭文字は省略するが、自分で名前をつける時は型の頭一文字をつけるようにしている。一度入れた値を変更できない変数=定数を宣言する時には変数名にconstの頭文字cをつける。最大行はcLmaxとか。
for文などループ処理に使う変数には小文字一文字で特に意味を持たない名前をつける。なんとなくnとかiとかよく使う。あとはなるべく他の人と同じような名前のつけ方をするように気をつけている。他人が作ったものを自分が、自分が作ったものを他人が変更することがあるため、社内の共通ルールにはできる限り従う。
変数は値を保持するために使うものだとされているが、必ずしも保持するためだけに使うわけではない。ソースコードをわかりやすく見せるために使ったり、後から機能変更をしやすくするために使ったりすることもある。
例)税率10%の消費税額Xを求める場合
X=(100+200+300) ×0.1ではなく
Percent=10
a=100
b=200
c=300
X=(a+b+c) ×(Percent /100) とする
消費税率など変化する値は変数にセットしておくことをおすすめする。定数constにセットするか、プログラム起動時に一回だけセットするようにしておけば修正するのは一箇所でよいからだ。将来、消費税率が変わった時にソースコードの中から消費税計算している箇所を探しだして一つ一つ直す必要がなくなる。
変数と似たようなものに引数と関数がある。引数とは値を渡したり受け取ったりする箱のようなもの。手続き(ひとまとまりのコードの集合)をさまざまな処理で使えるようにするために使う。例えば引数で年月を渡したら末日を返す、西暦を渡したら和暦を返す手続きなんかを作っておくと便利。
関数とは戻り値が帰ってくる手続きのこと。戻り値の型も変数のように自由に定義することができる。TrueかFalseが返ってくるようにしておいて、処理がうまくいったかどうかを判断するために使ったりする。一つも問題がなければTrueを返すデータチェック関数をよく作る。
以上
変数はプログラミングとは切っても切り離せない関係である。変数をさらにうまく使いこなしてプログラミングを極めていきたいと思う。