変数の中身を意識したい!


言語

Ruby

対象読者

  • 変数の型を意識していない方。
  • プログラミングを勉強したばかりの方
  • 変数がよくわからない方
  • RubyでNoMethodErrorが発生した際に原因がパッと思い浮かばない。

記事の内容

変数や型の難しい箇所(参照型、値型、null、スコープなど)は説明せず、変数のイメージをつかんで頂けるように作成しております。

最低限知って欲しいこと

変数の中身を意識すること!

これだけです。これは静的でも動的でも変わらず重要なことです。
イメージ図はこんな感じです。

変数の中身を意識しないプログラマーは往々にしてこのような書き方をします。

変数さん! 料理をしてください!!

変数の中身が大工さんだと知らないんですね。なので、大工さんに対して料理をしてと言ってしまいます。
コード的に説明すると以下の感じです。

#大工クラスを定義しています。
class Carpenter
#建設メソッドを定義しています。
  def construction
    puts "建設します"
  end
end
#大工クラスを実体化しています。
hennsuu = Carpenter.new
#大工クラスに定義されていないメソッドを呼び出しています。
hennsuu.cooking

分かるでしょうか?実際に存在しているクラスを用いてもう一度説明します。
RubyのStringクラスとIntegerクラスの公式ドキュメントをみてください。

サイトの中で検索(command + F)でupcaseと検索してください。
Stringではヒットしますが、Integerではヒットしません。
これはStringクラスではupcaseメソッドが定義されていますが、Integerクラスではupcaseメソッドが定義されていないことを示します。
では、実際にコードを実行してみましょう。

hennsuu = "abcdef"
puts hennsuu.upcase #"ABCDEF"
hennsuu2 = 12345
puts hennsuu2.upcase #NoMethodError
hennsuu.class # String
hennsuu.class # Integer

NoMethodエラーが出ましたね。これはIntegerクラスにはupcaseメソッドが定義されていないためにエラーが発生しています。
このように、変数の中身を意識せずもっと言えば変数の中身のクラスを意識せずにプログラムは書けないのです。

まとめ

変数の中身を意識しないと思わぬバグやエラーに苦しめられることがあります。
変数の中身は意識するようにしましょう!

外部サイト

今回使用している可愛い絵に関しては下記サイトにて取得したものです。
素材に関しての著作権はみふねたかし様が保持されております。
https://www.irasutoya.com/