2-3-3 変数の定義と未定義時の挙動への理解を深める

数学の「変数への代入」との違い

Rubyで扱う変数はa = 1のように数学と同様のものもあれば、数学的にはちょっと違和感のある定義もできます。

たとえばa1a_bなど、変数名に半角数字やアンダースコアなどの記号を使った変数もRubyでは定義することができます。

逆に1aのように、先頭が半角数字の変数は定義することができません。

まとめるとRubyで使う変数には以下のような条件があります。

  • 先頭が数値でなく文字列であること
  • アンダースコアは使用することができる

また、先頭文字が大文字の半角英字の場合は特殊な変数(クラスや定数)を意味することになるので注意が必要です。

なおRubyでは日本語でも変数を定義することができますが、プログラムの読みやすさの観点から、できるだけ控えた方が無難でしょう。

ここでは、通常の変数は「先頭小文字の半角英字から始める」という点をおさえてください。

「Did you mean?」の意味

前ページ「2-3-2 数値や文字列を変数に代入して表示してみよう」で未定義の変数abを表示した際、エラーメッセージの直後にDid you mean? aと表示されました。

これはRuby2.3.0から標準で組み込まれたdid_you_meanというgemパッケージが出力するメッセージです。

gemパッケージとは、Rubyで記述されたプログラムがまとめられたもので、簡単に組み込んで利用することができます。

did_you_meanはその英語の意味の通り、「本来意図するのはこれじゃなかったですか?」という確認をしてくれます。

前の記事の例では変数aが既に定義されているので、未定義の変数abとタイプされると「本当は変数aとタイプしたかったのでは?」とサジェストしてくれているのです。

ありがたいですね!

このように、エラーメッセージには、色々なヒントが含まれています。

最初は英語でとっつきにくく、英語にアレルギーがある方はエラーメッセージをみただけで、頭が真っ白になったりやる気をなくして思考停止してしまうこともしばしばあります。

しかし、プログラミングを実践するにあたり、実はエラーメッセージは重要な情報を提供してくれています。

落ち着いてちゃんと理解するとプログラムのミスに気づく手がかりになります。

プログラミングの習熟度をあげる最初の鍵は、「エラーメッセージからわかる手がかりを元に原因を特定できるようになること」といえます。

Rubyが出力するエラーメッセージについては、後続の記事でも随時紹介しています。

焦らず、少しずつ慣れていきましょう。