伊藤淳一さん(@jnchito)の『プロを目指す人のためのRuby入門』、やってみました。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
伊藤さんのRuby入門本が出ると聞き、即Amazonで予約したのですが、たまたま「書評書くなら1冊プレゼントします」という企画に当選し、幸運にも発売前に入手することができました。
1週間かけてざっとひと通りやってみたので、いちRuby初心者としての感想を書かせていただきます。
この本の対象者
まずは以下の質問に答えてみてください。
Q1.すでにほかのプログラミング言語で3年以上の開発経験がある。もしくは「プログラミング歴=Ruby歴」で、 Rubyを始めてから半年以上経っている。
(Yes/No)
Q2.Rubyを学習する動機はRailsアプリケーションの開発に役立てるためだ。
(Yes/No)
Q3.すでに仕事でRubyを使っている。もしくはこれからRubyを使った仕事に就こうとしている。
(Yes/No)
みなさんはいくつYesになりましたか?
3つともYesになった方は、本書がみなさんのニーズを満たして いる可能性が高いです! 反対に、3つともNoだった方は残念ながら本書がお役に立つ部分は少ないかもし れません。Yesが1つ、または2つだった方は、もしかするとみなさんのニーズにマッチする部分があるかもし れないので、もう少しじっくり本書の内容を吟味してください。
これはこの本のまえがきからの引用です。
たまたまネットでこれを見かけた私は、3つともYesだったこともありその場で購入を決めました。
Ruby歴/プログラミング歴6ヶ月の初心者が次のステップに進むのに最適
私のRubyまわりの経験は以下の通り。
- プログラミングスクール 3ヶ月 + 実務3ヶ月
- プログラミング歴:6ヶ月
- Ruby / Ruby on Rails:6ヶ月
- Sinatra:2ヶ月
プログラミング歴=Ruby歴です。まだ半年、もう半年。
プログラミングスクールで初めてプログラミングに触れ、卒業後web系の会社にサーバーサイドエンジニアとして就職。Rubyを使っています。
最初はRailsを通してRubyを学んでいる状態だったのですが、ここ2ヶ月のプロジェクトでSinatraを使い始め、RailsではなくRubyを学ぶ 、という意識がちょうど芽生え始めているところでした。
「聞いたことはあるが理解はしていない」分野を、ひとつずつ掘り下げられる
6ヶ月もRubyを触っていると、Rubyの基本的な機能の大半については「聞いたことはある」「見たことはある」レベルにはなります。そういうレベルの自分にとって、本書の包括的かつ丁寧な解説は大変ありがたいものでした。
例えば、
- ハッシュ / シンボル / クラス / 繰り返し処理 など、普段当たり前のように使っているがちゃんと理解できているかは怪しいもの
- yield, Procなど、聞いたことはあるが使い方がよくわからないもの
- &. %q === || など、会社のプロダクトのコードでよく見るけど理解できていなかったもの
など、基本的な概念からtips的なコードまで、幅広くカバーされています。
テスト駆動開発を実践できる
仕事で調査などをしていると、○○駆動開発という単語にたびたび遭遇します。
中でもよく聞く「テスト駆動開発」を実践できたのも、本書のよい点でした。
具体的には、各章に例題があり、まずテストコードを書いて、その後実装を書いていき、こまめにテストを実行しながら実装を進めていきます。
これにより、
- ○○駆動開発の概念
- テスト駆動開発の順序
- テスト→実装という考え方
- テストコードの書き方
- テストの対象とすべき箇所
- テストと実装の対応のさせ方
など、多くのことを学べました。
実践に勝るものはなし、ですね。。
写経でひたすら手を動かせる
とても写経のしやすい本です。
具体的には
- 写経箇所が明示されている
- 実行方法/実行結果が明解
- 開きやすい ← 重要!
です!
開きやすさに関しては、著者の伊藤さんもこだわられたようです。
PCの横に置いて写経しやすいように、最初の方や最後の方のページでも本を開いたままキープできるような紙がいいです、って伝えておいたので、ちゃんとキープできてる。ありがとう編集者の吉岡さん! #プロを目指す人のためのRuby入門 pic.twitter.com/6zuMIzXbiq
— Junichi Ito (伊藤淳一) (@jnchito) 2017年11月18日
また、「写経箇所が明示されている 」のもとても重要です。
技術本を買ってみたものの、どこをどう実践していけばいいのかよくわからない…ということがよくあります。本書は頭から最後まで写経を通して実践してねという姿勢が明確で、読む側としても迷うことなく進めていくことができました。
注意:プログラミング未経験者向けではない
コードを書いたことがない人向けではないです。
基本的な文法などは習得していることが前提のようでした。他の方のレビューにもありますが、他言語経験者がRubyを始めるのにはちょうど良いそうです。
あ、著者の方自ら注意されていますね。
注意:プログラミング未経験者向けの本ではありません
本書はプログラミング未経験者向けの本ではない点に注意してください。 本書で想定している読者は、他の言語で開発の経験があったり、すでにある程度Rubyプログラミングを進めていたりする人です。 「変数とは」「配列とは」といった「プログラミングの基本のキ」は説明していないので、まったくプログラミングをやったことがないという人は、先に別の書籍やオンライン教材で勉強しておくことをおすすめします。
筆者自らが語る「プロを目指す人のためのRuby入門」のこだわりと見どころ - give IT a try
今後なんどもやり直したい
読者のレベルに応じて、それぞれ違うことが学べるのだろうな、というのが本書の印象です。
この3ヶ月、仕事でコードを書いていて「こんな機能があったらいいのになあ」とか「これはなぜこういう書き方をしているのだろう?」と思っていたことが本書でちょくちょく言及されていることがあり、そういう箇所はより納得できることもあり、よく吸収できたと感じます。
一方で、一度読んだだけでは理解できていない箇所も多くあり、それは今後仕事でいろんなコードに遭遇していくことで吸収できていくのだろうなと思います。
結論、仕事と本書を両輪で進めていくイメージで、2,3ヶ月ごとに本書をやり直せば、その度に新たな発見があるのだろうな、という印象です。
読了後のTODO
本書をやり終えてみて、次やろうと思ったことを書いてみます。
『詳説 正規表現 第3版』をやる
本書の正規表現の章で紹介されていた、オライリーの正規表現本をやってみようと思います。
仕事でもちょくちょく正規表現を使い始めたのですが、まだまだググってコピペからは脱せず…
今回のRuby入門の正規表現の章をもう何周かしたあとで、このオライリーに挑戦してみようと思います。
『Rubyによるデザインパターン』をやる
本書で紹介されていたわけではないのですが、『Rubyによるデザインパターン』という本をやってみようと思います。
プロダクト用のコードをゼロから書く機会があって、そこで設計の難しさ/面白さを実感。もっともっといい設計をできるようになりたい、と思っているところでした。
今回のRuby入門本を通して改めて基礎を固められたので、次はデザインパターンをやりたいなと。
『プロを目指す人のためのRuby入門』をもう一度やる
上にも書きましたが、本書はこれからなんどもやり直したいです。
特に今回はまずはざっとひと通りやってみただけなので、もう何周かして、自由自在に使えるレベルにまで持っていきたいです。
仕事と本書を両輪で進めていくイメージ、ですね。
おわりに
本当にいいタイミングで、いい本が出てくれたな〜というのが個人的な感想です。
実務経験3ヶ月、実際にプロダクトのコードをゼロから書いていくなかで様々な疑問が浮かぶものの、日々の業務の中ではそれらをすっきり解決&納得するまでの時間は持てずにいました。
本書は、そうした「なんとなくの疑問」をまとめて解決、そしてよりレベルの高いエンジニアへの一歩を踏み出すとっかかりになったと感じています。
とはいえ、まだまだ理解できていない箇所もたくさんあるので、今後なんども復習していこうと思います!
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る