「プロを目指す人のためのRuby入門」を読んだ感想

一応、お仕事で Ruby やっているプロだけど、本の内容が気になったので買ってみました。

昨日、先行販売している紀伊國屋書展 新宿本店で購入(正式発売日は11月25日)。

ラス2だったので、結構ギリギリ。そして、一気に読んでみた。

技術書は油断するとすぐ積み本に進化するので、意識高まった時に読み切った方が良い。

私のRuby

  • プログラマ歴は10年くらい
  • 仕事で Rails を6年くらい
  • Rails 含め gem のソースコードは普通に読む
  • メタプロやモンキーパッチは普通に使う
  • gem にプルリク投げることもある

どう見ても、Ruby入門者ではない。

本の感想

対象者について

本書はプログラミング未経験者向けの本ではない点に注意してください。 http://blog.jnito.com/entry/2017/11/20/054316

著者の @jnchito さんも自身のブログで紹介しているように、プログラミング未経験者向けではないです。 ただ、「入門書なので Ruby 上級者には役に立たない」なんて事もなかったです。

初心者と中級者は悩む必要なく買って良いと思います。 将来、プロとして Ruby のプログラミング書くなら、これだけ実践的で分かりやすい本を買っておくのは良い投資です。

gem のソースコード読んだり、メタプロ使いこなすような上級者に関しては9割知ってる内容だと思うので、ざっと目を通して Ruby 雑学*1を理解したあと、周りの初心者にオススメするのが良いです。 上級者の方々は若いエンジニアに教える機会も多いだろうし、そういう時に役立つと思います。

Windows 環境をフォロー

Web 上には動作環境の記載されていない情報が溢れているので、初心者だと問題が起きたときに調査に時間かかることが多い。

本書には Windows 環境で起こる問題への対応方法が丁寧に書かれているので、入門者でも安心して読めそうです。

エラー内容を日本語で説明

「エラーメッセージを読み、理解してからソースコードを直す」といった慣れた人にとっては当然の所作を、入門者でも分かるように手順を1つずつ説明していて、このあたり流石だなと読みながら感じました。
英語のエラーメッセージに日本語訳もつけてあるので、英語が本当に苦手な人でも本書は理解しながら読み進められると思います。

さらに「英語が苦手でも辞書片手に調べるのが大事」「Webの記事は注意して読みましょう」など、英語から逃げずにエラーメッセージをちゃんと読む姿勢についても言及されていて非常に良い。英語を読むのは本当に大事。

サンプルコードが豊富

サンプルコードは基本的にテストを先に書くようになっており、自然とTDDの基本的な考えを学べるようになっています。

Ruby動的言語なのもあってテスト書くのがとても大事なので、「テスト書くのが普通」になるような例題の作り方は素晴らしいと思いました。

個人的に勉強になったもの

だいたい知っている内容だったのですが、個人的に「へぇー」と思ったのは下記の2つ。

  • splat展開で配列を結合する話
  • :: でメソッド呼び出しできる話

仕事で使うかは微妙だけど、Ruby 雑学として勉強になりました。 あとは「ここ数年使ってないけど、そういえば(そんな記法も)あったな」て内容がちょこちょこ紹介されていて面白い。

入門者に紹介したくなった項目

本読みながら、「ここに1行追加して入門者に紹介したい!」って事が1つあったので、ブログで紹介しておきます。

Predicate Methods / Bang Methods

英語だと?で終わるメソッドは「Predicate Methods」、!で終わるメソッドは「Bang Methods」と呼ばれています。

Web の記事を読んだり、検索する際に知っていると少し便利です。

本書の良くないところ

個人的に何かを勧めるときはデメリットも挙げておくのが好きなので、あえて書いてみる。

Twitter にも書いたように、リーダブルじゃない記法まで紹介されていて少し気になりました。 入門書なのに、メインの章内でほぼ使わないような記法まで紹介されていて、入門者にとっては覚えること多くて少し大変かも?

とはいえ、微妙な記法には必ず「極力使わない方が良いです」と説明されていますし、「プロを目指すため」なら知っておくべきなので、紹介されている方が良い気もする。

無理やり挙げた感じのデメリットです。
というか、他に挙げるところが思い浮かばないくらいに良い本だったんですよ。

まとめ

「分かりやすく、読みやすい。そして、実践的。」

と、Ruby 入門としてはかなり良い本ではないかと思います。

あと、個人的にはサンプルコードが豊富で写経しやすい本なので、電子書籍よりは紙の方が便利かなと思いました。

*1:仕事で使うには読みづらく、微妙な記法だけど Ruby としては正しい構文