アドプラットフォーム事業部テックリードのsakiです。
先日のRubyKaigi 2022にピクシブのエンジニアは9名が参加し、私も多くのセッションを聞きました。
どれも興味深かったのですが、今回は特に型情報の話に注目しました。業務ではRubyと並んでGoを使うことも多く、Rubyの型情報は今後の技術選択にも強く関わってくるのではと考えています。
型情報に関するセッション
私が見た中で型情報に関わるセッションは下記のものでした。
- RBS generation framework using Rack architecture (ksss)
- Let's collect type info during Ruby running and automatically generate an RBS file! (osyo)
- Adding Type Signatures into Ruby Docs (Colby Swandale)
- Types teaches success, what will we do? (@fugakkbn)
- Ruby programming with types in action (@soutaro)
「RBS generation framework using Rack architecture」、「Let's collect type info during Ruby running and automatically generate an RBS file!」は、実際にコードを実行させる中で情報を収集してRBSを自動生成しようという試みでした。「RBSを効率的に作りたい」「RBSのある世界を楽に実現して恩恵を享受したい」という意識が強まりましたし、業務アプリケーションでRBSを作成するときに活用を検討したいです。
「Adding Type Signatures into Ruby Docs」はRDocにRBSの型情報を反映しようというものでした。確かにドキュメント参照時に型情報が気になることは多いので、RBSが有効活用されるのは素敵な話です。
「Types teaches success, what will we do?」は、gemのRBSはまだまだ不足しているという話でした(カバー率0.025%!)。Railsサービスなど多くのものはgemに依存しているので、gemのRBSが充実していないと型情報の恩恵を享受できず、アプリケーションコードのRBSを作るモチベーションも上がらないという話は強く共感しました。効率的にRBS作成する方法が提案されていて、各gemで最初から完璧を目指さずcontributeしていきましょうと促されました。ヤラネバ
「Ruby programming with types in action」では、実際にVisual Studio Code x RBSでRubyのプログラミングにどのような恩恵があるかのデモをいただきました。定義ジャンプやメソッド補完、型検査エラーが実際に機能していて非常に魅力的!
考察・感想
Rubyの型情報は、実際に価値を享受できるところまで近づいている実感がありました。エコシステムが働くまではもう少し時間を要するかもしれませんが、土台は整備されていて、私もRubyistとして積極的に関わりたい気持ちが強まりました。
一部ではGoなどの静的型付け言語が好まれるトレンドがあると私は感じていて、確かに型定義があることでプログラミングが安全・楽という恩恵はあると思います。Rubyの型情報がリッチになっていくことで、Rubyもその安全・楽という視点で他言語と並列に比較されることが増えるだろうと推定しています。
おわりに
私は、Rubyが「楽しさ」に重きを置く言語であることが好きです。型定義の恩恵による「楽しさ」を好むエンジニアにもRubyの「楽しさ」が伝わって、Rubyが広く使われてほしいなと願っています。そうして業務でもRubyを採用できる機会が増えると、Rubyistの私は業務がより楽しくなって嬉しいです。
ピクシブでは、一緒に働くRuby/Railsエンジニアを募集しています!Have a fun!