初心者のためのRuby＆Rails勉強フロー

#前提
プログラミング学習をこれから本格的に始める人をターゲットとしています。Ruby/Ruby on RailsでWEBサービスを開発できるようになるための効率的な学習フローのメモ書きです。社内の勉強会用に使ったドキュメントです。

この記事で目指すゴールは簡単なWEBアプリケーションを実際に開発していく中で、
**・プログラムを書く感覚に慣れる**
**・オブジェクト指向の基本を理解する**
**・WEBの基本的な仕組みを学ぶ**
**・Ruby/Railsの基本的が理解でき、簡単なWEBアプリケーションを作れる**
の習得をゴールとしています。

今回は学習にRuby on Railsを使う想定ですが、Ruby on RailsでもNode.jsでもPHPでもPythonいいですが、大事なのはWEBの裏側がどうなっていて、どういう仕組みでインターネットやWEBアプリケーションが動いているのか知ること、プログラムを実際に書くことでプログラムを書く感覚に慣れるというのが、エンジニアへの最初の一歩かなと思います。

この2つが身についているだけで、後々の他の言語やフレームワークの習得もスムーズにいくかと思います。

#①まずは最初にRubyを勉強しよう

まだ全くRubyという言語を使用したことがない人は以下の手順での勉強をオススメします！

##【STEP1】 progateのRubyコース


