プログラミング学習法

初心者がRuby on Railsを勉強するベストプロセス【2018年版】

Awesome Ars Academia(旧 フランジアのIT留学)では、セブ島トップ工学系大学のセブ工科大学(日本でいうと東北大学工学部)を飛び級×次席で卒業したエンジニアや、セブ島私立トップのサンカルロス大学(日本でいうと慶應大学)のコンピュータサイエンス学部で学年主席を取ったことがあるようなトップレベルエンジニアがプログラミング講師を務め、「Ruby/Ruby on Rails」, 「PHP/Laravel」などを学べるプログラミングコースを提供しています。

そんな現役ハイレベルエンジニアを講師としてアサインしている弊社の海外テックスクールですが、留学期間中により密度の高い学習をしてもらえるよう、できる限り生徒さんに自力での事前学習にトライした上で来てもらうようにしています。

今回は、そんなハイレベルなプログラミングスクールを提供している弊社が考える、「初心者がRuby on Railsを学ぶベストなプロセス 2018年版」(弊社テックスクール受講前にチャレンジしておいて頂きたい準備学習課題に相当)をご紹介したいと思います。

プログラミング学習をするにあたって大切な3つのステップ

 
 
実際に Ruby on Railsを学ぶベストプロセスのご紹介に入る前に、フランジアフィリピンの教育チームが考える「プログラミング学習に必要な3つのステップ」について、ご紹介したいと思います。
 
私どもは、プログラミングの学習には、下記3つのステップがあると考えています。
それは、
  1. 見よう見まねでとりあえず動かしてみるハンズオン学習
  2. 理論や概念などの理解を深める概念学習
  3. 理解した内容をベースに作りたいものを作り上げようとする実践・演習学習
という3段階のステップです。
 
 
第1段階のステップは、かなり入門的なオンライン学習サービスなどを使って、「言われたとおりにやってみたら動いた」ということを経験する中で、「なんとなくこうしたらこう動く」ということを感覚的に知っていくフェーズです。
 
第2段階のステップは、初心者向けのプログラミング教科書を用い、実際にコードを書きつつ勉強することで、「なんとなく動いている裏側ではこんなことが起こっているんだ」ということを学び、理解を深めていくフェーズです。
 
第3段階のステップは、「こういうサービス・こういう機能を実現したい」という状況のもと、自力でそのゴールを達成していくフェーズです。
たとえば弊社の新人研修などでは、「E-Learningシステムを作る」「Twitterクローンアプリを作る」「Airbnbクローンアプリを作る」など、有名なプロダクトのシンプルバージョンを実際に自分で開発することで、自分自身で課題解決を行いながらゴールを達成していく、という演習学習を実施しています。
 
このように、プログラミングの学習においては、上記のような3段階があると考えています。
そして、現段階のスキルレベルから次の段階のスキルレベルへステップアップをするタイミングの度に、この3つの学習段階を経てステップアップしていくものだと思っています。
(おそらくこれはプログラミングだけではなく、あらゆる「学習」においても類似のプロセスを踏むのかもしれないですね。)

初心者がRuby on Railsを勉強するベストプロセス2018年版

Ruby on Rails学習の第一段階

Ruby on Rails学習における第一段階のハンズオン学習として、現在最もオススメできるのはやはりProgateでしょう。

フランジアの教育チームもProgateのコンテンツは一通り実際に触っていますが、実際にエンジニアとして働いている人間でも、Progateのコンテンツの出来は素晴らしいと思っています。また、弊社フィリピンブランチマネージャーはProgateの社員の一部の方と直接知り合いですが、実際に社員の人と知り合った上で、Progateさんのプログラミング学習コンテンツに対する思い入れやこだわりは非常に信頼に足ると話しています。
まず初心者の方が躓かずに「プログラミングの楽しさ」「作る楽しさ」を知りながら、プログラミングの第一歩を踏み出すにあたって、現段階でProgateほどよいコンテンツはないように思います。

下記が”Ruby on Rails学習”を目的にしたコースまとめになっています。
Ruby on Railsコース: https://prog-8.com/courses/rails

ただ、フランジアとして注意点かなと思うのが、きちんとエンジニアとしてスキルを身に着けたいと思うのであれば、上記コースだけを実施するよりは、下記のSass, JavaScript, SQL, Gitなどのコースも実施しておくほうが、今後の継続学習を想定したときには良いだろう、ということです。

フランジアとしては、下記のコースをすべて、下記の順にやり切る、というのが良いプロセスかと思っています。

Ruby on Rails学習の第二段階

さて、次は第二段階です。
ここでは、第一段階でなんとなく動かすものを作れるようになった上で、概念的な部分の理解を補強していきます。
この段階においては、書籍での学習が最も妥当性が高いと考えています。
Ruby on Railsの初心者向けの入門書としては、山田 祥寛 『Ruby on Rails 5アプリケーションプログラミング』が最もおすすめです。

山田 祥寛さんは、言わずと知れた著名な入門書著書の一人であり、
今や超有名企業となったWantedlyを作った仲暁子さんも、山田 祥寛さんが書いた『Ruby on Rails 3 アプリケーションプログラミング』を読みながら、初期プロダクトをご自身で作ったという逸話もあります。
実際に、Ruby on Railsってどんな仕組みになっているんだろう、Ruby on Railsの基礎的な使い方はどうなっているんだろう、ということを知るためには最適な一冊なので、本書を手にとって、より一段深い学習へと歩を進めるのが良いでしょう。

[20190116追記] 本記事公開後ですが、上記の書籍もチェックしたところ、初心者の方にとって体系的により学びやすいのは、こちらの『現場で使える Ruby on Rails 5速習実践ガイド』となるかと思いました。追記なので補足文のようになってしまっていますが、初心者の方が1冊を選ぶのであれば、ぜひこちらの『速習実践ガイド』を手にとって頂ければと思います。

Ruby on Rails学習の第三段階

お次はようやく登場、おそらく世界で最も素晴らしいオンラインプログラミングチュートリアルの1つである『Ruby on Railsチュートリアル』の出番となります。
きっとウェブプログラミングの世界で、マイケル・ハートルが書いたこの『Ruby on Railsチュートリアル』ほど、世界的に読まれているチュートリアルはないでしょう。

実際プログラミング初心者がこちらを実施するとなると、たくさん躓くところがあるかと思います。

  • 普通にGit Commitとか言われるけどどういうことだ?
  • Herokuにデプロイってなんだ?
  • TDD(テストドリブンデベロップメント)ってなんだ?
  • Gemってなんだ?
  • AWSってなんだ?
  • SendGridってなんだ?
  • etc...

ここは試練と思って躓いて頂くのが良いかと思うのですが、HerokuデプロイやTDDの理解とかはひとまず後回しにしてスキップしてくださって良いですし、初めて学習するときは、テストコードは書かずに学習するのが良いかも知れません。

また、初めて本チュートリアルを実施する際には、開発環境としては第一章で紹介されているCloud9(クラウドナイン)というツールで実施するのが良いでしょう。
初心者の段階では、ご自身のパソコンにRubyとRuby on Railsの開発環境を構築するのは、かなりの地雷となり、そこでハマってしまうと抜け出せないかと思います。
多くの挫折者が、無理に開発環境構築をしようとしてハマり、独学でのプログラミング学習を諦めていくのが一つのお決まりパターンとなります。
チャレンジして失敗する経験を踏むこと自体は価値があるので、チャレンジされても良いのですが、あまりに苦労してしまった場合はスッパリと気持ちを切り替え、Cloud9を開発環境として利用する方針にすると良いかと思います。

