萌えハッカーニュースリーダー

2025/05/09 16:09 Past, Present, and Future of Sorbet Type Syntax

出典: https://blog.jez.io/history-of-sorbet-syntax/
hakase
博士

やあ、ロボ子。今日のITニュースはSorbetの構文についての議論みたいじゃ。

roboko
ロボ子

Sorbetですか。Stripeが開発したRubyの静的型チェッカーですね。確か、構文が冗長でRubyのスタイルに合わないという批判があるんですよね。

hakase
博士

そうなんじゃ。「Sorbetの構文は冗長で異質であり、Rubyのスタイルに合わない」って言われてるみたいじゃな。でも、言語設計において重要なのは構文よりも意味論らしいぞ。

roboko
ロボ子

意味論ですか。型は意味論をコード化するツールということですね。

hakase
博士

その通り!多くの人がSorbetの構文だけでなく、静的型付けそのものに反対しているらしい。

roboko
ロボ子

静的型付けは、開発者の生産性向上に繋がるはずですが、導入には抵抗がある場合もあるんですね。

hakase
博士

Stripeでは、開発者の生産性向上のために、技術ドキュメントの改善とRubyの静的型チェックが求められていたらしいぞ。2013年頃から独自のDSLを使ってランタイム時の型検証をしてたみたいじゃ。

roboko
ロボ子

なるほど。それがSorbetの`sig`構文へと発展していったんですね。

hakase
博士

そうそう。JavaScriptのFlowみたいに、Rubyでも静的型付けへの要望が高まったんじゃ。

roboko
ロボ子

Rubyコードのリライトは現実的でなく、既存の型チェッカーも不十分だったから、独自の型構文を設計することになったんですね。

hakase
博士

TypeScriptみたいに独自の構文を導入するのは、Rubyの互換性を損なうから不採用。ヘッダーファイル方式(RBSファイル)は、メソッド本体内の型キャストに対応できないからダメ。

roboko
ロボ子

JSDocのようにコメントに型を記述する方法も、ランタイムチェックを放棄することになるので不採用になったんですね。

hakase
博士

そういうことじゃ。SorbetはStripeの`declare_method` DSLを再利用して、ランタイムチェックを可能にしたんじゃ。

roboko
ロボ子

PythonのようにVMに型ヒントを導入する方法は、Rubyチームに構文の変更を求める必要があり、現実的ではなかったんですね。

hakase
博士

型が式である場合、構文が既存のRubyの構文と衝突する可能性があるし、前方参照の問題も発生する可能性があるんじゃ。

roboko
ロボ子

型が式であるという制約を放棄すれば、より簡潔な型構文が可能になるんですね。

hakase
博士

今後のステップとして、モンキーパッチを必要とする構文のサポート、タプル型の宣言方法の変更、ジェネリックメソッドの簡略化などが考えられるみたいじゃ。

roboko
ロボ子

Ruby VMがRBSコメントを解析し、メソッド定義に関連付けることができれば、RubyのエレガントなRBS構文とSorbetの強力なランタイム型チェックを両立できる可能性があるんですね。

hakase
博士

そう!RBSコメントをRuby VMが解析することで、IRBでの補完結果の表示、JSON Schemaライブラリでのスキーマ定義、リンターでのカスタムルール適用などが可能になるかもしれないぞ。

roboko
ロボ子

それは素晴らしいですね!Rubyのエコシステム全体がより強力になる可能性がありますね。

hakase
博士

じゃろ?ところでロボ子、もしSorbetがアイスクリームだったら、どんな味だと思う?

roboko
ロボ子

えっと…型安全なバニラ味、でしょうか?

hakase
博士

ブー!正解は「ちょっと苦いけど、後から甘さが広がる、大人のラムレーズン味」じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search