Slide 1

Slide 1 text

2025/01/09 omotesando.rb #105 × Roppongi.rb #26 株式会社タイミー 新谷哲平 ISUCONで型をつける @euglena1215

Slide 2

Slide 2 text

自己紹介 Shintani Teppei(@euglena1215) ● 株式会社タイミー ● バックエンド テックリード

Slide 3

Slide 3 text

目次 ● ISUCONとは ● ISUCONで型をつけるデモ ● 実際やってどう?

Slide 4

Slide 4 text

ISUCONとは > ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題とな るWebサービスを決められたレギュレーションの中で限界まで高速化を図る チューニングバトルです 引用元:[ISUCON公式Blog] ISUCON14 問題の解説と講評 https://isucon.net/

Slide 5

Slide 5 text

ISUCONとは 仕様を変えずインフラを勝手に増やさなければ何をしてもいいコンテスト 様々な言語実装があり、その中に Ruby も含まれている 【宣伝】 あと1週間くらいは去年にあった ISUCON14 を本番と同じ環境で試せるので ISUCON 気になってたけどやったことないという方は是非! https://isucon.net/archives/58860420.html

Slide 6

Slide 6 text

実際どんな感じなのかはやってみるのが一番早いと思うのでやってみます 決してスライド作成をサボりたいからではありません 題材は ISUCON14 で型の変更差分はこちらを見てください https://github.com/euglena1215/isucon14-rbs/commit/27945034f06d92 414a112fcf83c0efa018839e9c ISUCONで型をつけるデモ

Slide 7

Slide 7 text

DEMO

Slide 8

Slide 8 text

実際やってどう? これまで ISUCON で型をつけるために準備をしてきて、ISUCON14 でどうだっ たか?

Slide 9

Slide 9 text

実際やってどう?

Slide 10

Slide 10 text

言い訳 ● 準備してきたので外部ライブラリの型を書く必要はほとんどない ○ mysql2, sinatra gem の型はほとんど自分が書いたはず

Slide 11

Slide 11 text

言い訳 ● 準備してきたので外部ライブラリの型を書く必要はほとんどない ○ mysql2, sinatra gem の型はほとんど自分が書いたはず ● でもやっぱり型をつけようと思ったら1時間くらいはかかってしまう、 競技時間8時間のうちの1時間は惜しい ○ インフラも見てたので8時間のうち Ruby 書いてたのは3~4時間くらいだった ○ コードを理解する時間も含まれてるので全てが無駄になるわけではないものの...

Slide 12

Slide 12 text

言い訳 ● 準備してきたので外部ライブラリの型を書く必要はほとんどない ○ mysql2, sinatra gem の型はほとんど自分が書いたはず ● でもやっぱり型をつけようと思ったら1時間くらいはかかってしまう、 競技時間8時間のうちの1時間は惜しい ○ インフラも見てたので8時間のうち Ruby 書いてたのは3~4時間くらいだった ○ コードを理解する時間も含まれてるので全てが無駄になるわけではないものの... 正直 ISUCON 競技中に型を手書きするのは厳しい 😢

Slide 13

Slide 13 text

ありうる可能性 ● TypeProf を使って推論できる部分はどんどん推論して自動生成し 手書きする範囲を極力小さくする ○ rbs-inline と TypeProf の integrate が進まないとちょっと難しいかも?

Slide 14

Slide 14 text

ありうる可能性 ● TypeProf を使って推論できる部分はどんどん推論して自動生成し 手書きする範囲を極力小さくする ○ rbs-inline と TypeProf の integrate が進まないとちょっと難しいかも? ● Go などの静的型付け言語の参考実装や DB のスキーマファイルを LLM に与えて代わりに型を書いてもらう ○ 他言語の参考実装もあるという ISUCON ならではのアプローチ。個人的にはこっちに期待

Slide 15

Slide 15 text

ありうる可能性 ● TypeProf を使って推論できる部分はどんどん推論して自動生成し 手書きする範囲を極力小さくする ○ rbs-inline と TypeProf の integrate が進まないとちょっと難しいかも? ● Go などの静的型付け言語の参考実装や DB のスキーマファイルを LLM に与えて代わりに型を書いてもらう ○ 他言語の参考実装もあるという ISUCON ならではのアプローチ。個人的にはこっちに期待 ● 参考実装に型があると一番楽ではあるが... ○ ISUCON中に楽がしたいわけで参考実装を作りたいわけではない

Slide 16

Slide 16 text

ありうる可能性 ● TypeProf を使って推論できる部分はどんどん推論して自動生成し 手書きする範囲を極力小さくする ○ rbs-inline と TypeProf の integrate が進まないとちょっと難しいかも? ● Go などの静的型付け言語の参考実装や DB のスキーマファイルを LLM に与えて代わりに型を書いてもらう ○ 他言語の参考実装もあるという ISUCON ならではのアプローチ。個人的にはこっちに期待 ● 参考実装に型があると一番楽ではあるが... ○ ISUCON中に楽がしたいわけで参考実装を作りたいわけではない 今年はLLMをうまく使うアプローチで頑張ってみる 💪 ISUCONでRubyに型をつける同志を募集中です