Rubyの基礎
Ruby実行環境
Visual Studio Code(以下VSCode)でRubyが実行できるか確認します。
Ruby実行フォルダ
最初に、Rubyを実行するフォルダを準備します。 どのフォルダでもRubyのプログラムを実行できますが、ここでは、C:¥ruby_lecture¥codeフォルダを作成して、作業フォルダとします。
Rubyの実行環境
VSCodeを起動します。
提供しているRubyの実行環境の場合、C:¥ruby_lecture¥code.batをダブルクリックするとVSCodeが起動します。 また、作業フォルダはC:¥ruby_lecture¥codeに設定されています。
メニューより、ファイル => フォルダを開くをクリックします。
C:¥ruby_lecture¥codeフォルダを選択して、フォルダの選択ボタンをクリックします。
VSCodeの左側のエクスプローラーにcodeフォルダが表示されます。
ここには、Windowsのエクスプローラーと同様に、フォルダやファイルがツリー表示されます。
メニューより、ターミナル => 新しいターミナルをクリックします。
VSCodeの下側にターミナル(コマンドプロンプト)が表示されます。
Rubyが実行できるか、確認します。 ターミナルに
ruby -v
と入力して、Enterキーを押します。Rubyのバージョンが表示されます。
Hello World
Hello Worldと画面に出力する簡単なRubyのプログラムを書いて実行します。
プログラムファイル作成
エクスプローラーのcodeの右側にマウスカーソルを移動させると表示される、新しいファイルアイコンをクリックします。
ファイル名の入力状態になりますので、hello.rb
と入力して、Enterキーを押します。
プログラムファイルは、テキストファイルです。拡張子は何でも(.txtでも)よいですが、Rubyのプログラムだと分かるように慣例的に.rbとします。
hello.rbファイルが作成され、hello.rbファイルが開きます。
hello.rbファイルに、
puts "Hello World!"
と入力します。
メニューより、ファイル => 保存をクリックして保存します。
ファイルの保存は、ショートカットキー(Ctrl + s:コントロールキーを押しながらsキーを押す)を使用して保存するやり方が簡単です。
ファイル名のTabの右側に丸(●)がある場合は、変更が保存されていない状態です。保存するとバッテン(✕)になります。
その他のショートカットキー
コピー:Ctrl + c
ペースト:Ctrl + v
プログラムの実行
Rubyのプログラムを実行するには、rubyコマンドを使います。ruby
の後に半角スペース、その後にプログラムファイル名を入力して実行します。
ターミナルで、
ruby hello.rb
と入力して、Enterキーを押します。
ターミナルに、
Hello World!
と表示されているのを確認します。
コマンドプロンプトで、ruby h
まで入力して、Tabキーを押すと、ruby hello.rb
とファイル名を保管してくれます。
次に、hello.rbファイルを、
puts "Hello World!ハロールビー!"
と編集して、保存してください。
同じようにターミナルで、
ruby hello.rb
と入力して、Enterキーを押します。
ターミナルに、
Hello World!ハロールビー!
と表示されているのを確認します。
コマンドプロンプトで、上矢印キーを押すと、過去のコマンド入力が表示されます(押すたびにさかのぼります)。逆に下矢印キーを押すと進みます。
また、プログラムを、
puts "Hello World!"
puts "ハロールビー!"
puts "私はRubyが好きです。"
など、文字を変えたり、行を増やしてみてください。
puts
は画面(標準出力)に文字(と改行)を表示する関数のようなもの(Rubyではメソッドと呼びます)です。
また、文字(文字列)は、ダブルクォーテーション"
で囲みます。
計算と入出力
入力した数値を計算して出力するプログラムを書いて実行します。
数値の出力
calculation.rb
という名前のファイルを作成します。
以下のように、puts
の後に、足し算を記入します。
puts 5 + 3
Rubyは、全角・半角、大文字・小文字を区別します。大文字の数字は数値として扱いません。
プログラムを実行します。
ruby calculation.rb
計算結果が表示されます。
8
5 + 3 = 8
の様に表示させたいと思います。以下のように書き換えてください。
puts 5 + 3 = 8
同様にプログラムを実行すると、エラーになりました。
syntax error, unexpected '=', expecting end-of-input
puts 5 + 3 = 8
syntax errorは、書き方がRubyの規則に合ってない場合に表示されるエラーです。
5 + 3 = 8
の全体を"
で囲い、文字列にします。以下のように書き換えてください。
puts "5 + 3 = 8"
プログラムを実行すると、
5 + 3 = 8
と表示されました。
まとめると、
"
で囲んだ文字(文字列と言います)は表示できる。- 計算式は結果(数値)が表示される。 となります。
式と結果を両方表示させたい場合は、どうしたらよいでしょうか。
Rubyでは、文字列の中に数値(計算結果)を埋め込むことができます。以下のように書き換えてください。
puts "5 + 3 = #{5 + 3}"
プログラムを実行すると、
5 + 3 = 8
エラーなく表示されます。
#{式}
は式展開と呼びます。式の計算結果を文字列に変換します。
変数と代入
Rubyでは、数学と同様に変数を扱うことができます。ここでは、xとyを使います。
変数の代入は、変数 = 値という書き方をします(左辺に変数、右辺に値や計算結果など)。
以下のように書き換えてください。
x = 5
y = 3
puts "#{x} + #{y} = #{x + y}"
Rubyは、プログラムファイルの上の行から順番に処理を行います。
実行すると、
5 + 3 = 8
同じ結果が表示されます。
Rubyでは、変数も式として扱うことができます。変数の演算は、中の数値に対して行われます。
x、yの値を実数に書き換えます。
x = 3.1415
y = 1.2
puts "#{x} + #{y} = #{x + y}"
プログラムを実行すると、
3.1415 + 1.2 = 4.3415
正しい実数の計算結果が表示されます。
キー入力
変数x、yは、プログラム中で固定の値を代入していました。今度は、キーボードから入力した値を計算して出力するようにします。
Rubyには、キーボードからの入力を受け付けるメソッドgets
があります。このメソッドは、Enterキーが押されるまでのキー入力を記憶し、Enterキーが押された時にキー入力を(改行を含んだ)文字列として返します。
改行は、改行コードという特殊な文字(Windowsの場合は¥r¥n)として扱われます。改行コードが不要な場合は、文字列末尾の改行コードを削除するメソッドchomp
を使います。
また、ここでは、文字列ではなく数値として扱いたいので、文字列を数値(整数)に変換するメソッドto_i
を使います。
プログラムを、以下のように書き換えてください。
x = gets
x = x.chomp
x = x.to_i
y = gets
y = y.chomp
y = y.to_i
puts "#{x} + #{y} = #{x + y}"
プログラムを実行してみます。数値(整数)を入力してEnterキーを押します。
5
3
5 + 3 = 8
正しい計算結果が表示されます。
このプログラムでは、プログラムが止まっているように見えるので、プログラムの意図を知らない人は、何をしてよいか分かりません。
説明を表示するように修正します。
プログラムを、以下のように書き換えてください。
puts "このプログラムは整数の加算(x + y)を計算して結果を表示します。"
print "変数xの値(整数)を入力してください:"
x = gets
x = x.chomp
x = x.to_i
print "変数yの値(整数)を入力してください:"
y = gets
y = y.chomp
y = y.to_i
puts "#{x} + #{y} = #{x + y}"
printメソッドは、putsメソッドと同じく、文字列を出力しますが、最後に改行をつけません。
説明が表示されるので、分かりやすいプログラムになりました。
メソッド
メソッドとは、数学で言う関数のようなもので、処理をした結果(値など)を返します。
putsメソッド
- 処理:文字列(改行付き)を、画面に表示する。
- 結果:なし
getsメソッド
- 処理:キーボード入力を記憶する。
- 結果:記憶した文字列(改行付き)
Rubyのメソッドには、ものに対して働きかける(処理をする)ものがあります。 書式は、もの.メソッドのように、.(ドット)でつなぎます。 ここで言うものを、オブジェクトと呼びます。
chompメソッド
- 処理:オブジェクト(文字列)の行末の改行を削除する。
- 結果:処理結果(文字列)
to_iメソッド
- 処理:オブジェクト(文字列)を整数に変換する。
- 結果:処理結果(整数)
実は、putsメソッドやgetsメソッドは、オブジェクトと.(ドット)が省略されています。 このように、単独で使うメソッドは関数的メソッドと呼びます。
また、メソッドは結合して使うこともできます。上記のプログラムは、以下のように短く書き直すことができます。
puts "このプログラムは整数の加算(x + y)を計算して結果を表示します。"
print "変数xの値(整数)を入力してください:"
x = gets.chomp.to_i
print "変数yの値(整数)を入力してください:"
y = gets.chomp.to_i
puts "#{x} + #{y} = #{x + y}"
プログラムを実行してみると、同じように動作します。
コメント
プログラム中に説明やメモを書くことができます。それをコメントと呼びます。Rubyは、コメントを無視して処理を進めます。
#(ハッシュ)を書くと、同じ行のそれ以降はコメントとして扱われます。また、行頭に書いた=beginと=endに囲まれた行(複数行)はコメントとして扱われます。
# これは1行すべてコメントです。
x = 5 # 行の途中からコメントにもできます。
=begin
この間は、
すべて
コメント
に
なります。
=end
y = 3
それでは、上記のプログラムにプログラムの説明をコメントで入れます。
# プログラム名:加算プログラム(calculation.rb)
# 説明:整数xとyを入力し、式とともに結果を出力する。
puts "このプログラムは整数の加算(x + y)を計算して結果を表示します。"
print "変数xの値(整数)を入力してください:"
x = gets.chomp.to_i
print "変数yの値(整数)を入力してください:"
y = gets.chomp.to_i
puts "#{x} + #{y} = #{x + y}"
プログラムを実行してください。コメントは無視されるので、問題なく実行されます。