Rubyの入門書でいいものを知りませんかね?という質問に対してどう答えるべきだったか?

Rubyの入門書でいいものが欲しいという話がちらっと流れてきて、親切な人たちが多い集まりなので、鉄板?であろう「プログラミング言語Ruby」からはじまり「メタプログラミングRuby」、そしてるびまの「Rubyの歩き方」はてはRHGまででてきた。

プログラミング言語 Ruby

プログラミング言語 Ruby

初めてのRuby

初めてのRuby

メタプログラミングRuby

メタプログラミングRuby

Rubyソースコード完全解説

Rubyソースコード完全解説

正直、このときるりまを示しつつもこの人に何を推薦すべきなのか悩んでいた。頭をすきっりして寝るためにここに書いておこうと思う。

入門書がほしい人とは?

入門書がほしいのですが?という質問に対してAPIリファレンスのURLを渡すケースをよく見られるのだがそれに違和感をよく感じる。渡してる人はおそらく絶対的に間違っているわけではない。たぶん、仕事や論文を書く上で参考文献として載せる場合それはとても正しい行為だと思うが、おそらく質問者の意図をくむとそれは違っている気がする。APIリファレンスの場所もわかっているしそれを必要に迫られている部分に関しては読んでいると思う。だが、途中で気づいているのだと思う。あまりにも自己流で非効率すぎるやり方を自分がしていると。高速道路がほしい。頂上に登って俯瞰した人の意見がほしい。故に入門書がほしいという話になるのだと思います。

入門者とは?

言語の入門者と一口に入門者といっても様々な人々がいます。本当に初心者で何も書いたことがない人。学校の授業で表面だけならった人。実はちょっと読めるんだけどつまみ食いで覚えたから基礎固めをしたい人。ほかの言語をそこそこ使っているが対象の言語を使ったことがない人などが考えられます。

レベル的に、

本当に初心者で何も書いたことがない人<学校の授業で表面だけならった人<実はちょっと読めるんだけどつまみ食いで覚えたから基礎固めをしたい人<ほかの言語をそこそこ使っているが対象の言語を使ったことがない人

このように分けられると考えた場合、異論はあると思いますが最初の2つのケースはいわゆる本当のプログラムのイロハが書いてある入門書を読むかチュートリアルをこなすかするのが妥当だと思います。問題はそれ以降のレベルの人たちでおそらく言語を超えたパラダイムのものでまかなえる概念のものはすでに習得しているはずなんですね。言語固有の特性やメジャーなOSSのプロダクトを読むために知識がほしい、もしくは作りたいといったレベルじゃないかなぁと思うんですよね。本質的にはここのレベルに到達した場合基礎力の差が諸にでてくるので安易な解決方法はすくなくとも言語入門書にはなくて全く別のレイヤーの別のものに入門しなければならないわけで正直時間が非常にかかります。そこまで追ってると時間がかかりすぎるよというのは本音でしょうから、いいソースコードや入門書がないですか。という質問に戻ってくると思います。あまり好きではないですが、背に腹は代えられないケースは当然あるのでショートカット案を考えます。要は未知のものがでてきてすごく時間をとられることが問題なので、その言語のどの機能をどうやって書くかが網羅されているものをとりあえずチェックする。固有の単語、概念などをつぶしておくなどが有効じゃないかなって気がします。(ただ、これはホントに言語を使いこなしているというレベルの人の前ではバレます。バレたからどうということは全くありませんが。)

今回の質問者にすすめたらよかったんじゃなかというもの

おそらく今回の質問者は後者の人なので割と簡単に読める逆引き系あたりが有効かなという気がするので「The Ruby Way」か最近のメジャーなプロダクトの解説も載ってる「パーフェクト Ruby」あたりが妥当だったじゃないのかなぁと思いました。

Ruby Way 第2版 (Professional Ruby Series)

Ruby Way 第2版 (Professional Ruby Series)

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

追記

自分にとってこの入門書がすばらしかった(256や初めてのRubyなど)や、rubyの為にmrubyやるとかあったりして様々な入門書への出会いやアプローチがあり、そして考え方があるんだなぁとコメントを眺めていて思わされました。内容や記事を読んでくださる方へ気になるコメントとしては、「The Ruby Way」は好きだけどちょっと昔で今では使用されてないものもあって現時点(201310)においておすすめではないなという話もあり、私もこの本、よくある逆引きの適当さが良い意味でなくてすごい好きなんでだしました。ただ、本の場合は常について回る問題なのですが、特にこういうRubyの様なLL言語の場合移り変わりが非常に激しいので出版年数によって言語のライブラリなどのはやり廃りの問題はあるのでそこは購入を検討される方は気になされた方がよいかもしれません。ただ、わかりやすいし個人的には僕は好きです。あと、他言語で特にJSやCなどは沢山の入門書などがでているのでどなたか詳しい人書いてほしいなぁというコメントもありまして。私も知りたいです。何方か詳しい方いらっしゃいましたら書いて欲しいなぁ