模索中

人生模索中

『プロを目指す人のためのRuby入門』が良すぎたので全力でオススメしたい

伊藤 淳一さん(@jnchito) の『プロを目指す人のためのRuby入門』が良くて感激したのでこの勢いで感想を書きます。

伊藤さんと言えばQiitaやその他Webサービスで沢山のわかりやすい記事やアドバイスを書いてくださっていて、RubyistだけでなくWeb界隈の人であればお世話になってる方も多いと思います。
 
私は3年くらい前から主にRspec関連の記事で伊藤さんのことを知って、それ以来お世話になりまくり今や立派な伊藤信者です。

本書のことはブログで発表されたときから注目していました。

11月ってしばらく先だなぁと思ってたんですけど時が経つのは早いですね…。

今回の本も伊藤さんクオリティは健在で、わかりやすい説明と豊富な実例で理解しやすい技術書になっています。

Ruby関連の書籍は今年も(Python程ではないにしろ)そこそこ出ていますが完全初心者と中級者の間をスコープとしている本はこの本だけではないでしょうか。

著者の「まえがき」に対象読者について書かれているのでまずこれを読んでいただき、ご自分にヒットするようであれば読んだ方が良いと思います。

「まえがき」は本屋で立ち読みしなくてもkindleの無料サンプルで読めます。
(Matzの寄せ書きも読めます!)

気になる方は今すぐポチりましょう。

 
 
 
私は「まえがき」にあった、

Rubyプログラミングをはじめてしばらく経ったが、まだまだ自信が持てない人」

という文章を読んで

「ふぉぉぉ!俺のことじゃ~ん!(涙)」

と、なんか感極まってしまい、いきなり目頭が熱くなりましたw

私のRubyレベル

そんな私のRubyの習熟度ですが、

  • Ruby, Ruby on Rails歴4年目
  • 仕事では保守と運用が多い
  • 仕事でプルリクすると先輩エンジニアにけちょんけちょんにレビューをいただくレベル(いつもありがとうございます)
  • 4年目になってようやくプログラミングが楽しくなってきた

オススメの取り組み方

感想の前に私の取組方法ですが、写経は是非やっていただくとしてgithubに上げるとモチベーションにもなって良いです。
例題の写経は私は章毎にブランチを切って項毎にコミットしてしていきました。
https://github.com/yuki3738/cherry-book

読んだものが形になるのでとてもよいと思います。

本の感想

さて、この本を全力で褒めちぎっていこうと思ったのですが、既に素敵なレビューがあって結構言いたかったこと言われちゃっています。

mugi1.hateblo.jp

sinsoku.hatenablog.com

ayacai115.hatenablog.com

全て良記事なので是非読んで下さい!

ってか皆さん本読むのはやいですね…。

神速さんに至っては1日で読了している!
マジ神速…!(言ってみたかった。)  
 
 
 
とまぁそんなわけで、似たようなこと書いてもつまらんので私が読んでいて

「マジかっ!」

と思って付箋を貼ったところを列挙していこうと思います。

知らなかったこと

divmodメソッド知りませんでした…。

P89

14.divmod(3) #=> [4, 2]

この本で知った数日後、競技プログラミングでこれを使う場面が現れたのでただの経験不足ですね…。

delete_ifメソッド知りませんでした…。

P92

a = [1, 2, 3, 1, 2, 3]
a.delete_if do |n|
  n.odd?
end
a #=> [2, 2]

便利〜。

splat展開

P102

[*1..5] #=> [1, 2, 3, 4, 5]

大量の配列作りたいときに便利〜。

4.6.4〜5のリファクタリングの様子

P111〜113
長いので割愛しますが8行のコードが1行に。素敵…!

charsメソッド知りませんでした…。

P121

'Ruby'.chars #=> ["R", "u", "b", "y"]

ずっとsplitしてました…。

'Ruby'.split("") #=> ["R", "u", "b", "y"]

競技プログラミングでメッチャ使うので今後はchars使っていきます!

配列に初期値を設定する場合の注意点

P122

a = Array.new(5, "default") #=> ["default", "default", "default", "default", "default"]
str = a[0] #=> "default"
str.upcase! #=> "DEFAULT"
a #=> ["DEFAULT", "DEFAULT", "DEFAULT", "DEFAULT", "DEFAULT"]

ファーーーーーwwwってなりました。

シンボルと文字列の違い

P151
大して気にもしてませんでした…(爆)

配列やハッシュのfreezeについて

P257
配列やハッシュはfreezeされるけど各要素はfreezeされてないよという話。

class Product
  SOME_NAMES = ['Foo', 'Bar', 'Baz'].freeze
end

Product::SOME_NAMES[0].upcase!
Product::SOME_NAMES #=> ["FOO", "Bar", "Baz"]

これ『Effective Ruby』にも書いてあったんですけど、2年前の私はよくわからずだったようで記憶にありませんでしたw
伊藤さんの本は上記のようなサンプルコードが豊富で、まず何が問題かを提示してくれるので頭に入りやすいと思いました。

7章のクラスの説明がわかりやすい

Ruby学習の初期の頃に読みたかった…!!!と激しく思いました。

Ruby初学者の方は『たのしいRuby』を手に取る方が多いと思います。
私も約4年前『たのしいRuby』を読んだクチですが、オブジェクト指向がさっぱりだった当時はクラスの章で挫折しました…w

initializeとかattr_readerとか初学者にはわかりづらく『たのしいRuby』でもそこまで解説が厚くないです。
本書は初学者向けではないものの、クラスの説明に関しては類書と比べて抜群にわかりやすいので、最初から2冊併せて読むのもアリかなと思いました。

というか7章以降全部最高(雑)

本書は先に進むに連れて難易度が上がっていくスタイルですが、7章以降結構あやふやなところがあったので、わかりやすい説明で体系的に勉強できたのが本当に良かったです。    
 
 
 
 
と、言った感じで挙げようとするとまだまだ出てきてキリがないのでこの辺にしておきます。
当たり前ですが本の中ではコードだけでなく伊藤さんの解説付きです。

っていうかこうやって書いていくと復習になって良いですね。

まとめ

本書が読めればこの本を傍らに置きつつ、大抵のRuby本は読めるんじゃないかと思います。
私自身、今まで中途半端に終わってしまったRuby本があるので再トライしていこうと思います。
そうやって勉強を続けていれば人様のコードもスラスラ読めるようになって、OSSにコントリビュートもドンドンしていけるようになるのでは?と思っています。

本書の最初にあるMatzの寄せ書きに

Rubyを使ってワクワクしながら、楽しくプログラミングができて、しかもお金も稼げて、周囲から尊敬されて、ハッピーな人生を送っている、

という文があります。

自分、こんな人生送りたいっす!

そんなエンジニアになるための新しい武器を本書は授けてくれた気がします。

Rubyの学習の、ひいてはエンジニアとして生きていくモチベーションをさらにあげてくれたという点でも本書に感謝しています。

全力でオススメします!