Page 1
なぜ新しい型チェッカーを
書きはじめたのか
How I Ended Up Writing a New Type Checker for Ruby
pixiv Inc.
USAMI Kenta
2026-09-05 #rubykaigi_followup
RubyKaigi 2026 follow up
公開日:
by USAMI Kenta@tadsan
に東京都港区の株式会社IVRyで開催された『RubyKaigi 2026 follow up』でレギュラーセッション(15分)として発表しました。
2026-09-05 #rubykaigi_followup
RubyKaigi 2026 follow up
お前誰よ
はじめましての方ははじめまして
2014年くらいまでRuby界隈にも出入りしていました
日本Ruby会議2011
初めて参加
札幌Ruby会議2012
レポート班
RubyKaigi 2013
レポート班
RubyKaigi 2014を最後にRubyと疎遠に
趣味でいろんな動的言語をやってます(Lisp, shell, ...)
特に動的言語/スクリプト言語が好き
動的言語には無限の可能性()があります
みなさん型は書きたいですか!
「素晴らしい」言語は世の中にいっぱいある
動的言語でフリーダムに書かれたプロジェクトは熱的死を迎えて崩壊する
業務で動的言語を正当化したい
PHP界隈で型の話を始めて10年くらい
10年前は遅くてCIで使うのも非実用
PHPでは10年くらいで型を書くのが当たり前に
PHPStanは動的解析とハイブリッドで現実的速度
PHPStan extensions
PHPDoc
型レベルでかなりのことができるように
PHPDocと拡張を書きまくれば
エージェントでPHPDocを増やしまくればいいのでは
RBSが普及してないのは実装と宣言が分離しているからでは
素晴らしいRubyでも型を書きましょう
RubyKaigi 2025でほぼ10年ぶりに参加
RubyKaigiはエコシステムを作っている人たちの成果発表会
個人的におもしろかったこと
もしかして…型って
シンプル
型なし
書かない方がいいのでは…?
今年の年初までRBSは良くないと思ってた
RBS::Inlineの方が実装と分離しにくい
長年の経験則でどこから「型なし」が湧いてくるのか理解できていた
既存のアプローチより良いやりかたがあるのでは?
型絞り込みになるヒントをかきあつめる
具体的な型情報を保ち続ける
a = 1 b = 2 c = a + b
Rubyで任意の型推論ロジックを注入できる
ActiveRecord ActiveSupport
プラグインでひたすら型をつける
80% Claude Code
10% Gemini
10% Grok
リアルワールドのRailsアプリでテストしまくる
Fableのお蔭で最適化がめちゃ進んだ
AIエージェントにSKILLで判断させる
PHPStanで学んだ経験則
ユーザーは適切な設定を選べない
無理してmaxレベルを目指そうとする
PHPStan自体も発展途上なのでコードを曲げることになりかねない
偽陽性に対して過剰なコードを書かされる
プロジェクトの段階によって無視していいエラーも存在する
型とはつまりなんなのか
実行時にとりうる予測可能な状態
Rubyには構文上要求される型宣言はないのだからどう書いてもいいはず
RailsのCoCも人間が期待する型
型チェッカーが人間の期待に応えられないのが悪い
理屈上は任意の項に型をつけられる
プラグインの書き方は覚えなくていい
プログラムがとりうる作用は戻り値だけではない
tadsanはRuby開発者でもRails開発者でもない
圧倒的当事者意識の欠如
実際に使っている人のフィードバックが欲しい!
もっというとマジレスが欲しい!
この記事でいちばん強調したかったこと
構造上メンテが高コスト
Claude Max 20x
トークン消費を抑えながら作ってもちょっと足りない
今月のClaude契約は今朝切れました!
Rigorステッカー持ってきています
動的言語の未来にご期待ください
