ドリコムのエンジニアの栗谷です。
こちらの記事では、RubyKaigi2018の1日目に発表されたセッションの中から2つを紹介したいと思います。
Exploring Internal Ruby Through C Extensions
Hash関数をRubyのC拡張として作るという話でした。
要約としては
– RubyのC拡張をするのはわりと大変
– 既存のCライブラリのラッパーとしてやるのが良い
– 拡張を作り方はCRubyの実装の仕方と同等なので、作ってみるとRubyの内部実装に詳しくなれる
Cでの関数と作り型はRubyの文法と比較的一対一対応しており、わりととっつきやすそうな印象を受けました。
RubyのHash関数はC++で全部実装したものより高速ということで、Rubyの組み込み関数はかなりよくチューニングされているようです。
A practical type system for Ruby at Stripe.
Stripe社ですでに使用されている、型チェックシステムの話でした。
例えば以下のようなチェックを行うことが出来ます:
"1" + 2 # error "1" + 2.to_s # ok
以下から実際に試す事ができます:
https://sorbet.run/
要約としては:
– 近くOSSで公開予定
– C++で書かれており極めて高速で動作する
– 現在は社内ツールとして提供しているが非常に好評
テストはかなりしっかりされてるらしく、プロダクションコード(かなり巨大なコードベース)全体にチェックを走らせるという形でCIを回してるとの事でした。
また質疑応答の中で出た話で、Matzは型アノテーションによるチェックは20年後くらいには不要になるかもとおっしゃってはいますが、今実際に動作して使えるものも欲しいよねとのことでした。