【初心者必読】文系でも続くプログラミングの勉強方法〜Ruby on Rails〜

## はじめに
プログラミングの勉強は少し大変です。「自分でサービスを作れるようになりたい」と最初は思っていても、実際に自分の手で本格的なサービスを作るまでは多少なりとも期間を要し、我慢が必要な時もあります。筆者の経験則では、**「プログラミングを勉強したい」とおもった人の９割が途中で挫折します**。だいたい１割くらいの人だけがプログラマーになっている感じです。

**では、なぜ９割もの人たちがプログラミングに挫折してしまうのか。**いくつか原因はありますが、そのうちの１つとして**「勉強法が効率的でないが故に、しんどいと感じる・楽しくない期間が伸びてしまう」**ことが挙げられます。したがって、この記事にはより多くの方々がプログラミングを楽しく、挫折せず、自分でサービスを作れるような勉強方法・ステップを記します。
「プログラミング勉強ツール◯◯選」という記事とは異なり、**「勉強のステップ」を重視した内容**になります。受験勉強と同じで、どの教材を使うかも大切ですが、それと同様にどのような手順で学習していくかがプログラミングでも大切です。また、本記事ではRuby on Railsを使ったWebアプリケーション開発をしたい方が対象です。

## 各勉強ステップと教材、学習法
本記事では初心者の学習期間を以下の４つの期間に分けて説明を進めます。

1. インプット・チュートリアル期
2. 知識定着期
3. アプリ開発期〜前期〜
4. アプリ開発機〜後期〜

