以下の文章は、Martin Fowler による Simple Ruby Syntax の日本語訳である。


最終更新日: 2003年3月

Ruby は私が思うほど広く使われてはいないようだ。ここでは、私の記事の中に出てくるコードを読めるよう、必要十分な Ruby のシンタックスを紹介する。

Ruby はオブジェクト指向言語であり、クラスとメソッドがある。クラスはclassというキーワードで始まり、メソッドはdefというキーワードで始まる。すべてのブロックはendで終わる。クラス内のインスタンス変数は@から始まり、グローバル変数は$から始まる。アクセサ付のインスタンス変数を宣言するには、attr_accessorを用いる。initializeメソッドはオブジェクトが生成されるときに呼び出される。

「ブロック」は、Rubyの素晴らしい機能のひとつだ。コレクションをループする処理は良い例である。ここでは、「注文コレクション」中の「注文」を出力するシンタックスを2つ挙げた。どちらも同じ処理を行う。

 orders.each {|o| print o}

 orders.each do |o|
   print o
 end

ブロックはリソースを自動的に解放してくれるから便利だ。これを見て欲しい。

 $dbh.select_all("select * from FOO") do |row|
   print row
 end

この実行メソッドは必要な statement と result set オブジェクトを生成し、ブロックの終わりにそれらを確実に close する。Java や C# では、このようなブロックを使うことは難しいか、不可能であろう。(今は別の言語を使っている)旧Smalltalkerはこの機能を待ち望んでいた。

$dbhはデータベースのハンドラである。dbiパッケージにちなんで省略した)

Rubyの配列は動的なリストである。配列は[foo, bar]のように生成することが出来る。空の配列は[]のようにして生成できる。要素を配列に追加するには、<<を使用する。

Rubyはハッシュ(連想配列、ディクショナリ、ハッシュマップ)も持っている。空のハッシュは{}のようにして生成できる。要素にアクセスするにはaHash[aKey]のように行う。

複数行の文字列を作るのに「ヒアドキュメント」という機能がある。そういったテキストを作るときは、sql = <<-END_SQLで始める。END_SQLに続く部分はすべて文字列となる。#{anOrder.price}のようにして、動的に文字列を挿入することもできる。

Rubyについてもっと知りたい場合は、Andy Hunt とDave Thomas による名著を強くオススメする。オンラインでも読めるので、ケチなひとはこちらで。それから、Rubyのホームページはここにある。

改定履歴

メジャーアップデートをしたときにここに記す。

  • 2003年3月:

  • 日本語訳:kdmsnr

コメント

  • 2008-12-03 (水) 10:45:37 umejava : and is something old Smalltalkers miss a lot.の訳は、「(今は別の言語を使っている)旧Smalltalkerはこの機能を待ち望んでいた」ということだと思います。SmalltalkもまさにRubyと同様、リソースを自動解放するためにブロックを使いますので。
  • kdmsnr : ありがとうございます。反映しました。