Ruby入門講座、今回で3回目ですね。お二人とも準備はよろしいですか?
はーい
今回もよろしくお願いします
Rubyで使うエディタ選び
今回は、まずエディタ選びからお話ししますね
エディタってなんですか?
パソコンでオブジェクトを編集するソフト……と言ってもわかりづらいですよね。有名なのは、メモ張とかワードです
あぁ、あれか! 知ってますよ
ただ、メモ張やワードはプログラミングには向いていないんですよ。ということで、おすすめのエディタをいくつか紹介します
このへんがプログラミングに向いている無料のエディタですね。それぞれリンクを貼っておきましたので、気に入ったものを使うといいですよ
エディタは無料のもので十分
エディタには有料のものもあります。秀丸エディタ、Emeditor Professionalなどが有名です。ただ、最初のうちは無料のもので十分ですよ。
また、Eclipseのような(IDE:統合開発環境)でプログラミングという選択肢もあります。
じゃあ、無料のやつにしよ
簡単なプログラミングとエラー
続いて、Rubyのプログラミングをするときに出てしまうエラーを紹介します
前に、
print(3+2)
というプログラムを例として挙げました。
ただ、プログラミングは、ちょっと間違えるだけで動きません。
困ります
そう、困るんです。 でも、動かないときは何かしらのエラーが出ていますので、そのエラーへの対処法を知っていれば、きちんと動くようになります
では、いくつかのエラーメッセージの例を紹介します。
エラーの具体例:①
この画面はエラー画面です。(NoMethodError)とエラーメッセージが出ていますね。
どうしてエラーになったのか、わかりますか?
まったくわかりません
これは、printを間違ってpprintと打ち込んでしまったためのエラーです
ホントだ! pが1個多いね
エラーメッセージの内容
printはコンソールに結果を表示する組み込みメソッド(rubyがあらかじめ準備しているプログラム)です。
でも、pprintと書き間違えたため、pprintというメソッドは存在しないと教えてくれています。こういういわゆるtypo(Syntax error:文法エラー)は、エディタが教えてくれることもあります。
エラーの具体例:②
このエラーメッセージが出るのは、
print(3+2
と書いてしまったときです。
最後のトジカッコ「)」を打ち忘れてしまったんですかね
エラーメッセージの内容
ruby/test.rb:1:文法エラー、予期しない入力の終了です、’)’が期待されています。
訳すと、このようなエラーメッセージです。途中の’:1:’は一行目という意味ですね。
エラーメッセージが 「最後に’)’が必要ではないでしょうか」と教えてくれてるんです
エラーの具体例:③
このエラーメッセージが出るのは、
print(3+)
と書いてしまった場合です。
エラーメッセージの内容
ruby/test.rb:1:文法エラー、予期しない’)’が現れました。
このようにエラーメッセージが出ています。途中の’:1:’は一行目という意味ですね。
本来なら「3+2」と打つべきところを、最後の「2」を打ち忘れてしまったのでしょう。
‘3+’というのはrubyの構文ではあり得ないので、’)’に ここがおかしいと教えてくれています。
こうやっておかしな場所を教えてくれたら、エラーの原因もわかりやすいですね
エラーの具体例:④
では、このエラーメッセージはどんなときに出てしまうのかわかりますか?
この話の流れなら、さすがにわかりますよ。print(3+2)と打つところを、間違ってprint(3+*2) って打ってしまったんでしょうねぇ
そのとおりです! 猫田さんも頑張っていますね
エラーメッセージの内容
ruby/test.rb:1:文法エラー、予期しない’*’が現れました。
このようにメッセージが出ています。途中の’:1:’は一行目という意味です。’3+*’というのはrubyの構文ではあり得ません。’+’の直後に”が出てくるのはおかしいと教えてくれています。この場合もおかしい箇所を教えてくれていますね。
エラーの具体例:⑤
最後はちょっと難しいかもしれません
このエラーメッセージが出るのは、
print3+2
と書いてしまった場合です。
printの後にカッコをつけていないからエラーなんですね
エラーメッセージの内容
ruby/test.rb:1:<main>':
print3’という定義されていないローカル変数かメソッドがmainの中で現れました。:オブジェクト(名前のエラー)
こんなメッセージです。途中の’:1:’は一行目という意味ですね。
本来なら「print」と「3」は、別々です。そのつもりでプログラミングしています。でも、こうしてカッコを忘れてしまうと、自動的に’print’と’3’に分離はしてくれません。
結果的にRubyは、’print3’というローカル変数かメソッドと解釈してしまいます。でも、’print3’というローカル変数やメソッドはないので、おかしいと教えてくれているんです。
エラーにならない例
エラーにならない例:①
print 2+3
カッコはなくてもいいです。
あれ? これは、さっきのエラーになったパターンじゃないの?
「print」と「2」の間に半角スペースがあるでしょう。スペースがあると、「print」と「2」を別のものと判断してくれるので、エラーにはならないんですよ
なるほど。 そういえば、さっきエラーが出てしまったものは「print」と数字がくっついていましたね
エラーにならない例:②
print(2+
3
二行に分けても構いません。
エラーにならない例:③
print ( 2 + 3 )
スペースは入れても構いません。
ただし、全角文字は使わないでください。エラーになります。全角文字を使ってしまうと発見するのが大変で直すのが大変になることが多いです。ここでは全角文字を使ってもいい場合はそう明示します。
また、printの他にも、
p 2+3
puts 2+3
でも動きます。ただしprintと違って、最後に改行がつきます。
二行のプログラム例
二行以上のプログラムが書けます。
puts 2+3
puts 3+5
と二行に分けて書くと、
5
8
と表示されます。
ふむふむ
catはファイルの中をコンソールに表示するコマンドです。
puts 2+3; puts 3+5
と’;’セミコロンで一行にしても構いません。
また、’,’でprintの中を区切ることもできます。
print 2+3, 3+5
と
print 2+3; print 3+5
は出力が同じ
58
になります。改行文字がないので5と8が連続して表示されています。
これだと「58」という二桁の数字に見えてしまうので、用途によっては困ってしまいますね
三行以上のプログラムも同じように、
print 2+3
print 3+5
print 4+5
あるいは、
print 2+3; print 3+5; print 4+5
のように書けます。出力は、
589
となります。改行文字がないので5と8と9が連続して出力されています。
まとめ:Rubyのエラーを学びました
さて、今回はRubyのエラーを中心に学んだわけですが、いかがでしたか?
最初は、難しいと思いましたけど……説明を聞いたら、納得できるものばかりですね。これなら理解できそうです
よーし、次、行ってみよー!
次回は、Rubyでの文字列の扱い方について解説いたします。