自分の Ruby/Rails 勉強のふりかえり #omotesandorb

表参道.rb #23 ~ Ruby/Railsの学び方 ~ の発表資料

https://omotesandorb.connpass.com/event/58274/

---

## 自己紹介

名前: sinsoku
会社: 株式会社grooves
Ruby/Rails歴: 6年くらい
github: [sinsoku](https://github.com/sinsoku)
twitter: [@sinsoku_listy](https://twitter.com/sinsoku_listy)

---

https://portfolio.forkwell.com/

<img width="701" alt="top.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/5abbbd23-816a-abd6-fda3-e60dbd1ff8e4.png">

---

コミットログからグラフを表示してくれる

<img width="592" alt="graph.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/acb7005d-b8ab-fa97-4239-61ba8aae9e55.png">

---

## 宣伝おわり

---

## 今日話すこと

自分が Ruby/Rails をどうやって勉強してきたかを紹介します。

- 経歴
  - フリーランス期
  - grooves期
- 最近やっていること

---

## フリーランス期

- 医療系Webサイト
- ソシャゲ(ガラケー)
- Webサイト(プロトタイプ)
- ソシャゲ(iPhone)

---

## 医療系Webサイト

- 2ヶ月くらい？
- Ruby 未経験
- Rails 2系と3系
- [RailsによるアジャイルWebアプリケーション開発](http://amzn.to/2qE4izg) を読む
  - さっき紹介された本ですね（ネタが被った
- 実は Rails チュートリアル未経験
- 既存コードがあまり読めなかった
- 覚えたことをブログに書いてた

---

## ソシャゲ(ガラケー)

- 2年くらい
- テストは書いてた
  - t-wada さんの [RSpec の入門とその一歩先へ](http://d.hatena.ne.jp/t-wada/20100228/p1) を読む
- DB設計もしてた
- 「**Yes fat controller, No RESTful**」

---

## ソシャゲ(ガラケー)

後半は設計力もあがり、まともなコードを書いてた。

- [Webを支える技術](http://amzn.to/2rHx6em) を読む
- [NoSQLデータベースファーストガイド](http://amzn.to/2sqqQ71) を読む
  - ランキングには Redis
- Form Object を使い始める
- [active\_decorator のdecoratorをrspecでテストする方法](http://d.hatena.ne.jp/sinsoku/20120817/1345132838) を書いた

---

## Webサイト(プロトタイプ)

- 4ヶ月くらい
- 必要に迫られて複数DBに関する gem を作る
  - octopus は複雑だった...
  - メタプロ力が上がった
- Bootstrap 使って、 view も自分で書いてた
- Ruby系の勉強会に参加し始めた？
  - shibuya.rb など

---

## ソシャゲ(iPhone)

- 3ヶ月くらい
- seed/migration に関する gem を作る
- JSON のテストばかり書いていた

---

## grooves期(現職)

- 3年目
- SQL をちゃんと覚えた
  - ActiveRecord 便利
- 個人で Rails アプリを作る
- React.js を触る
- DB設計/制約の大事さを身をもって体感
- **運用された歴史と趣** を感じるコード

---

<img width="315" alt="tw.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/82134472-e58c-2ad8-b084-c249f845a65b.png">

---

## 最近やっていること

- 勉強会で実例を聞く
- OSS にちゃんとフィードバックする
  - 放置しない
- gem の中身を理解して使う
  - 毎日の bundle update

---

<img width="394" alt="pr.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/559db804-1d2f-49e4-1ba4-7d2123797771.png">

---

<img width="398" alt="bu.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/e34b45da-6b97-a920-dd5c-0939c67b615f.png">

---

## Rails のソースも日常的に読む

[Ruby on Rails API](http://api.rubyonrails.org/) （ネタが（ｒｙ

<img width="685" alt="doc.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/2f55ebef-d015-4bb8-b8b7-2346a34738b1.png">

---

<img width="465" alt="help.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/18e2e786-438b-2e07-ae67-ec8be734f768.png">

---

<img width="1081" alt="gh.png" src="https://qiita-image-store.s3.amazonaws.com/0/30459/e18b3953-2849-0786-dd0b-e3396c135c90.png">

---

## まとめ

- 勉強会に行ってみよう
- gem のソースを読んでみよう
  - [amatsuda/active_decorator](https://github.com/amatsuda/active_decorator)
  - [rails/rails](https://github.com/rails/rails)
- 自分の Rails アプリを書いてみよう
  - `rails new` の数だけ強くなれるよ

---

## おまけ

[Object#methods](https://docs.ruby-lang.org/ja/latest/method/Object/i/methods.html) が便利です。

```irb
irb(main):001:0> '表参道.rb'.methods.grep /to_/
=> [:to_c, :to_str, :to_sym, :to_s, :to_i, :to_f, :to_r, :to_enum]
irb(main):002:0> 

```