見出し画像

現役Webエンジニアが駆け出したころのRails学習法

今回は1年目に行った学習法をまとめてみました。

現在Web系の自社開発企業でRailsエンジニアとして開発業務に携わっています。ついにエンジニアになって3年目となりました。

最近よくTwitterで、「Railsエンジニアになりたいけど、何から始めていいのかわからない」という悩みを目にするので僕がやった学習手順について振り返ってみました。

Twitter界隈ではフロントエンドエンジニアになりたい方がたくさんいらっしゃるようで、この領域に関しては情報がかなり充実しているように思います。
しかし、サーバーサイドエンジニアを目指している方に向けた情報はあまり見かけず、困っているという方もいらっしゃるということもわかりました。

この記事を読んでわかること

・現役のWeb系エンジニアがどのような学習手順を踏んでRailsの知識、スキルを獲得したか
・駆け出しエンジニアの方に合った書籍のご紹介

想定している読者

・未経験からサーバーサイドエンジニアを目指している人
・Progateを終えたあと何をしようか迷っている人
・Railsチュートリアルに挫折してしまいそうな人

前提

・そもそもWebとは?に関しては並行して別の方法で学習しました
・コマンドラインに関しては都度都度ググって学習しました

何をやっている人?

初めに軽く自己紹介をしておきます。詳細はTwitterを見ていただければだいたいどんなことをやってきたかやどんなことを考えているかは知っていただけると思うのでよかったら覗いてみてください。

それでは軽く自己紹介です。

Web系の自社開発企業で開発を行っています。主にはサーバーサイドの領域を担当しており、言語はRuby、フレームワークにRailsを使って開発しています。たまにインフラをやったり、最近はJSやVue、Reactを使ってフロントの開発をすることもあります。

なぜこの記事を書くのか?

Twitterの自己紹介ツイートにも書いてあるのですが、僕はエンジニアになりたてのころ、本当に出来が悪く苦労しました笑
そもそも、就職して入った会社がかなりのベンチャー企業で教育体制が整っていなかったこともあり自走しながら成長するしかないという環境でした。僕が就職して1年後に会社が上場し、今では社内にエンジニアを育成する部署までできてかなり制度的にも整っています。1年遅く就職すればよかったと何度も思いました笑

入社したてのころ、きちんとした学習手順や方法を教えてくれる人がいたら効率的にプログラミングの学習を進めることができたと今すごく感じています。エンジニアになりたいけど、何をやればいいかわからない人やとりあえずProgateは終えたけど次何をすればいいかわからないといった方々の一助になれたらいいなと思ったからというのがこの記事を書いている理由です。

前置きが長くなったので本題に入りたいと思います。

どのように勉強してきたか

基本的には実務に入る前にやってきたことを書いていきます。
大きく3つあります。

1. 動画での学習
2. 書籍での学習
3. 自分で手を動かして何かを作ってみる学習

Railsを始める前にいくつか必要な知識があるので、基礎学習の章で解説していきます。

基礎学習

・ドットインストール
  ・HTML、CSS

数分の動画を見ながら実際に手を動かしてHTML、CSSを用いてwebページを作ってみるというものです。
実際の実務で、HTMLはサーバーサイドエンジニアになっても少しは触ることがあるので勉強しました。少しは触るといっても、ゼロからHTMLをコーディングするということはなく、コーダーさんが作成したHTMLにRailsのコードを組み込んだりする程度です。

一通り動画での学習を終えたら、次に下記の教材を使って学習しました。

・Progate

ProgateではHTML、Ruby、Ruby on Rails、Javascriptをやりました。
やりましたといっても全てのコースをやったわけではなくどれも途中までしかやっていません。なぜなら、Progateはプログラミングを学ぶ上で大枠を掴む、基本的なことを素人に優しく教えてくれる教材という位置づけだとやりながら気づいたからです。
あとは基本的に実務で仕事が大量に割り振られて追われていたので悠長に全てのコースをやっている時間がなかったという理由もあります。
個人的には全てのコースを修了する必要はないと考えていますが、時間がある人は

1. HTML
2. Javascript
3. 自分が学びたい言語(RubyとかPHP)

の三つくらいは修了するくらいの勢いでやってもいいかもしれません。


