プログラミング入門　- Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama
    

# 11. このチュートリアルを超えて

さて、それではこれからどこへ行きましょうか。もし質問が出てきたら、
誰に聞けばいいのでしょう。あるいは、プログラムでWebページを開いたり、
メールを送ったり、デジタル画像の大きさを変えたりしたくなったとしたら
どうしたらいいでしょう。Rubyのヘルプを見つける場所は非常にたくさんあります。
不運にも、このことはあまり助けにはなりませんね。

私についていえば、Rubyのヘルプを探す場所は、実際たった3個所です。
それが小さな疑問で、自分で実験して答えを見つけることができそうなときは、
irb を使います。そしてもう少し大きな疑問のときは、
ピッケル本(pickaxe)を開きます。
そして、もし自分で理解できないときにはruby-talk に助けを
求めます。

## IRB: インタラクティブRuby

Rubyをインストールすると、irbが使えるようになっているはずです。
これを使う方法は、コマンドプロンプトから、irbとタイプするだけです。
irbの中では、望みのRubyの式をタイプすると、その値が表示されます。
たとえば、1 + 2と打つと、3が得られます。
(ここで、putsを使う必要が無いことに注意してください。)
たとえていえば、これは大きなRuby計算機のようなものです。
終了するには、exitとタイプしてください。

これ以外にirbにはもっとたくさんのことができるのですが、それはすべて
ピッケル本で学ぶことができます。

## ピッケル本: 「プログラミングRuby―達人プログラマガイド」

Rubyに関する手に入れるべき本と言えば、David Thomas と Andrew Hunt (達人プログラマ)
著の「プログラミングRuby, 達人プログラマガイド」は絶対にはずせません。
(訳註：現在、Ruby1.8に対応した第2版が出版されています。この版の翻訳本は言語編とライブラリ編とに
分かれて二分冊で発売されています。)
このすばらしい本の書籍バージョンを買うことを強くお勧めはしますが、
この本は、オンラインで無償で手に入れることもできます。
(実際、あなたが、WindowsバージョンのRubyをインストールしたなら、
すでに、それは中に入っていたと思います。Andrew HuntはこのWindowsの
Rubyインストーラーを作っている人物でもあります。)

この本には、Rubyに関しての基礎から高度な内容まで、ほとんどすべてを見つけることが
できます。読みやすく、広範囲にわたった記述があり、ほとんど完璧に近い出来です。
すべての言語に、このくらいの質の本があったらと思います。
この本の後半では、多くのページを割いて、すべてのクラスのすべてのメソッドについて
例を挙げながらの詳しい解説が載っています。
私はこの本が大好きです。

これを手に入れるには、(達人プログラマ自身のページを含め)多くの
場所がありますが、私のお気に入りのサイトは、
ここです。
このサイトのバージョンは素敵な目次と索引が左横にありますが、
特にすばらしいと思えるのは、画面下部のフレームです。
ピッケル本が出版されてから、Rubyは幾分か改良を加えられてきています。
Rubyのコミュニティはその変化を記録しオンライン上に投稿しつづけています。
この画面下部のフレームでは、オリジナル本に関する追加や訂正が
記述されているのです。

そして、なぜ「ピッケル(the pickaxe)」と呼ばれるかなのですが、それは、
この本の表紙カバーにピッケルの絵が描かれているからです。
変な名前ですが、すでに定着してしまいました。

## Ruby-Talk: Rubyのメーリングリスト

irbやピッケル本をもってしても理解できないことはあるでしょう。
あるいは、今あなたの行っていることがなんにせよ、すでに行われているかどうかとか、
その結果を作る代わりに使わせてもらえるかどうかなど、知りたい時もあるでしょう。
こういった場合、行くべき場所はRuby-talkというRubyのメーリングリストです。(訳註：
Ruby-talkは英語のメーリングリストです。日本語のメーリングリストは、Ruby-listです。)
そこは、親切で、賢くて、助けになる人々であふれています。
これに関して、もっと知りたい、あるいは登録したいと言う場合は、
ここを見てください。