### 1. インプット・チュートリアル期
![TECH::CAMP](https://qiita-image-store.s3.amazonaws.com/0/27810/d6942cb8-6bcc-f2f6-3572-24d7768758ff.png)


プログラミングを勉強するときの一番最初のステップです。性格によって学習スタイルが二分するんですが（文系または理系の違いなども含む）、文系の人を想定して書きます。

まずプログラミングをする上で「自分で動くものを作れた」という感覚が大事だったりするので、まずは**真似でもいいので動くものを作ることをインプット・チュートリアル期のゴール**とします。

#### 1-1. Ruby, Railsに関する書籍をさらっと読む
ベースの知識を入れるために100%理解できなくても全然いいので、初心者向けの書籍をRuby, Railsそれぞれ読みましょう。理解度が50%だったとしてもOKです。全部理解しようとすると必ずしんどくなってくるので、気楽に電車の中で読むくらいで大丈夫です。
下記の２冊が初心者の方におすすめの書籍です。

- [たのしいRuby](http://www.amazon.co.jp/gp/product/4797372273/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4797372273&linkCode=as2&tag=kiiita-22)
- [Ruby on Rails 4 アプリケーションプログラミング](http://www.amazon.co.jp/gp/product/4774164100/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4774164100&linkCode=as2&tag=kiiita-22)

とにかく大事なのは**100%理解しようとしないこと**です。ここで本を読む目的は、後々チュートリアルや自分でサービスを作るときに「あ、これ本で読んだな」という感覚をつけるためなので。

#### 1-2. チュートリアルをやってみる
本を読んだ後は、実際に自分の手を動かしてwebアプリケーションを作ってみましょう。チュートリアルを見ながら真似をしていきます。この段階ではまだ理解しきれていない所が多いと思いますが、とにかく真似して動くものを作りましょう。「おっ動いた！」という感覚を得ることが大切です。

動画を見て勉強したい場合は、こちら。
・[ドットインストール Ruby on Rails](http://dotinstall.com/lessons/basic_rails_v2)

書籍で勉強したい場合は、さきほどの書籍の実践編で。
・[RailsによるアジャイルWebアプリケーション開発](http://www.amazon.co.jp/gp/product/4274068668/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4274068668&linkCode=as2&tag=kiiita-22)

基本的に本やWebサービスを使えば、書籍代3,000〜4,000円程度で勉強できます。
ただし、これは独学になるので、自分一人で勉強するのが向いていない性格の方は、スクールのようなものに通うのも選択肢としてあります。スクール形式のものは、「周りに一緒に勉強できる仲間がいる」ことや、「講師がいるので質問しやすい」点がメリットとして挙げられますが、一方で「高額な費用がかかる（月に10万円前後）」ことや、「期間が短期的である」点がデメリットとしてあります。

人気のスクールはこちら。
[■TECH::CAMP プロを育てるプログラミングキャンプ](https://tech-camp.in/)

独学の場合とスクールの場合のメリット・デメリットを考慮し、自分に合う方を選べば良いのですが、共通していえることは、**一定以上の時間またはお金を投資して学習するので、必ず次のステップに行って欲しい**という点です。

### 2. 知識定着期
![Pocket Programming（ポケットプログラミング）](https://qiita-image-store.s3.amazonaws.com/0/27810/8d866ddb-e722-49bf-2848-541b00b4e549.png)

初心者プログラマーが一番見落としがちなのがこのステップです。
このステップを飛ばしてしまうと、**「チュートリアルをやって見よう見まねで動くものは作れたけど、結局何がどうなってるのかわからない。自分でいちから作ってみようとしても知識が断片的過ぎて、チュートリアルと同等のことすらできない」**という状況に陥ってしまうことがあります。注意すべき点は、**「インプット・チュートリアル期」は基本的に受け身での学習なので、以外と頭に入っていなかったりする**ということです。

したがって、チュートリアルをやってプログラミングの手触り感をわかった後に、一度しっかりと復習を行い、知識を定着させましょう。一度見たことが言葉がほとんどなので、理解度は高くなります。

もう一度買った書籍を読み返してもいいですし、知識定着のための問題形式になっているアプリを買ってもいいです。復習用アプリはこちらがオススメです。
[■Pocket Programming -Rails編- 学んだ知識を力に変える](https://play.google.com/store/apps/details?id=ffab0.pocketprogramming)

この段階で用語やコマンド、Railsの基本的な概念などの基礎部分は80%〜90%まで理解できるように頑張りましょう。このステップの出来具合で、プログラマーとしての初期の伸び方が変化します。

### 3. アプリ開発期〜前期〜
知識を一通り整理できたら、今度は実際に自分でゼロからサービスを作ってみましょう。
Webサービスを作るということはチュートリアルをやったり、本をやったりすることとは全く違う経験を積むことができます。例えば、DBのことを考えたり、見たこともない多くのエラーに出会ったり。

初めて作るWebサービスはそこまで複雑なものである必要はありません。これまで学んだ知識を活かしながら、自分の作りあげることが大切です。そして何より、**作ることの楽しさと誰かが使ってくれる喜びを感じましょう。**

わからないことがあれば、Google先生に聞いてみるか、周りの知り合いに質問したり、これまでの内容を見なおしてみたりしましょう。焦る必要はありません。おそらく、想像以上に自分でゼロから作ることは苦労を要しますが、ここで多くの人が諦めてしまうので少し我慢。ここを乗り越えられればプログラマーに一歩近づけます。

### 4. アプリ開発期〜後期〜
![](http://techacademy.jp/magazine/wp-content/uploads/2013/03/6d2a6c34e68779c639eb089f6d2415ae-610x343.jpg)

初心者プログラマーを卒業するための最後のステップがやってきました。
このステップでは、以下のことにチャレンジしてみましょう。

- インターンシップに参加し、先輩プログラマーと一緒に実務を通じてスキルを伸ばす
- 友達とチームを作り、一緒に開発をする（先輩プログラマーがいれば望ましい）

自分よりスキルがある人と一緒に開発する機会を掴みましょう。この段階のあなたのスキルでインターンシップを探すことは少し難しいかもしれませんが、探せばゼロではありません。もし見つからなかったら、友達から一緒に開発をする人を見つけても問題ありません。
もし、それも難しい場合には、自分一人でもいいので最初に作ったものよりも少し複雑（何か新しい学びがある）もの、かつサービスとして作ってみたいと思えるものを作りましょう。

先輩と一緒に開発をすることでレビューをしてもらえる機会を得ることができます。レビューによってスキルが一段と伸びるので、ぜひインターンなどを探してみましょう。

[■Wantedly](https://www.wantedly.com/)

## おわりに
一個人の経験則に基づくものですので、あくまで参考程度にしていただければ幸いです。
この４ステップをクリアできれば、**「今後自分がプログラマーとしてやっていきたいかどうか」という選択を下せるようになります**。クリアできない場合は、そもそもその選択肢を持つことが出来ず、多くの場合プログラミングをやることはないです。

経験則ではありますが、一度挫折したり中断してしまうとほとんどの場合、再び勉強をし始めてプログラマーになる可能性はかなり低いです。できる限り毎日コツコツと進めていき、この４ステップをひとまずクリアしてしまうのがプログラマーとしてスタートラインに立てるようになります。