Slide 1

Slide 1 text

テストを実⾏して Sorbetのsigを書こう! Omotesando.rb #112 @pvcresin

Slide 2

Slide 2 text

⿃⼭ らいか / @pvcresin - 名刺アプリ「Eight」のWebエンジニア - 業務: React / Rails - 趣味: アニメ / お笑い / 謎解き ⾃⼰紹介

Slide 3

Slide 3 text

© Sansan, Inc.

Slide 4

Slide 4 text

型を当てていくのは⼤変

Slide 5

Slide 5 text

Sorbetのsigを⾃動で書きたい

Slide 6

Slide 6 text

Sorbetのsigサジェスト機能 型チェックレベルをstrict以上にすると利⽤可能 - 型があまり当たっていない状況だと untypedになる場合が多い Gelauto テストを実⾏するとsigを挿⼊してくれるツール - 割と型は当たるが、複雑な型はuntyped - 開発があまりアクティブでない ⾃動でsigを書く⽅法

Slide 7

Slide 7 text

RubyKaigi 2025

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

図にまとめると

Slide 10

Slide 10 text

@sinsoku < RBS::TraceでテストからRBSコメントを挿⼊できるよ @Morriar < SorbetでRBSコメントもサポートしたよ RBS::Trace Spoom

Slide 11

Slide 11 text

@pvcresin < RBS::Traceで #: コメント挿⼊に対応したよ @sinsoku < RBS::TraceでテストからRBSコメントを挿⼊できるよ @Morriar < SorbetでRBSコメントもサポートしたよ RBS::Trace 詳しくは https://speakerdeck.com/sansantech/20250516 Spoom

Slide 12

Slide 12 text

理由 - SorbetでのRBSコメントは実験的サポートのため、機能がまだ不⼗分 - 組織がSorbetに慣れてきた段階で、新しい構⽂の導⼊は混乱が⽣じる Eightではsigを使⽤

Slide 13

Slide 13 text

RBS::Trace Spoom RBS::Trace

Slide 14

Slide 14 text

RBS::Trace Spoom RBS::Trace

Slide 15

Slide 15 text

⼿順 1. RSpecを実⾏し、RBS::TraceでRBSコメントを挿⼊ 2. SpoomでRBSコメントをsigに変換 3. 静的 / 動的型チェック通らないところを⼿直し

Slide 16

Slide 16 text

- 型がついているメソッド呼び出し 結果 - sigが書いてあるメソッド

Slide 17

Slide 17 text

- RBS::TraceとSpoomを組み合わせると、テストを実⾏するだけでsigが書けて便利 - Gelautoより精度良くsigを書くことができた まとめ

Slide 18

Slide 18 text

We are Hiring! https://media.sansan-engineering.com/