とはいえ、本チュートリアルをなんとか完遂することができると、Twitterのようなプロダクトが完成します!
ひとまず見よう見まねでもTwitterのようなものを自分で作ることができた、というのは非常に大きな自信と達成感に繋がります。
初心者がひとまずRuby on Railsの基礎学習を終え、ビギナーレベルへ到達するには、ここまででワンサイクルになるかと思います。

これであなたもRuby on Railsエンジニア…??

さて、ここまでみなさんが独学で成し遂げることができた場合、みなさんはこれで自分もエンジニアとしてどんなものでも作れる、というレベルの自信を持てるようになっているでしょうか?
私が思うに、
「ここまで独学でたどり着ける人がそもそも少ない」
「ここまで独学でたどり着いたが、同じようなものをゼロからチュートリアルなしに作るにはどうしたらよいかわからない」
というのが、実際のところほとんどかと思います。
 
 
実際のところ、ここまで学んだことを完璧に理解していたとしても、
現場で仕事ができるエンジニアのレベルに到達するまでは、ここからさらに大きな溝が待っています。
 
たとえば、
  • Gitというソースコード管理ツールをより高度に使いこなさないといけない
  • 実際の開発現場ではアジャイル・スクラムと呼ばれるような開発プロセスの理解がないとチームでは仕事ができない
  • 現場の仕事で必要とされる「美しいコード」「他のエンジニアが読みやすいコード」というような作法を学ばないといけない
  • ゼロから自分で作りたいと思うものを課題解決をしながら作れるようにならないといけない
  • より深いプログラミング各種の概念への理解やフレームワークの理解が必要となる
というようなことです。
 
実際、上記のような溝は、
  • 現役のエンジニアとして仕事をしている人からのメンタリング・フィードバック・コードレビューなどをしてもらう
  • 実際の開発プロジェクトにジョインすることによって、実開発の現場経験を体験してみる
  • 上記さらなる経験に基づいて、より深い学習題材やより演習的な学習プロセスを繰り返し実施して自己研鑽を重ねる
という、プロセスを踏んでいくことによってしか埋めることができない、というのが現実的なところでしょう。

ではどうすれば良いのか??

実際に弊社が提供している学習コースのような、

  • 「現役のエンジニアから直接のメンタリングを受けられる」
  • 「きちんとGitでプルリクエストを投げてコードレビューを受けられる」
  • 「より演習的な開発課題をプロジェクト型で経験することで、実践度の高い経験を積む」

ということが必要になるかと思います。

もちろん、現在のご職業のステータスなどによって、日本国内の通学形式のスクールの方がライフスタイルと適合した学習をできるケースも多いでしょう。

弊社としては、本当に活躍できるエンジニアが増えていく、ということに事業のゴールを置いていますので、みなさまの学習の動機やゴール設定に応じ、弊社以外のスクールをオススメさせて頂くこともございます。
まずはお気軽にキャリア相談のつもりでも大丈夫ですので、

など、お問い合わせ・個別カウンセリングのご予約等頂ければ幸いです。

カウンセリングは弊社の教育事業マネージャーが対応させていただきます。
25歳文系出身からエンジニアとしてキャリアを積み、起業家とのネットワークも広く、今や海外ブランチ運営を任せられているマネージャーです。
また、多くの上場IT企業の新人研修を日本語・英語双方で委託されるなど、エンジニア育成・研修のプロでもあります。
留学の詳細やセブ島での生活について、実際にエンジニアとして働いていたからこそのアドバイスなど多岐にわたるお話ができると思います。

今後プログラミング学習を開始されるみなさまの一助になれますと幸いです。

LINEからの簡単問合せはこちら ⇒ LINEでのお問い合わせはこちら
無料カウンセリング予約はこちら ⇒ https://chouseisancal.com/awesome-ars-academia
Awesome Ars Academiaへのお問い合わせはこちら ⇒ https://framgia.com/study-abroad/contact/
Awesome Ars Academiaの資料請求はこちら ⇒ https://framgia.com/study-abroad/material/