目次へ

1. Rubyとは(2)

1.5 プログラム解説

前章のプログラムをもう少し詳しく見ていきましょう。この1行にRubyプログラムを記述するにあたって必要なことが多く含まれています。

puts "Hello! Ruby"

putsメソッド

メソッドとは、ある特定の処理に名前を付けたものです。ソースコードの最初に書かれているputsは「引数の値を出力して改行する」という処理を行うメソッドです。
Rubyのメソッドでも他の言語と同様に、引数を渡すことができます。今回のputsメソッドでは「”Hello! Ruby"」を引数として渡しています。
他の言語では引数部分を()で囲うものもありますが、Rubyでは()を省略可能です。

文字列

次に引数の文字列を見ていきましょう。文字列は「"」(ダブルコーテーション)か「'」(シングルコーテーション)で囲う必要があります。
「"」で囲った文字列に「\n」などのエスケープシーケンスが含まれていた場合、エスケープシーケンスが有効となりますが、「'」で囲った場合はエスケープシーケンスは単なる文字列として扱われます。
ただし、例外として「'」で囲った文字列内で「'」や「\」を利用したい場合、「'」は「\'」、「\」は「\\」と表記します。

  puts "Hello\nworld"
  puts 'Hello\nworld'
  puts '\\Hello\'world\''

■ 実行結果

> ruby escape_test.rb
Hello
world
Hello\nworld
\Hello'world'

行の区切り

今回のソースコードは1行だけでしたが、複数のコードを記載する場合は改行して次の行に書きます。もし一つの行に複数のコードを記載したい場合は、間をセミコロンで区切ります。
つまり、次に示すプログラムはどちらも同じ結果となります。

puts "No1"
puts "No2"
puts "No1";puts "No2"

■ 実行結果(どちらも同じ実行結果です)

>ruby puts_test.rb
No1
No2

1.6 数値

数値をソースコード内に記載する場合「"」や「'」で囲う必要はありません。
また、四則計算(+,-,*,/)も可能です。

puts 1
puts 1 + 1

■ 実行結果

>ruby num_test.rb
1
2

1.7 その他の出力メソッド

コマンドプロンプトに表示するメソッドとして、putsメソッド以外にprintメソッドとpメソッドがあります。
printメソッドは引数の値を出力した後改行しません。

print "My name is "
print "Yamada"

■ 実行結果

>ruby print_test.rb
My name is Yamada

pメソッドは、引数の値を文字列なのか数値なのかわかりやすく表示することができます。開発するにあたって引数の値を厳密に表示したい際に便利です。

p "1"
p 1

■ 実行結果

> ruby p_test.rb
"1"
1

1.8 コメント

ソースコードに対して補足説明をつけたい場合や、あるコードを一時的に実行させたくない場合にはコメントを利用します。
コメントは「#」で始まり、以降行末までがコメントとなります。

# この行はコメントです。
# puts "comment"
puts "not comment"

■ 実行結果

> ruby comment_test.rb
not comment

複数行のコメントの際、コメントとなる文章を「=begin」「=end」で囲ってもコメントとして扱われます。こちらは「埋め込みドキュメント」といいます。

=begin
この行はコメントです。
複数行書くことができます。
=end

1.9 文字コードとマジックコメント 2

Ruby ではマジックコメントでソースコードが書かれているエンコーディングを指定することができます。
エンコーディングを指定しなかった場合は UTF-8 として扱われます(Ruby1.9 では US-ASCII がデフォルトでした)。

# coding: windows-31j
puts "日本語の表示"

マジックコメントはソースコードの1行目(1行目がshebang1である場合は2行目)に「# coding: <エンコード名>」と記載します。
ソースコードはマジックコメントに記載した文字コードで保存しましょう。
Windows環境であれば「windows-31j」、UNIX環境であれば「utf-8」か「euc-jp」にすると良いでしょう。

Ruby における文字列の扱い

Ruby における文字列の扱いは、バージョンを重ねるごとに改良されてきました。
まず、Ruby1.9 で文字列オブジェクトごとにエンコーディング情報を持つようになるという大きな変化がありました。
また同時に、文字列の内容(バイト列)がエンコーディングに適合しているか厳密にチェックされるようになりました。

Ruby2.0 ではエンコーディングの扱い自体には変更はありません。
ただし、デフォルトのエンコーディングが US-ASCII から UTF-8 に変更されました。

文字列の内容がエンコーディングに適合しない場合はエラーとなります。
例えば、先ほどの「日本語の表示」と出力するソースコードのエンコーディングに US-ASCII を指定したとします。

# coding: US-ASCII
puts "日本語の表示"

これを実行すると、以下のようなエラーとなります。

■ 実行結果

>ruby magic_comment_test.rb
magic_comment_test.rb:1: invalid multibyte char (US-ASCII)
magic_comment_test.rb:1: invalid multibyte char (US-ASCII)

1 shebang(シバン)とは、Ruby等のスクリプトファイルの1行目に記述される「#!」からはじまる行のことです(例えば「#! /usr/bin/ruby」のように記述します)。Windowsでは、「ファイルの関連付け」でファイルの拡張子ごとに実行するプログラムを指定しますが、UNIX系のOSではshebangにて、スクリプトファイルごとに実行するプログラム(インタプリタ)を指定することができます。shebangがあるスクリプトファイルは、コマンドにてファイル名を入力するだけ実行できます。

2 2013/06/09 Ruby2.0 に合わせて内容を加筆修正しました。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