Slide 1

Slide 1 text

1 Rails のコードを読むのは楽しいよ tanaken0515 / GMO PEPABO inc. 2022.10.09 Lightning Talks @ Kaigi on Rails _2022_ new

Slide 2

Slide 2 text

2 アジェンダ 1. 今日伝えたいこと 2. これを覚えてほしい! 3. ↑を使った具体例

Slide 3

Slide 3 text

3 1. 今日伝えたいこと

Slide 4

Slide 4 text

4 “ Rails のコードを読もう ” 今日伝えたいこと 読んでみると楽しいよ

Slide 5

Slide 5 text

5 ● Before ○ 「Railsのコードを読んだことがない」 ○ 「読みたくてもどこを読めばいいか分からない」 ● After ○ 「読みはじめることができそう!」 今日のゴール 今日伝えたいこと

Slide 6

Slide 6 text

6 2. これを覚えてほしい!

Slide 7

Slide 7 text

7 from: https://docs.ruby-lang.org/ja/latest/method/Method/i/source_location.html Method#source_location これを覚えてほしい! > ソースコードのファイル名と行 番号を配列で返します。 > その手続オブジェクトが ruby で定義されていない(つまりネイ ティブである)場合は nil を返し ます。

Slide 8

Slide 8 text

8 from: https://github.com/banister/method_source#example-display-method-source Method(MethodSource::MethodExtensions)#source これを覚えてほしい! Rails(railties)に含まれている method_source gemによって Methodクラスが拡張されている 戻り値は String それを Object#display で 標準出力している

Slide 9

Slide 9 text

9 3. 具体例

Slide 10

Slide 10 text

10 “Rails の to_json には便利なオプションを渡せるよ - tanaken’s blog" https://tanaken0515.hatenablog.com/entry/2020/04/24/231922 いまからは話すことは、このブログに書いてあります 具体例

Slide 11

Slide 11 text

11 [経緯] レビューで「to_json メソッドの only: オプションが便利だよ」と言われた 具体例 ←必要な attributes だけに 絞れて便利 ←すべての attributes が対象に なっちゃう

Slide 12

Slide 12 text

12 ● https://api.rubyonrails.org/ を “to_json” で検索してみる ● ActiveStorage::Filename#to_json だけヒット ○ いやこれじゃないでしょ ● あたし、“to_json” のこと、なにも知らなかった...(急に不安になってきた) [疑問] only: 以外のオプションもあるの?? 具体例 今回の to_json がどこで定義されていて、どんなオプションを指定できるのか知りたい!

Slide 13

Slide 13 text

13 [解決策] Method#source_location と Method#source を使おう! 具体例

Slide 14

Slide 14 text

14 ● to_json は ActiveSupport::ToJsonWithActiveSupportEncoder のメソッド ● to_json には as_json (ActiveModel::Serializers::JSON) のオプションが渡せる ● as_json のオプションはとても便利 [結果] 調べてわかったこと(調査過程は割愛) 具体例 to_json のことがわかった!安心して使える!! 詳しい調査過程はブログをご覧ください https://tanaken0515.hatenablog.com/entry/2020/04/24/231922

Slide 15

Slide 15 text

15 まとめ

Slide 16

Slide 16 text

16 ● Rails のコードを読むときはこの2つが便利 ○ Module#source_location ○ Method(MethodSource::MethodExtensions)#source ● Rails のコードを読めると ○ 謎が解けて楽しい ○ 安心してコードが書ける 今日お話ししたこと まとめ

Slide 17

Slide 17 text

17 “ Rails のコードを読もう ” まとめ ご静聴ありがとうございました Enjoy Rails!!

Slide 18

Slide 18 text

SUZURI事業部 プロダクトチーム エンジニアリングリード 2018年 中途入社 18 このLTは tanaken0515 がお送りしました 田中 健太郎 Kentaro Tanaka ● 犬とRubyが好きなソフトウェアエンジニアです ● インターネット上では たなけん(@tanaken0515) という名前で活動しています ● 愛犬の名前は「ラテ」です