Ruby入門3:簡単なRubyのプログラミングとよくあるエラー

Ruby入門
CANIT先生
CANIT先生

Ruby入門講座、今回で3回目ですね。お二人とも準備はよろしいですか?

猫田さん
猫田さん

はーい

牛山くん
牛山くん

今回もよろしくお願いします

Rubyで使うエディタ選び

パソコン
CANIT先生
CANIT先生

今回は、まずエディタ選びからお話ししますね

牛山くん
牛山くん

エディタってなんですか?

CANIT先生
CANIT先生

パソコンでオブジェクトを編集するソフト……と言ってもわかりづらいですよね。有名なのは、メモ張とかワードです

猫田さん
猫田さん

あぁ、あれか! 知ってますよ

CANIT先生
CANIT先生

ただ、メモ張やワードはプログラミングには向いていないんですよ。ということで、おすすめのエディタをいくつか紹介します

CANIT先生
CANIT先生

このへんがプログラミングに向いている無料のエディタですね。それぞれリンクを貼っておきましたので、気に入ったものを使うといいですよ

エディタは無料のもので十分

エディタには有料のものもあります。秀丸エディタEmeditor Professionalなどが有名です。ただ、最初のうちは無料のもので十分ですよ。

また、Eclipseのような(IDE:統合開発環境)でプログラミングという選択肢もあります。

猫田さん
猫田さん

じゃあ、無料のやつにしよ

簡単なプログラミングとエラー

パソコン 犬
CANIT先生
CANIT先生

続いて、Rubyのプログラミングをするときに出てしまうエラーを紹介します

前に、

print(3+2)

というプログラムを例として挙げました。

ただ、プログラミングは、ちょっと間違えるだけで動きません。

猫田さん
猫田さん

困ります

CANIT先生
CANIT先生

そう、困るんです。 でも、動かないときは何かしらのエラーが出ていますので、そのエラーへの対処法を知っていれば、きちんと動くようになります

エラーメッセージを見ずに解決しようとする方もいますが、エラーメッセージをちゃんと見た方が解決は早いです。

では、いくつかのエラーメッセージの例を紹介します。

エラーの具体例:①

この画面はエラー画面です。(NoMethodError)とエラーメッセージが出ていますね。

CANIT先生
CANIT先生

どうしてエラーになったのか、わかりますか?

猫田さん
猫田さん

まったくわかりません

CANIT先生
CANIT先生

これは、printを間違ってpprintと打ち込んでしまったためのエラーです

猫田さん
猫田さん

ホントだ! pが1個多いね

エラーメッセージの内容

printはコンソールに結果を表示する組み込みメソッド(rubyがあらかじめ準備しているプログラム)です。

でも、pprintと書き間違えたため、pprintというメソッドは存在しないと教えてくれています。こういういわゆるtypo(Syntax error:文法エラー)は、エディタが教えてくれることもあります。

エラーの具体例:②

このエラーメッセージが出るのは、

print(3+2

と書いてしまったときです。

牛山くん
牛山くん

最後のトジカッコ「)」を打ち忘れてしまったんですかね

エラーメッセージの内容

ruby/test.rb:1:文法エラー、予期しない入力の終了です、’)’が期待されています。

訳すと、このようなエラーメッセージです。途中の’:1:’は一行目という意味ですね。

CANIT先生
CANIT先生

エラーメッセージが 「最後に’)’が必要ではないでしょうか」と教えてくれてるんです

エラーの具体例:③

このエラーメッセージが出るのは、

print(3+)

と書いてしまった場合です。

エラーメッセージの内容

ruby/test.rb:1:文法エラー、予期しない’)’が現れました。

このようにエラーメッセージが出ています。途中の’:1:’は一行目という意味ですね。

本来なら「3+2」と打つべきところを、最後の「2」を打ち忘れてしまったのでしょう。

‘3+’というのはrubyの構文ではあり得ないので、’)’に ここがおかしいと教えてくれています。

牛山くん
牛山くん

こうやっておかしな場所を教えてくれたら、エラーの原因もわかりやすいですね

エラーの具体例:④

CANIT先生
CANIT先生

では、このエラーメッセージはどんなときに出てしまうのかわかりますか?

猫田さん
猫田さん

この話の流れなら、さすがにわかりますよ。print(3+2)と打つところを、間違ってprint(3+*2) って打ってしまったんでしょうねぇ

CANIT先生
CANIT先生

そのとおりです! 猫田さんも頑張っていますね

エラーメッセージの内容

ruby/test.rb:1:文法エラー、予期しない’*’が現れました。

このようにメッセージが出ています。途中の’:1:’は一行目という意味です。’3+*’というのはrubyの構文ではあり得ません。’+’の直後に”が出てくるのはおかしいと教えてくれています。この場合もおかしい箇所を教えてくれていますね。

エラーの具体例:⑤

CANIT先生
CANIT先生

最後はちょっと難しいかもしれません

このエラーメッセージが出るのは、

print3+2

と書いてしまった場合です。

牛山くん
牛山くん

printの後にカッコをつけていないからエラーなんですね

エラーメッセージの内容

ruby/test.rb:1:<main>':print3’という定義されていないローカル変数かメソッドがmainの中で現れました。:オブジェクト(名前のエラー)

こんなメッセージです。途中の’:1:’は一行目という意味ですね。

本来なら「print」と「3」は、別々です。そのつもりでプログラミングしています。でも、こうしてカッコを忘れてしまうと、自動的に’print’と’3’に分離はしてくれません。

結果的にRubyは、’print3’というローカル変数かメソッドと解釈してしまいます。でも、’print3’というローカル変数やメソッドはないので、おかしいと教えてくれているんです。

エラーにならない例

パソコン

エラーにならない例:①

print 2+3

カッコはなくてもいいです。

猫田さん
猫田さん

あれ? これは、さっきのエラーになったパターンじゃないの?

CANIT先生
CANIT先生

「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が連続して表示されています。

CANIT先生
CANIT先生

これだと「58」という二桁の数字に見えてしまうので、用途によっては困ってしまいますね

三行以上のプログラムも同じように、

print 2+3
print 3+5
print 4+5

あるいは、

print 2+3; print 3+5; print 4+5

のように書けます。出力は、

589

となります。改行文字がないので5と8と9が連続して出力されています。

まとめ:Rubyのエラーを学びました

学習
CANIT先生
CANIT先生

さて、今回はRubyのエラーを中心に学んだわけですが、いかがでしたか?

牛山くん
牛山くん

最初は、難しいと思いましたけど……説明を聞いたら、納得できるものばかりですね。これなら理解できそうです

猫田さん
猫田さん

よーし、次、行ってみよー!

次回は、Rubyでの文字列の扱い方について解説いたします。

挫折率が高い??プログラミング学習のポイント
駆け出しエンジニアが一緒に学ぶ
CANITは、Progateやドットインストールで独学している人達同士をつなげます。駆け出しエンジニアのあなたのためのSNSです。
Ruby入門
【この記事を書いた人】
CANIT 先生

あらゆるプログラミング言語をあやつるフリーの凄腕講師。温和な性格で「わかるまで教えます」がモットー。たまに時間ができると動物の仲間達に、プログラミングを教えることもある。現在の生徒は牛山くんと猫田さん。

CANIT
タイトルとURLをコピーしました