Progateをやった後は皆さんもやっているようにどこかのサイトを模写して学習しました。2つのサイトを模写しました。1つは完全にHTMLとCSSのみでコーディングされているサイトでもう1つはHTMLとCSSに加えてJQueryが使われているサイトでした。一応、サーバーサイドエンジニアでもこれくらいはできた方がいいだろうという考えのもと学習しました。

HTML、CSS、Javascriptに関しては基本的にググって学習しかしたことがないのでご紹介できる書籍がないです。
参考にしていたのは下記のドキュメントです。

Rails

約1ヶ月のプログラミング研修ではRailsチュートリアルを完走して、社内の業務改善を目的としたアプリケーションを作ってみようという感じでした。Railsに関しては業務で本格的に使うことになるので、かなり自分で勉強しました。
ちなみにここだけの話ですが、僕は研修中にRailsチュートリアルを完走することができませんでした笑
本当にちんぷんかんぷんでただ写しているだけの無意味な時間を過ごしていました。
これだとやばいなと思ってかなりレベルを下げて三つのことをやりました。

1. Rails Girls はじめてのRailsアプリ
2. 書籍での学習
3. ブログシステムを作ってみた
4. scaffoldで作成したアプリで実験

1.  Rails Girls はじめてのRailsアプリ

まず、はじめてのRailsアプリというものなんですが、Rails Girlsというコミュニティのサイトにある簡単なアプリを作ってみようというチュートリアルになります。

※ Rails Girlsに関してはこちらを参照

はじめてのRailsアプリは一言で言うとRailsで動く簡単なアプリを作ってみようというものです。1日もあればできるボリュームになっています。早い人だと数時間で作ることができます。
このアプリを作ることでCRUDのようなものができます。
僕にとってはRailsチュートリアルは難しすぎたのでこれくらいのレベルがちょうどよかったです。レベルを下げたことにより、動くものが自分でも作れてテンションも上がってやる気も出ました笑 我なりにかなりいい方向転換だったと思います。Railsチュートリアルよくわからん挫折しそうって人はこちらのチュートリアルをやってみてもいいかもしれません。

2. 書籍での学習

次にもうちょっと難し目のアプリが作ってみたいと思うようになったので、先輩にオススメの書籍を聞いて、下記のものをやりました。

この書籍(↑)は分かりやすかったのですが、Railsのバージョンが古くてちょっとやりづらかったこともあったので斜め読みをしただけです。買わなくていいと思います。
最近は改訂版が出たようで、Rails5.2に対応しているので改訂版を買ってもいいかもしれません。僕は読んでいないので内容に関してはわからないので注意してください。

なので、下記の書籍を買い直して進めました。基本的に読みながら手を動かして進めるという方法で勉強しました。

平日の夜と土日にこの書籍を一通り進めてRailsの知識を深めようとしました。が、この書籍、結構難しかったです笑 Railsチュートリアルよりも難しいかもしれません。しかも結構ページ数があります。またしても途中で挫折しそうになったのでほぼやっていません笑
Railsチュートリアルを完走してある程度アプリがどう動くかがわかった人じゃないと難しいんじゃないかと思います。

先輩がオススメしてくれた本がなかなかに難しかったので、先輩が信用できなくなってしまいました笑
そこで、Rails歴の長い上司に相談したところ下記の書籍を紹介されました。

この書籍、かなりRailsのバージョンが古いんですが、DHHが書いた本なんですよね。DHHっていうのはRailsを作った人なんですが、作った張本人が本を書いているので非常にわかりやすいです。どういう思想でRailsを作ったかも書かれているので非常にオススメします。Railsっぽいコードを書けるようになったのはこの本のおかげかなと思ってます。
ただし、Railsのバージョンが古いのでこの本を読みながら何かアプリを作るということはしませんでした。というか厳密にいうと古いバージョンのコードを新しいバージョンのコードに置き換えて開発するというのが当時に自分にはまだできなかっただけです笑
なので、この書籍は完全に読み物として扱いました。めちゃくちゃ安いので買って損はないと思います。

ここまで書籍で勉強してきて気づいたのですが、当時はRailsのことを学習する技術書で良本と呼ばれるものが少なく(今でも少ない)、あっても上記の本のようにバージョンが古くて学習しづらいという状況でした。

なので、本で学習することを諦めて、とりあえず手を動かして何かを開発するという方向にシフトしました。

