Ruby/Rails の勉強方法について #omotesandorb
6/1(木) の表参道.rb でLTしてきました。
資料
「他人がどうやって Ruby/Rails を学んできたのか?」って意外と聞く機会は無いと思うので、自分のふりかえりも兼ねて発表してみました。資料は Qiita で公開してます。
経歴について
- RESTful を知らずにコード書いてた時代
- ソシャゲ案件で QuestsController#execute とか書いてた
- 実は Rails チュートリアル未経験
- SQL を ActiveRecord 無しでちゃんと触ったのは最近(3年前くらい)
- それまで都度、ググっていた
と、恥ずかしい話もありますが、今 Ruby/Rails 勉強している人に何か役立てば…と思って、自分が触ってきた技術的なネタを時系列で紹介してみました。
初心者向けの Ruby/Rails の勉強方法について
帰りの電車内で「Ruby/Rails の勉強方法」について色々と話していたので、自分なりに こうすれば Ruby/Rails の技術力が上がるだろうなー という方法を整理して、ブログで紹介してみます。
下記の順番でやってみるのはどうでしょう?
1. Ruby の基本文法を知っていますか?
「いいえ」という方、何か書籍を1冊買いましょう。他の方の発表だと 初めてのRuby が良書だと紹介されていました。
- 作者: Yugui
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/06/26
- メディア: 大型本
- 購入: 27人 クリック: 644回
- この商品を含むブログ (251件) を見る
書籍を買う理由は下記の2つ。
- 体系立てて Ruby を勉強、理解できる
- ググりにくい内容を知ることができる
- 特殊記号の動き(
<=>
や%w(a b c)
などの記法)
- 特殊記号の動き(
2. Rails アプリを 1人で作ったことがありますか?
「いいえ」という方は自分で rails new
を実行し、何かアプリを作ってみましょう。私も昔、「Rails によるアジャイルWebアプリケーション開発」の写経をしたことがあります。
RailsによるアジャイルWebアプリケーション開発 第4版
- 作者: Sam Ruby,Dave Thomas,David Heinemeier Hansson,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2011/12/01
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 206回
- この商品を含むブログ (40件) を見る
あと、何人もの方が Rails チュートリアル をオススメしているので、やってみると良いかも*1
3. 仕事で使っている gem の README を全部読んでますか?
「いいえ」という方、まず自分が仕事で使っている gem の README を 全て読むところ から始めましょう。
- 何をするための gem なのか?
- 英語の README を日常的に読む癖をつける
- 日本語のブログを見ないで、公式の英語ドキュメントを最初に読むのが良い
- インストール方法、初期設定、オプションなどは一度目を通すと理解が早い
余裕があれば、同種の gem の README を比較して読むと面白いです。ファイルアップロードで carrierwave と shrine の gem があるけど、何が違うの?みたいな感じ。
4. 仕事で使っている gem のコードを読んでいますか?
「いいえ」という方は仕事で使っている gem のソースコードから読んでみましょう。最初はなかなか読み進められないと思いますが、だんだんと読めるようになりますし、かなり勉強になります。
コードを読むようになると「機能は少ないけど、コードがシンプル」「多機能でコードも複雑」「メタプロが多くて、読めない」みたいな違いが分かるようになってきます。 devise や rails_admin のコードを読むと、便利さとメタプロの辛さを同時に勉強できてオススメです。
5. gem にコントリビュートしたことあります?
「いいえ」という方、まずは使っている gem の Issue やプルリクを読んでみましょう。
- どんなコードがプルリクで出されているのか?
- OSS ではどんなコミュニケーションがされているのか?
- 英語のやりとり、コミットメッセージの定型句を覚えられる
- リポジトリごとの文化の違いが分かる
- 最新の Ruby/Rails に対応する方法を知ることができる
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 のコードを書き続けるのが上達するための一番の近道だと思います。