Ruby/Rails の勉強方法について #omotesandorb

6/1(木) の表参道.rb でLTしてきました。

omotesandorb.connpass.com

資料

「他人がどうやって Ruby/Rails を学んできたのか?」って意外と聞く機会は無いと思うので、自分のふりかえりも兼ねて発表してみました。資料は Qiita で公開してます。

qiita.com

経歴について

  • RESTful を知らずにコード書いてた時代
    • ソシャゲ案件で QuestsController#execute とか書いてた
  • 実は Rails チュートリアル未経験
  • SQLActiveRecord 無しでちゃんと触ったのは最近(3年前くらい)
    • それまで都度、ググっていた

と、恥ずかしい話もありますが、今 Ruby/Rails 勉強している人に何か役立てば…と思って、自分が触ってきた技術的なネタを時系列で紹介してみました。

初心者向けの Ruby/Rails の勉強方法について

帰りの電車内で「Ruby/Rails の勉強方法」について色々と話していたので、自分なりに こうすれば Ruby/Rails の技術力が上がるだろうなー という方法を整理して、ブログで紹介してみます。

下記の順番でやってみるのはどうでしょう?

1. Ruby の基本文法を知っていますか?

「いいえ」という方、何か書籍を1冊買いましょう。他の方の発表だと 初めてのRuby が良書だと紹介されていました。

初めてのRuby

初めてのRuby

書籍を買う理由は下記の2つ。

  • 体系立てて Ruby を勉強、理解できる
  • ググりにくい内容を知ることができる
    • 特殊記号の動き( <=>%w(a b c) などの記法)

2. Rails アプリを 1人で作ったことがありますか?

「いいえ」という方は自分で rails new を実行し、何かアプリを作ってみましょう。私も昔、「Rails によるアジャイルWebアプリケーション開発」の写経をしたことがあります。

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

あと、何人もの方が Rails チュートリアル をオススメしているので、やってみると良いかも*1

3. 仕事で使っている gem の README を全部読んでますか?

「いいえ」という方、まず自分が仕事で使っている gem の README を 全て読むところ から始めましょう。

  • 何をするための gem なのか?
    • 概要は知っておいた方が良い
    • Rails の標準機能なのか、 gem の拡張機能なのかを正しく理解しておいた方が良い
  • 英語の README を日常的に読む癖をつける
    • 日本語のブログを見ないで、公式の英語ドキュメントを最初に読むのが良い
    • インストール方法、初期設定、オプションなどは一度目を通すと理解が早い

余裕があれば、同種の gem の README を比較して読むと面白いです。ファイルアップロードで carrierwaveshrine の gem があるけど、何が違うの?みたいな感じ。

4. 仕事で使っている gem のコードを読んでいますか?

「いいえ」という方は仕事で使っている gem のソースコードから読んでみましょう。最初はなかなか読み進められないと思いますが、だんだんと読めるようになりますし、かなり勉強になります。

  • 汎用的な設計になっていることが多い
  • メタプロを実践的に使っているケースが多い
  • 複数 Ruby/Rails のバージョンに対応していて、学びが多い

コードを読むようになると「機能は少ないけど、コードがシンプル」「多機能でコードも複雑」「メタプロが多くて、読めない」みたいな違いが分かるようになってきます。 deviserails_admin のコードを読むと、便利さとメタプロの辛さを同時に勉強できてオススメです。

5. gem にコントリビュートしたことあります?

「いいえ」という方、まずは使っている gem の Issue やプルリクを読んでみましょう。

  • どんなコードがプルリクで出されているのか?
  • OSS ではどんなコミュニケーションがされているのか?
    • 英語のやりとり、コミットメッセージの定型句を覚えられる
    • リポジトリごとの文化の違いが分かる
  • 最新の Ruby/Rails に対応する方法を知ることができる
    • Ruby 2.5(Rails 5.1)対応のプルリクの diff は非常に勉強になります

6. 最新の Ruby/Rails 情報を自分で追ってみよう

今、私はこのあたりを実践している感じです。

  • id:y_yagi_2 さんの rails commit log流し読み を読む
    • 気になるコミットは diff まで読む
    • 良さそうなものは即仕事のコードに反映する(最近だと rails/rails@0b8441b とか)
  • Ruby, Rails, RuboCop のコミットログを RSS で個人 Slack に流す
    • よくコミットしている人の名前、アイコンを覚える*2
    • 気になるコミットには目を通す(最近だと RuboCop の parallel は楽しみに待ってた)
  • 勉強会で Rails アプリを書いている人と 実践的な設計 について議論する
    • 複雑な要件を、どうやって RESTful にするか?
    • どうすればメンテ性の高いコードを書けるか?
    • ツラいコードの経験の共有

7. そして、Ruby/Rails コントリビューターに

まだ実践できていないけど、Ruby/Rails を使うだけじゃなくて、何か貢献したい。

さいごに

技術力を上げるためには「コードを読んだ量」と「コードを書いた量」が一番大事だと思うので、OSS のコードをたくさん読んで、Ruby/Rails のコードを書き続けるのが上達するための一番の近道だと思います。

この記事が何かしら Ruby/Rails 初心者の参考になれば幸いです。

*1:私は未経験なので詳細は知らないのですが…

*2:その人の gem は信頼できる