最近のIT技術者人材不足は凄まじく、ついに求人倍率は7倍を突破しているようです。
つまり、1人のエンジニアに対して7社が「頼むからうち来てくれ」と頼みに行くような超売り手市場です。
この状況を踏まえ、「Ruby on Railsを学んで即戦力として働きたい!」という熱意のある未経験者が増えてきています。
未経験者がプログラミングを学ぶ手段についてはいくつかありますが、今回は技術書を中心にフォーカスをあて、Rubyを学べる技術書に関して解説していこうと思います。
Contents
なぜ技術書で学ぶ必要があるのか?
昨今のプログラミング環境の進化により、やろうと思えばProgateやドットインストールで無料でプログラミングを学ぶ教材がオンラインに提供されています。
有料となってしまいますが、Udemyも講師の質が高くおすすめできるサービスです。
また、コストはかかってしまいますが、教室型・オンライン型問わず、最近ではプログラミングを教えるスクールがたくさんできてきていて、そちらにいけば対面でメンターの指導を受けながらプログラミングを学ぶことができます。
さて、技術書は一般的な書籍の単価より高い傾向にあります。2000円後半〜4000円あたりが多いですかね。
技術書を買って勉強するのはもはや過去の勉強法になってしまったのでしょうか?
こういった状況の中、「あえて」技術書で学ぶ理由とは何でしょうか?
プログラミングスクールは高い。。。
オンラインスクールはどれもなかなか値段がします。(高い市場価値で働けるはずのエンジニアが教材を作成し、時には時間を割いて指導までしてくれるので価格があがってしまうのはしょうがないですが)
就職成功すると実質無料のポテパンキャンプのような、就職斡旋型で無料で学べるプログラミングスクールが増えてきました。「0円スクール」なども就職を前提に受講料が無料になってくるようです。
とはいえ正直なところ、2〜3ヶ月スクールに通うだけで即戦力のスキルを身につけられる、というのは正直疑問です。
受験を思い出してください。予備校の「短期集中プラン」に入っておいて予備校におんぶにだっこの受験生、いい結果出してた人いましたか?
技術的な習得・鍛錬は自分で行うことを前提にプログラミングスクールに通うような学習スタイルにしたほうが結果につながりやすいと私は考えます。(結局、成績優秀でプログラミングスクールを卒業しないとその後の職業紹介も期待ができないです)
プログラミングスクールと技術書は「競争」関係ではなく「補完」関係にある教材です。
プログラミングスクールに加え追加投資になってしまいますがそれは仕方ないです。
ポテパンキャンプって実際どうなの?Ruby on Railsを覚えられる?
動画サイトでは解説が不十分に感じる
動画サイトの動画では「ここをこうしたら動いた」で止まってしまっている動画が多いように感じます。
「ちょっとまって、なぜここをこうしたら動くの?」という疑問に対して体系的な説明がなされていない場合が多いです。(すべての動画教材がそうとはいえませんが)
プロのエンジニアになるためには「なぜこの機能に改修が必要なのか、それはこのようになって検証すべき項目はこれだ」というのを自分の力で説明できるようになることが必要です。
こうしたことを考えず、議論する環境もなく、先人の知恵を学ぶこともなく、ただ動画に「流され」てしまうようなやり方では、あまり成果が出るとは思えませんよね。
技術書ではソースコードとともに「なぜこのコードがこのように動くのか」という解説が書かれているものが多いので、きちんと理解すれば動画で学ぶ以上の学習効率を出すことができます。
Webの記事は正しいかどうかがわからない
インターネットのみで独学をする場合に衝突する問題がこれです。
例えば、Aという問題を解決する方法はBです、という方法を書いているブログがあったとします。
同じように自分の環境でもBを試すとAは解決するでしょうか?もしかしたら隠れた前提条件や環境の違いがあるかもしれません、Bという方法はもしかしたらセキュリティ上よくない方法かもしれません。
インターネットは誰でもレビューなく書き込める性質上、このような「その場しのぎの怪しい解決法」が非常に多いです。
直面した問題の対症療法には使えるかもしれないが、基礎を身につけるという目的だと少し弱いです。
反面、技術書では出版にあたって編集者レビューやピアレビューといったチェックが必ず入るので、情報の正確性に関してはある程度担保されている、といえます。
Rubyエンジニアを目指すために理解すべき技術書
プロを目指す人へのRuby入門
「プロを目指す人へのRuby入門」は、2018年1月に発行された、技術書の中では新しい部類の技術書です。
対象のRubyのバージョンは2.4となっており、現場最新とは少し離れていますが、大した問題にはならないでしょう。
この本は「プロを目指す人」のための本なので、「Rubyを使って現場でコードを書きたい!」「Rubyを仕事にしているが、なんとなくあやふやなまま動かしてしまっていると感じる」方に最適の書籍となっています。
Railsをやる前に、Rubyを知ろう
Rubyの文法をサンプルコードで学び、例題でプログラミングの流れを体験できる解説書です。
ほかのプログラミング言語で開発経験のある人が、Rubyを学ぶ際に効率的に学べる内容を詰め込みました。
プログラミング未経験者向けの「変数とは」「配列とは」といったプログラミング基礎知識の説明は最小限にし、
そのぶんRubyの特徴(他プログラミング言語との違い)、
Rubyにおけるリファクタリングの要点、テスト駆動開発やデバッグのやり方など開発現場で必要になる知識を解説しています。
本書の内容を理解すれば、開発の現場で必要とされるRuby関連の知識を一通り習得できます。
そして、「今まで呪文のようにしか見えなかった不思議な構文」や
「実はあまりよくわからないまま、見よう見まねで書いているコード」も自信をもって読み書きできるようになるはずです。
本書はRuby 2.4をベースに解説します。Ruby 2.2や2.3など、少し前のバージョンで動きが異なる場合は、適宜注釈を入れています。
パーフェクトRuby
パーフェクトRubyは、その名前に恥じない「言語仕様の網羅と解説」が強みの技術書です。
実践的に「何かを作っていく」章も最後に少しだけありますが、基本的には言語仕様と標準ライブラリ、よく使われるライブラリの使い方がコンテンツのメインです。
なにげにGemパッケージの作り方も書かれていて、OSSで自分のソフトウェアを公開したい人にもおすすめです。
ただ、いかんせん網羅性が高すぎるので最初からこれを読もうとすると高確率で挫折すると思います。英和辞典を1ページから順に読んでいくようなものですから。
「たのしいRuby」と一緒に買っておいて、「たのしいRuby」よりもっと知りたい!という場合はパーフェクトRubyを参照する、といった使い方をするのが良いかもしれません。
Rubyist必読の1冊。Ruby2.4対応!Rubyのセオリーを徹底解説。基本からgemパッケージの作成方法や実践的なアプリケーション開発まで、最新の情報を完全網羅。
たのしいRuby
全くの未経験からでしたら、まずはこの本をおすすめします。
「たのしいRuby」はRuby言語の開発者であるまつもとゆきひろ(Matz)監修のRuby入門書です。なんと5回も再販されており、Rubyの技術書ではトップクラスに実績のある書籍といえるでしょう。
条件分岐、繰り返し、クラス、モジュール等基本的な文法仕様について詳しい解説がついています。
Rails系の書籍だとRuby自体の言語仕様の解説はほとんどないか、最初にちょろっと説明するだけなので、これはありがたいですね。
Ruby入門書の超ロングセラー!
いちばん売れているRuby入門書の決定版。
初版から14年。改訂とともに変化しながら、ずっと読まれ続けている定番商品です。
第5版では、最新のバージョンに対応。プログラミング初心者でも読み解けるように、
チュートリアル、基礎、クラス、実践とテーマを切り分けて、平易に解説。
Rubyの基礎から応用までがわかる一冊。
Ruby on Railsアプリケーションプログラミング
Ruby on Railsの標準的機能とその解説を網羅した技術書が「Ruby on Rails5 アプリケーションプログラミング」です。以前同様のテイストでRails4のものがありましたが、改訂されてRails 5のための本が出版されたようです。
他の技術書と比べると「辞書色」が強いのですが、サンプルアプリケーションとして本棚管理アプリケーションを作りながら学ぶことができますし、これも周回して内容を頭に叩き込むとものすごい成長が期待できます。
本書は、MVCに則ったWebアプリケーションフレームワークの最新版「Ruby on Rails 5」を対象に、Scaffolding機能から、ビュー/モデル/コントローラ開発、ルーティング、テスト、クライアントサイド開発まで、Railsの主要機能を徹底解説しています。クライアントサイド開発で必要となるCoffeeScriptやSCSS、バージョン4以降の新機能であるActive Job等に対応しているので、最新技術を取り入れたWebアプリケーション開発にも柔軟に対応できます!
メタプログラミングRuby
大いなる力には大いなる責任が伴う。Rubyは君たちを信用する。
Rubyの言語仕様はとにかく柔軟で、「黒魔術」と呼ばれるメタプログラミング技法が何個も存在します。この本はRubyの「大いなる力」、メタプログラミングについて徹底的に解説されている本です。
とはいっても章ごとにコードを動かしてみる、という基本に忠実なやり方で何周かこなせば、あなたにもメタプログラミングは必ず習得できるはずです。「難しそう」なイメージに負けず、取り組んで見る価値はありますよ。
本書はRubyを使ったメタプログラミングについて解説する書籍です。
メタプログラミングとは、「プログラミングコードを記述するコード」を記述することを意味します。
前半では、メタプログラミングの背景にある基本的な考えを紹介しながら、動的ディスパッチ、ゴーストメソッド、フラットスコープといったさまざまな「魔術」を紹介します。
後半では、ケーススタディとしてRailsを使ったメタプログラミングの実例を紹介します。
今回の改訂では、Ruby 2とRails 4に対応し、ほぼすべての内容を刷新。
Rubyを使ったメタプログラミングの魔術をマスターし、自由自在にプログラミングをしたい開発者必携の一冊です。
現場で使える Ruby on Rails 5速習実践ガイド
2018年10月に発売された「現場で使えるRuby on Rails5速習実践ガイド」は、株式会社万葉の開発メンバーが中心となって書き上げたRailsの実践書です。
Ruby言語自体の解説は第一章で簡単に済ませられますので、このあたりの理解に不安がある方は「たのしいRuby」などに戻って復習をするとよいでしょう。
本編ではタスク管理アプリケーションを作っていく過程でRailsを実践的に学ぶことができます。rakeタスクの実行、テストの実行、JavaScriptとの付き合い方、そして複数人との開発。実開発で最低限必要なものがこの本にはコンパクトにまとまっています。
この本を何周もして内容を頭に叩き込むのは、Railsエンジニアになる最短の方法の一つといえるでしょう。
Effective Ruby
Effective Rubyは、「Rubyを読みやすく、効率的に書くTips」を48個、解説(なぜそう書くのか)とともに一冊の本に集約した本です。
C++やJavaで開発している一線級のプログラマたちが座右の一冊としている「Effective」シリーズ。そのシリーズの最新刊となる本書は言語にRubyをとりあげ、小手先の対処法ではない骨太のRubyプログラミング技法を解説します。
ごくカンタンに実装できるがゆえに、無駄なオブジェクトを配置して見通しの悪いプログラムになっていたり、アクセスしにくいコレクションを作っていたり、機能的ではない例外処理を施していたり、知らず知らずのうちに実行速度を犠牲にしていたりなどなど、自己流では解決しない問題に正しい道筋を示してくれます。とくに、誰か他のプログラマーに利用されるコードを、どう書くことで堅牢さや使い易さを確保するかという観点が多いことが、本書の特徴といえるでしょう。
Rubyの良さを殺しているプログラミングを撲滅し、より美しくRubyを輝かせるためのノウハウを、各種サンプルを交えてわかりやすく提示する、中級~上級者向けの一冊です。
もし学習中に詰まったら
技術書を用いた独学で最もリスクになるのが「詰まったとき聞ける人がいなくて先に進めなくなる」という問題です。
日本語で質問できるWebサービス「teratail」に登録し、質問をしてみましょう。Teratailは回答率90%以上という数字をアピールしており、質問すればだいたい返ってくるだろうな、という安心感がありますね。
英語ができる方であれば、Stack Overflow(海外最大手のプログラミングQ&Aサイト)に質問するか、あるいはGithubのissue欄で作者にそのまま聞いてみてもいいでしょう。
質問をするときは
- 何をしようとして
- どのようなコードを書いて
- どんなエラーが出たのか
を必ず明記するようにしましょう!これだけで正しい回答がくる確率がグンと上がります。
- 技術書は体系的な技術の習得ができる
- プログラミングスクールのお供に最適
- 困ったら質問サイトを活用しよう