警告: 毎日、非常に多くの メールがメーリングリスト上に
流れています。私は、自動的に他のメールフォルダーに移動するようにして、普段の
メールとは別にしています。このメーリングリストのメール全部を読みたいので
なければメーリングリストに参加する必要はありません。ruby-talkメーリングリストは
ニュースグループのcomp.lang.rubyにお互いにミラーされていますので、こちらでも同じ
メッセージを見ることが出来ます。どちらにしても、少し異なったフォーマットで、
同じものが読めます。

## ティムトアディ

ここまで、私があなたから遠ざけていて、多分今後すぐに遭遇すること。
それは、TMTOWTDI(ティムトアディと読みます)という概念です。これは、
There's More Than One Way To Do It.(やり方はひとつではない。)
の頭文字です。

ある人は、TMTOWTDIがいかにすばらしいかを語るかもしれません。またある人は全く
違った考えを持っているかもしれません。私は、これに関して特に強い気持ちを持って
はいませんが、プログラムの方法を教えるという立場では、望ましくはない
ものだろうと思っています。(何かをやるのに、ひとつの方法を覚えることでも、
かなりの挑戦を伴い、十分に混乱してしまうというのを否定しているように感じます。)

しかし、このチュートリアルを離れていくあなたは、もっともっといろいろなコード
を見ることになるでしょう。たとえば、私は、文字列を作るのに(ある文字の並びを
シングルクオーテーションマークで囲うという方法の他に)、少なくとも5つの方法が
あリ、それぞれ少しずつ違っているということを思いつきます。
私はその6種類の方法の中で最も簡単な方法しか見せませんでした。

そして、分岐の説明をしたときに、私は、ifを示しましたが、
unlessについては述べませんでした。これについては、irbで
動作を確かめることを勧めます。

もうひとつ、ifやunlessやwhileを使うときに
うまい、ちょっとしたショートカットの方法があるのですが、それは
1行バージョンというやつです。

# 次の単語たちは普通の英語の文章のように書ける、プログラムの一部です。
# クールでしょ？
puts 'あいうえお　かきくけこ' if 5 == 2**2 + 1**1
puts 'さしすせそ　たちつてと' unless 'Chris'.length == 5

あいうえお　かきくけこ

そして最後に、(手続きオブジェクトではなく)ブロックをとるメソッドを書くもうひとつの
方法を示します。ブロックを受けてこれを手続きオブジェクトに変換するときには、
関数定義の引数リストの最後に&blockをつけるという方法を見てきました。
そして、ブロックを呼び出すときには、block.callとしました。
でも、これには別のもっと短い方法があります(私個人としては、より混乱するように
思えるのですが)。次のようなブロックを受ける方法があったとして、

def doItTwice(&block)
block.call
block.call
end
doItTwice do
puts 'いろはにほてと　ちりぬるを'
end

いろはにほてと　ちりぬるを
いろはにほてと　ちりぬるを

その代わりに、次のようにも出来ます。

def doItTwice
yield
yield
end
doItTwice do
puts 'わかよたれそ　つねならむ'
end

わかよたれそ　つねならむ
わかよたれそ　つねならむ

私には分かりませんが、どう思いますか？私だけが感じることかもしれませんが、
yieldですって？　もしたとえば、call_the_hidden_blockのような
名前なら、ずっと 受け入れられるのですが。
多くの人が、yieldは分かりやすいというのです。(訳註：訳者もyieldの方が良いと思います。)
どちらにしても、これがTMTOWTDIがある理由なのかもしれません。好きなようにやれば良いのです。
私も私のやり方でやります。

## おしまい

これを良い目的に使ってくださいね。 :) もし興味があったら、
about this tutorial
で、もう少し学ぶことが出来るでしょう。で、もし使えるなと(あるいは、
分かりにくいなとか、間違ってるよとか)思ったら、
知らせてください!
(訳註：pineさんには、原文をあたってから
質問してください。日本語訳に関する誤りやサジェスチョンは、
こちらまでお知らせください。)