例
型付きRubyを書いて、生成された型シグネチャと共に標準Rubyにコンパイルします。
hello.trb入力
# hello.trb
def greet(name: String): String
"Hello, #{name}!"
end
def add(a: Integer, b: Integer): Integer
a + b
end
→
hello.rb生成
# hello.rb
def greet(name)
"Hello, #{name}!"
end
def add(a, b)
a + b
end
+
hello.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
制限事項
- ランタイム依存性が必要(sorbet-runtime gem)
- 実際の関数コードとは別に、コメントのようにsigブロックで型を書く必要があります。
- sigブロック独自のDSL構文を学ぶ必要があります。
T-Rubyのアプローチ
T-Rubyはランタイム依存性なしでTypeScriptのようにインライン型を使用し、標準RBSファイルを生成します。
クイックスタート
1
プロジェクトを初期化
gem install t-ruby
trc --init
2
ウォッチモードを開始
trc --watch
3
型付きRubyを書く
src/hello.trb
def greet(name: String): String
"Hello, #{name}!"
end
お使いのツールと連携
T-RubyはRubyエコシステムとシームレスに統合されます。
エディタ
- VS Code拡張機能
- JetBrainsプラグイン
- Neovimプラグイン
- ランゲージサーバー(LSP)
型チェッカー
- Steep
- Ruby LSP
- Sorbet(RBS経由)
Rubyエコシステム
- RBS互換
- すべてのRubyバージョン
- すべてのgemが動作
一緒に作りましょう
T-Rubyはオープンソースプロジェクトです。あなたの参加が大きな力になります。
まだ実験段階です。コアコンパイラは動作しますが、改善すべき点がたくさんあります。
フィードバックや提案はいつでも歓迎します!