$30 off During Our Annual Pro Sale. View Details »

Lightning Talks | Kaigi on Rails _2022_ new

tanaken0515
October 09, 2022

Lightning Talks | Kaigi on Rails _2022_ new

Kaigi on Rails _2022_ new - Kaigi on Rails | Doorkeeper https://kaigionrails.doorkeeper.jp/events/143639 での発表資料です

tanaken0515

October 09, 2022
Tweet

More Decks by tanaken0515

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. 3
    1. 今日伝えたいこと

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. 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 で
    標準出力している

    View Slide

  9. 9
    3. 具体例

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 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

    View Slide

  15. 15
    まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide