
2025/12/27 5:27
**T‑Ruby** は、型構文を取り入れたバリアントの Ruby です。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
T‑Ruby は、オプションの静的型付け構文を追加する新しい Ruby 拡張です。開発者はメソッドにインライン型ヒント(例:
)で注釈を付けることができます。コンパイル時にこれらのアノテーションは除去され、通常の Ruby コードと IDE や型チェッカー用の対応するdef greet(name: String): Stringファイルが生成されます。Sorbet などのツールとは異なり、T‑Ruby はソースコードに直接型を埋め込むため、実行時のオーバーヘッドはありません。プロジェクトは Stripe によって作成され、オープンソースかつ実験的であり、コミュニティからの貢献を奨励しています。クイックスタート手順には、gem のインストール(.rbs)、継続コンパイル用のウォッチモードの有効化、および型定義を提供するgem install t-rubytrc --initファイルの作成が含まれます。T‑Ruby はコンパイル時に安全性を提供しつつ、Ruby の動的な特性を維持し、メンテナーはユーザーからのフィードバックを積極的に求めてツールの改善に努めています。.trb
本文
T‑Rubyとは?
T‑Rubyは、Rubyに追加構文を導入し、コンパイル時にチェックされる静的型付けを提供する拡張です。
信頼できる結果
- T‑Rubyのコードは標準Rubyへ変換され、RBSファイルが生成されます。
そのため、RubyとRBSエコシステム全体との互換性が保証されます。
大規模でも安全に
T‑Rubyを使えば、大規模なプロジェクトでも型安全性を確保できます。
スケールアップ時も安心して開発できます。
例
# hello.trb def greet(name: String): String "Hello, #{name}!" end def add(a: Integer, b: Integer): Integer a + b end
コンパイル結果:
# hello.rb def greet(name) "Hello, #{name}!" end def add(a, b) a + b end
対応するRBSファイル:
# hello.rbs def greet: (name: String) -> String def add: (a: Integer, b: Integer) -> Integer
既存の方法との比較
既存のRuby型付けソリューションと比較し、T‑Rubyがどこで差別化されているかを確認してください。
動作原理
Stripe が開発した Ruby の静的型チェッカーです。
sig ブロックを使ってメソッドに型を宣言します。
# typed: strict require 'sorbet-runtime' class Greeter extend T::Sig sig { params(name: String).returns(String) } def greet(name) "Hello, #{name}!" end end
現行アプローチの制約
- 実行時依存(
gem)が必要です。sorbet-runtime - 型は
ブロックで別途記述する必要があります。sig - 独自 DSL の学習コストが高いです。
T‑Ruby アプローチ
T‑Ruby はインライン型(TypeScript に似た構文)を採用し、実行時依存は不要です。また標準の RBS ファイルを生成します。
すぐに始める
-
プロジェクト初期化
gem install t-ruby trc --init -
ウォッチモード開始
-
型付き Ruby を書く
# src/hello.trb def greet(name: String): String "Hello, #{name}!" end
既存ツールとのシームレスな連携が可能です。
旅に参加しよう
T‑Ruby はオープンソースプロジェクトです。あなたの貢献は大きな影響を与えます。
まだ実験段階で、コアコンパイラは動作しますが改善点は多くあります。
フィードバックや提案はいつでも歓迎です!