RubyKaigiで発表しました
2017-09-20
TechRubyKaigi 2017 Hiroshimaで発表しました。
スライドは英語ですが、話す内容を日本語でメモしたものがあります。
CFP応募時点では着地点を決めてなかったので大変だった。特にwasmでは実行速度そのものは改善しない1のだと気づいたあと、どうしようかなと思ったけど、RubyとWebAssemblyの接点について検討するという話にした。
要点だけもう一度書いておくと:
- 現時点ではC/C++/Rustしかwasmにできないので、考えられるのはOpal + Cみたいな構成。このときC側の規模が小さいと、JSに移植したらいいじゃん、という話になる。ので、wasmの価値が出るのは:
- C側が大きいとき
- C側が複雑すぎて移植できないとき
- C側が頻繁に変更されるとき
- 将来的にはRubyをwasmにできるのかな?と思ったけど、これは実は簡単ではない
- Rubyの動的性(eval, define_method)
- 動的型言語を静的型言語にコンパイルするのが困難(これが一番大きい)
- ランタイムを移植しないといけない
- wasmがGCをまだサポートしていない2
- そもそもRubyがwasmになったとしても、できることは「Rubyがブラウザで動く」という話なので、Opalを使うのと別に変わらないはず3
- 未来を待つ必要はないので、Opalを使おう
細かい議論はスライドを見てほしい。何年後かにRubyをwasmにしようという勇者が現れたときに役立つといいなと思っている。