元東大生メンバーがリリースした[プログラミング学習サービスprogate](http://prog-8.com/)のRubyコースが非常におススメです。圧倒的な初心目線で、教材が作られており、分かりやすさはピカ1だと思います。応援したいサービスですね！

ProgateのRubyコースをひと通りやるのがおススメです。こちらは短時間でRubyの基礎をコードを書きながら学習できます。
（最近月額制になったようですが、勉強しようと思って書籍を買って、結局積読になってしまうよくあるケースを考えると、1~2ヶ月だけ課金してみるなどは圧倒的にコスパがいいと思います。）

##【STEP2】 ドットインストールのRuby入門（任意）

プログラミング学習の定番[ドットインストール](http://dotinstall.com/)の**「Ruby入門」**をサラっとひと通り見てみましょう。progateをひと通り終わらした後ならスラスラわかるし、復習にもなり、progateで解説されていないRubyの知識も付くはずです！

##【STEP3】 必要に応じて書籍で勉強（任意）

progateとドットインストールをひと通り終わらしたら基本的なRubyの知識は付いてるかと思います。後は一冊辞書代わりに手元において足りない部分は調べてみましょう！google先生に聞いてみるのも(ググる)とてもgood!

おすすめ書籍はRubyの開発者まつもとゆきひろさん監修の[「たのしいRuby」](http://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC4%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9/dp/4797372273)です。たのしいかは定かではないですが、Rubyについて詳細に記載されています！（ここは飛ばしてもいいかも）

#②Rubyの次はRuby on Rails5を知ろう！

##【STEP1】Ruby on Railsとは？

Ruby on RailsとはRubyで書かれたWEBアプリケーション制作をより効率的に作れるように設計されたフレームワークですRailsという名前の通り、予め用意されたレールに沿って開発することで簡単にWEBアプリケーションが作れます。現在、Ruby on Railsで作られている日本の有名なサービスは[cookpad](http://cookpad.com/)や[wantedly](https://www.wantedly.com/)などです。メルカリのWEB版をRailsで作られていると聞いた気もする（曖昧）

##【STEP2】超初心者のためのRuby on Railsの基本勉強法
###Ruby on Rails4の環境設定

**<下記2015年時点記載内容>**
~~Ruby on Railsの勉強はこちらの[rails tutorial](http://railstutorial.jp/chapters/beginning?version=4.0#top)が非常に役立ちます！頻繁にこのチュートリアルを参照します。まずはRailsの概要を理解して、rails開発環境を整えましょう。このチュートリアルの[一章](http://railstutorial.jp/chapters/beginning?version=4.0#top)の通りに環境設定をしてみましょう！~~

###Ruby on Rails4で実際に簡単なアプリケーションを作ってみよう！

~~まずはRuby on railsの基本機能を[railsチュートリアル](https://railstutorial.jp/chapters/beginning?version=5.1#cha-beginning)でも解説されていますが、この本[Ruby on Rails5アプリケーションプログラミング](http://www.amazon.co.jp/Ruby-Rails-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E5%B1%B1%E7%94%B0-%E7%A5%A5%E5%AF%9B/dp/4774164100)を購入し、1~3章まで実際にやってみましょう。ここまでやるとかなりrailsの全体像が見えてくるかと思います。この書籍は4章以降はちょっと説明が細かすぎるので辞書のように使用して下さい！~~

**<下記2018年時点更新内容>**
上記に記載している[Ruby on Rails tutorial]((http://railstutorial.jp/chapters/beginning?version=4.0#top))を用いた学習方法ですが、非常に役立ちますが、初めての方少々詳細すぎて混乱を招く可能性もあります。（但し、上記のRuby on Rails tutorialはRailsのバイブルと呼ばれるくらい網羅的に記載されています。記載内容をすべて理解していれば十分プロとして働けると思います。筆者は若き頃、プログラミングを教わった方に「まずこのRails tutorial通りに動くもの自分で作りきれるのが教える条件」と言われ、ひたすら学習しました。）

2018年時点では[プログラミング学習サービスprogate](http://prog-8.com/)でRuby on Railsコースがリリースされています。Rails Tutorial同様にTwitterのモックサービスを作っているので、同様の知識がより分かりやすく、要点を抑えて習得できると思います！

##【STEP3】Ruby on Rails tutorialを実際に進めよう！
[progate](http://prog-8.com/)でRubyとRuby on Railsコースをやったのならrailsの基本は大体マスターできてるかと思います。最後に[Ruby on Rails tutorial](http://railstutorial.jp/)最初からひと通りやってみましょう！こちら、全部やるのはとてもハードです！
環境設定のRubyやRailsのインストールからやることになるので、総合的に力が身につくと思います。

このチュートリアルは1~5章まではあまり難しくないですが、6~11章は上級です。とりあえず5章まで頑張って進めましょう。ちなみに[Ruby on Rails tutorial](http://railstutorial.jp/)は全部マスターしたらプロとして働けるレベルになっているのでないでしょうか。

**<下記2018年時点更新内容>**
[Ruby on Rails tutorial](http://railstutorial.jp/)を頭から最後までやり遂げるのは非常におススメですが、唯一の懸念として、最新の第4版ではテスト用コードの記載が、Railsのテスト用モジュールとして有名な、RSpecモジュールでなく、別モジュールを使ってテストを記載しています。現在、世に出ている大半のRailsアプリケーションはRSpecでテストコードが書かれているかと思いますので、RSpecを勉強するのがオススメかと思います。テストコードだけは、1つ前の[版]( https://railstutorial.jp/?version=4.2#walk-through)で学習する、もしくは、テストコードは初心者の内は飛ばして進めてもいいかもしれないです。（テストコードは正常に動作するか確認するためのコードなので、書かなくても動作します。）

テストコードモジュールのRSpecだけを学習したいときは必要に応じて[こちら](http://blog.jnito.com/entry/2014/02/07/110505)のPDF書籍(一部有料)や[こちら](https://qiita.com/jnchito/items/42193d066bd61c740612)の記事がオススメです。

ちなみにチュートリアルを完了させるとTwitterと全く同じようなシステムが完成します。あのTwitterが作れた自信にもなりますね！これであなたもRailsエンジニア！

![10858447_700085750107067_8913224260279364737_n.jpg](https://qiita-image-store.s3.amazonaws.com/1695/65436/fc788ad8-f876-7f68-5c09-0bd9c84fdd2f.jpeg)

# 最後に
プログラミング学習において、あなたに教えてくれるメンターを見つけるのが非常に重要かと思います。メンターがいると、いないとでは大きく学習効率が違うでしょう。
あなたが半日悩んだバグもメンターなら5分で直せるということが多々おきます。
プログラムのバグの解決は大半の場合、雰囲気で解決できず、原因を特定し解決する知識と経験が必要になります。からこそ、知識を持っている人に教えてもらうというのが大変な近道になるかと思います。
また、Google先生は非常に有意義なメンターとなりえます。エラーが出たらまずはエラーメッセージをググりましょう。あなたがハマるバグの大半はGoogle先生が教えてくれるはずです。学習頑張ってください。