3. ブログシステムを作ってみた

結論から言うと、このブログシステムを作ったことが一番よかったかもしれません。なぜブログにしたかなんですが、特に理由はないです。強いて言うなら、企画を考えるのが面倒だったという理由しかありません笑

ブログシステムを作った目的は3つあって、

1. Railsチュートリアルにあるように用意されたものを作るのではなく、自分で何を作るかを考えてコードを書く
2.『RailsによるアジャイルWebアプリケーション開発』を読んだアウトプット
3. そろそろまともな成果物を作りたかった

よくあるブログサイトを参考にして画面設計、テーブル設計を一から行ったので結構勉強になりました。HTML・CSS・Javascriptのことはもちろん、Railsの理解も深まりました。何より、ゼロから自分の手を動かしてモノを一つ作ったという達成感と自信を得られたことが一番良かったです。このブログを作る過程でわからないことがたくさん出てきたので、下記の学習方法を採用しました。

4. scaffoldで作成したアプリで実験

これはブログシステムを作る上で出てきたわからない問題を解決するために採用した学習法です。なので、ブログシステムとは別で簡易なRailsアプリを作成して実験をしてました。具体的なことは後述します。
書籍だけだとカバーしきれていないところがあったので、下記のサイトを参考に学習していました。

最初は何が書かれているのかわからないことが多いと思いますが、その都度ググって簡単に解説してくれているQiitaの記事や書籍と照らし合わせて理解できるように努めていました。Twitter等をみていると公式ドキュメント以外は参考にするな的な意見を業界歴の長い先輩が言っていますが、最初のころはQiitaの記事や簡単に書かれている記事を参考にしていいと思います。公式ドキュメントを読んで理解できる土台がないころはいくら読んでも理解できないと思います。それなら、方法を変えて自分が理解できる記事を探すのがいいやり方だと僕は思っています。結局大事なことは公式ドキュメントを読むことではなく、理解することなので。
それに経験を積んでいけば自ずと公式ドキュメントしか見なくなります笑

Railsに関する大抵のことはここに載っているといっても過言ではないと思います。Railsをやり始めた頃は特に、Rails のルーティングActive Record クエリインターフェイス・Active Record の関連付けはかなりお世話になりました。ちなみに3年目になった今でもほぼ毎日読んでます。それくらい便利なドキュメントです。


参考にRailsガイドを読むと言っても、ただ読むだけだと本当につまらないと思います。
個人的にいい学習の方法だったなと感じているのは、
特定の何かを目的としたアプリを作るのではなく、とりあえずscaffoldして動くアプリを作り、そのアプリ上で実験をするというものです。
例えば、ネストしたルーティングを実装したい場合にどうやればできるのかといったことや親-子-孫の関連を持つmodelを作成して、どうやれば親から辿って孫のデータを取得できるのかといったことをとにかく手を動かしながら勉強しました。
自分のローカル環境で誰にも見せない前提だったのでよくわからないエラーが出た場合は、その環境は捨てて新しくscaffoldし直して再度実験という感じで進めました。

まとめ

自分で振り返ってみてなかなかにひどい学習方法だなと感じましたw
改善点だらけですね。ただし、良いところもあったと思っていて、それは、

1. 挫折を避ける
2. 困難は分割する
3. 自分に合った勉強法を見つける

の3つができたことかなと思っています。

例えば、僕はRailsチュートリアルを完走することができず挫折しかけました。さすがに新卒で入社した会社を1ヶ月で辞めるわけにはいかなかったので、レベルを落として開発をするという選択をしました。当時は同期と比較して出遅れてしまうという不安がありましたが、自分は昔から要領がいい方ではないことを自覚していたので他人よりも努力すればいいだけだと開き直って自分なりの学習法を模索しました。
また、僕は動画を見ながら学習することや書籍に載っているものを丸写しするよりは、自分で作りたいものを考えながら作る過程でぶつかった課題に対して書籍や公式ドキュメントを参照しながら、課題を解決するという学習方法が合っていました。

さいごに

ここまで読んでくださった方がいたらありがとうございます🙇‍♂️🙇‍♂️🙇‍♂️

慣れるまでは大変だと思いますが、継続的に学習することが大事なので頑張ってください!

この記事が気に入ったらサポートをしてみませんか?