ある暑い夜,僕は完ぺきな女性に関する小説を読んだ。読み終えたとき僕は奇妙な感覚に襲われた。小説で語られるような完ぺきな人なんて,現実にいるのだろうか。

 もし居たとしても,そんな人と巡り会えるのかわからない。幸いにして巡り会えても,うまくやれるかどうかわからない。「やぁ,こんにちは!ところで,君は僕にとっての完ぺきなんだ」。僕はそんな場面を想像できない。

 大学以来からの友人Kに話したら,笑われるだろう。そして,こういうに違いない。「いつも君が言ってるじゃないか,完ぺきなんて存在しない。だから完ぺきなプログラミング言語も存在しないって」。それは,その通りだ。

 さて,この入門連載では,Rubyを網羅的に知るよりも,「取りあえず使えるようになる」ことを目指している。前回は,Rubyで非常に重要な配列やイテレータを説明した。加えて文字列操作を知れば,あなたのRubyの世界はとても広大なものになるだろう。

 しかし,単純なプログラムは書けるかもしれないが,少し複雑なものを書くことは大変だ。そこで今回は,メソッドの定義方法を見ていこう。共通的な処理をメソッドとして部品化してやれば,コードはずっとシンプルになる。複雑な処理を記述する第一歩にもなるだろう。

 いつも通り友人Kからの依頼があると思っていたら,彼は狙っている女の子を誘って,集団旅行に出ているようだ。なので,今回は友人Kからプログラムの要望はない。

 そこでというわけでもないが,友人Kがいない間に,メソッドについて解説したあと,個人的に興味がある“オモロー”(面白い)なツールを作ってしまおう。これは,ちょっとしたことから知り合いになった友人Nとの会話で作ろうと思った,いわゆる「世界のナベアツ・プログラム」だ。

基本的なメソッドの定義方法を知る

 メソッドは今の段階では,「実際にプログラムが行う処理をまとめたもの」と考えておこう。リスト1に簡単なメソッドを利用したプログラムを書いてみた。メソッドは,「def」という文字列から「end」までで定義する。

 def メソッド名
  処理内容
 end

def love_me
  puts "do!"
end

love_me ------------(1)
リスト1●メソッドを定義したプログラム

 リスト1では,love_meというメソッドで,「do!」という文字列を表示する処理を定義している。defとendの間で定義したlove_meというメソッドを(1)で呼び出しているだけだ。この崖の上の雑草のように面白くもないメソッドに,引数を与えてみよう。リスト2のようになる。

def love_me a,b
  puts "do!"+a+" :: "+b
end

love_me ("did" ,"done")
リスト2●リスト1に二つの引数を持たせたプログラム

 リスト2の定義では,二つの引数「a,b」を取るように変更した。崖の上の雑草のようなコードが,崖の上のタンポポのようになっただけで,特に面白さは変わっていない。aという変数に「did」を,bという変数に「done」という文字列を格納し,出力しただけだ。