こんにちは。今回はRubyKaigi Takeout 2021に参加してきました。
昨年に引き続きオンラインでの開催ということで、自宅からの参加です。オンラインでの開催はコメント欄などで反応がリアルタイムに見れるのが楽しいですね。
参加したいくつかのセッションをご紹介します。
一日目
Keynote: TypeProf for IDE: Enrich Dev-Experience without Annotations
Ruby 3.1にbundleされるTypeProfの話からRubyKaigi Takeout 2021はスタート。
TypeProfによって静的型付けでの開発がより快適に進められる様子を見ることができました。
型推論がエディタにリアルタイムで表示される様におおっとなりました。
今後の課題としては、IDEでの動作に時間がかかるとのことでしたが、
RBSを書くことによってスピードアップが見込まれるため、書くとよさそうという話もありました。
RuboCop in 2021: Stable and Beyond
Rubocopの1.0が昨年リリースになったものの、1.0以前のDL数が圧倒的に多いということで、
アップグレードする後押しとして、1.0の特徴が紹介されました。
1.0 以降はアップグレード時に互換性を担保しており、アップグレードしたことによる急なrubocopエラーの上昇にはならなそうです。
また、--parallel
オプションがデフォルトとなり、環境によっては約6倍の速さになるとのこと。
Parallel testing with Ractors: putting CPUs to work
Ractorを利用した並列テストの実行について。
複数CPUを活用するときに、予めどのテストがどのCPUを利用するか決まっている場合、適切にテストを配分できないことが想定されますが、テストの進行に合わせてCPUに配分できれば、最適化できそうです。
複数CPUを活用するなら、Ractorが使える?ということで、テストを並列化し、それを実際に実行してみせてくれました。
二日目
The newsletter of RBS updates
Ruby3.1におけるRBSの更新について。
依存ライブラリの管理をするためのrbs collectionや、bounded type parameter, Generic Type Aliasの導入が発表されました。
RBSを使うにあたっての柔軟性が上がって、より使いやすくなりそうという印象を受けました。
include/prepend in refinements should be prohibited
refinementsの機能の修正方針について。
refineはモンキーパッチを当てるのに便利な機能ですが、この中でmoduleをincludeすると不具合が発生することがあるため、
include/prependを禁止し、代わりにimportを導入するとのこと。
Graphical Terminal User Interface of Ruby 3.1
めちゃくちゃ自然がキレイでした、スイカ美味しそう
ダイアログウィンドウつかってみたいです。
Ruby Committers vs the World
これからのRubyをどうしていくか?について、コミッターの話が直に聞ける機会。
新機能の検討から開発環境まで、Ruby開発の裏側を知ることができました。
三日目
How to develop the Standard Libraries of Ruby?
Ruby3.0以降でStandard Libraryをgem化して、各機能の導入をカスタムできるようにする流れについて。
各機能における問題をRubyの本体の問題と切り離すことができるメリットに頷かされました。
Ruby, Ractor, QUIC
高速な通信を目指して開発された新しい通信プロトコルQUICにRactorを利用して対応してみようという取り組み。
QUICの説明からパケットをどうRubyで扱うかが丁寧に説明されていて面白かったです。
残念ながらRactor内でOpenSSLが使えずに終わってしまったものの、Ractorの使える幅が今後もっと広がればいろんなところに可能性があるなと改めて思いました。
10 years of Ruby-powered citizen science
私はこれまで存じ上げなかったのですが、Safecastという福島の原発事故を発端とした、有用なデータを収集・公開するプロジェクトについての紹介でした。
バックグラウンドにRubyが使われており、そのこと自体の関心はもちろん、収集した情報のAPIでの提供や、grafanaを利用したグラフが公開されているなど、一般の人が収集されたデータに触れやすいようになっている取り組みが素晴らしいと思いました。
Matz Keynote
Ruby3.0で追加された各機能の振り返りと、その使い勝手を更によくするような今回の3.1のアップデートについて。
全体を通して、Rubyを利用した開発体験が更によくなっていきそうという印象を受けました。
終わり
個人的には3.0で追加されたRactorが興味深くて、もっといろんなgemが対応するようになると嬉しいなと思いました。
また、静的型付けを利用した開発環境がかなり整っていく様が伝わってきて、この開発体験を確かに利用してみたい!という気持ちが増しました。