hirapi's blog

ちゃんとしたふりをする

『プロを目指す人のためのRuby入門』を読んだ

gihyo.jp

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ) | 伊藤 淳一 |本 | 通販 | Amazon

を読んだ。以下「チェリー本」と呼ぶ。
フル写経はせずに、初めて見たり自分でぱっと書けなかったりする書き方をかいつまんで、結果たぶん半分くらい写経した。
例題もできるだけ解説前に書いてみて、あと「ここをこう変えたらどうなるんだろう」的なことも自分で試しながら読んだ。写経よりこっちのほうが多かった気がする。
3日間かけてトータル10時間弱で読み終えた(時間/日が小さいのは集中力の無さゆえである)。

対象読者について、冒頭にこうある。Yesが多いほど向いているらしい。

Q1. すでにほかのプログラミング言語で3年以上の開発経験がある。もしくは「プログラミング歴 = Ruby歴」で、Rubyを始めてから半年以上経っている。
Q2. Rubyを学習する動機はRailsアプリケーションの開発に役立てるためだ。
Q3. すでに仕事でRubyを使っている。もしくはこれからRubyを使った仕事に就こうとしている。

(↑↑の含まれるまえがきは最初にリンクを貼った技術評論社のサイトで読むことができる)

私について言うと、Q2とQ3はYesで、Q1はNoになる。プログラミング歴はPHPの2年半、Ruby歴は2ヶ月くらい?
でも全然問題無かった。むしろ(私みたいに)プログラミング歴浅い人こそ、この本をベースに基本的な概念を学んでいってもいいと思った。

せっかく読んだので、良いなと思ったところを2つだけ。

説明が上手

(どこから目線だという。すみません)
とにかく話が上手い。
まえがきでも触れられているとおり、各章が「例題の紹介 → 基礎知識 → 例題の解説 → 応用知識」という構成になっている。
この章立てのおかげで、読んでいる側は素直に読み進めていくだけでRubyのいろんなテクニックについて↓↓を自然にのみこんでいくことができる。

  1. 解決したい問題
  2. 1に必要な知識
  3. 2を使った1の解決方法
  4. 1以外の様々な類題のための知識

最初から逆引き的に使うのは難しいけど(一読後ならできる)、私みたいな初学者がRubyを「ひとさらい」するにはとてもちょうどいい。
なんというか、読んでいて「作者が読者に理解してほしいこと」がわかる。私はこれを読んで何を理解しなければならないか、次コードを書くときいつどれを適用させていけばいいのか、そういったことがなんとなく腹落ちする。

まえがきに対象読者が明記されていることからも感じられるけど、すごく練って書かれたんだなと思う。
私もブログとか発表資料とか書いていく中で見習っていきたい。

同一著者の関連記事が豊富

Rubyをやる前から筆者の@jnchitoさんのことは知っていた。それくらいアウトプットがすさまじい方。
チェリー本の中で何度か「ここらへんよく知らない人はこの記事を読んでね!」と伊藤さんのQiita記事が紹介されていて、例えば正規表現のところは特に必読として下記のシリーズが挙げられている。

初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita

これがとても良い。すごく良い
同じ文体で関連事項も学べるというのは読む側にとって大きなメリットだと思う。

たいていの人には文体がある。
同じ内容を伝えようとしても、人によって話し始めも違うし、言葉選びももちろん違う。
反対に、同じ人が2つの記事で違う内容を伝えようとするとき、話し始めや言葉選びは記事間で似通っている。
読む側は多かれ少なかれ、筆者のそういう癖に合わせてテキストを読む必要がある。(SNSで知らない人の投稿を突然読んでもよくわからなかったりすぐ誤読したりするのはこれがうまくできないからだと思う)

そういう意味では、例えば「Progateをやりながら、関連事項を調べるためにRailsガイドを読む」というのは(私もよくやるし良いことだけど今の話の文脈で言うと)文体のパーサをスイッチングするコストが知らないうちにかかっている。
この点「チェリー本を読みながら、関連事項を調べるために伊藤さんのQiita記事を読む」というのは読者側のスイッチングコストがほとんど0になる。
だから読者は同じ本のコラムを読むような気分で、本文と同じくらい濃い解説記事を読むことができる
結果、疲れず飽きずスムーズに周辺知識も取り込むことができる。と思う。


他にも、例題解答の設計が現実的だったり、伊藤さんご自身も推していたように開いたままにしやすい紙を使っていたりと良いところはあるけど、特に感じた2つを挙げてみた。
「ここはもっと良くなれる!」というのは今のところ別に無いけど、もし読み返したときに思うところがあったらまたどこかに書く。

年末の3日間で読めてよかった、Rubyがんばろって思えた。