こんにちは!最近rubyを書き始めたHiraです!
今回は、Ruby会議2021に参加してきたので紹介したいと思います!
ほとんど、自分のメモ用なので、実際の内容に関して知りたい方は、公式のYoutubeがアップロードされていたので、そちらからご確認ください!
https://www.youtube.com/channel/UCBSg5zH-VFJ42BGQFk4VH2A
イベントのタイムスケジュールとセッション
セッション
すべてを見ることはできなかったので、個人的に気になったトピック
TypeProf for IDE: Enrich Dev-Experience without Annotations
IDEによる、静的型付けがメインのお話
- ruby3.1から解析が可能
- rubyの静的解析機はTypeProf,Steep,Sorbet等がある。
- 其の中でも、TypeProfは、型を明示しなくても良いが、エラーレポートが弱いらしい。
- RBSを書いて上げると静的解析の際に早く解析でき、明示しているのでご動作もあんくなる。
Why Ruby's JIT was slow
JITと呼ばれるコンパイラのお話。正直、コンパイラの話は全然わからなかったが、AtCoderなどの競技プログラミングをする際にはコンパイルの速さとかが関係あるので、意識しなければならないポイントなのかもしれない、、、
- MJITが悪さをしていて遅くしていた。
- MJITを使うとcにコンパイルしているから、わかりやすい。
- cにコンパイルしていることで、後にgccにコンパイルするから、メンテンス性が良くなる。
- m-jit,y-jit,MIRなどの種類がある。
RuboCop in 2021: Stable and Beyond
RuboCopによる静的解析ツールのお話
ver1.0以前の方が一番ダウンロード数が多かったらしい、、、!
- 新しいcopが入ってきた際には、pendingで選択できるようにしている。
- 新しいcopを入れるときにどうするかをnew cop: trueみたいなので、適用できる。
- 新しいrubyの場合は、最新にupdateする必要あり。
- parallelオプションを使う場合はとても早くなる。defaultになった。
- ルールが厳しいと感じたら
- DiasabledByDefault: trueを使って、実際の遭遇したものを随時copとして、追加していく。
- rubocop_rails_config のgemを使うことによって、ruleが厳しいと感じたら使う。
- Steepなどをいれて、静的解析をもう少し賢くするというか、型による解析を行っていこうと思っている。
The Art of Execution Control for Ruby's Debugger
個人的に一番良かったセッション、、、!時間があるときに使ってみたい!
新規のdebug gemの話。
スライド: https://www.atdot.net/~ko1/activities/2021_rubykaigi_takeout.pdf
- 既存のデバッガー
- lib/debug.rb
- byebug
- debase ruby-debug
- Ractorに対応するために作られた
- vscodeとも連携していて、breakpointの指定とかもできて、変数名などもみることができる。
- trace on 、trace offもできて、一部のlogみたいなのを出せる。
- リモートデバッグができる。(railsのデバッグもできる!)
- record onみたいなので、巻き戻視機能があり、変数の値などが確認できる。
- break pointを使っても、既存のデバッガーよりも大分早い!
The newsletter of RBS updates
最新のRBSとして、依存関係を見たうえで勝手にRBSファイルを作成してくれるという便利になったよ的なお話。個人的に、RBSをつかうのであれば、めちゃくちゃ役立つ気がする、、、?
- RBS railsと呼ばれる、ruby on railsのためのRBS生成機がある。
新機能(rbs collection)
- rbsのためのbundler
- third partyのためのrbsを準備するのが厳しかったため、開発した。
- もともと、rbsをrailsに入れるために、全て依存関係を考えた上で、行う必要があった。
- rbsコマンドと、steepの設定が混雑していた。
- rbsコレクションコマンドを使うと、依存性を自動的に解決してくれる。
- rbsファイルの設定をコマンド操作可能になる。
- gemfile.lockから、依存関係を認識している。
Charty: Statistical data visualization in Ruby
rubyによるグラフの可視化。
- 統計的データ可視化
- A列とB列とC列があった際に、それに対応したデータの作成が可能。
- グラフ処理は外部ライブラリに任せている
- plotolyなどを使っている。
- 様々な入力パターンに対応している。
- adopterを書くことで、対応する型を増やすことが可能。
Ruby, Ractor, QUIC
Ractorを使った、QUICの実現。Transport層での通信周りを行っている話で、パケット通信をrubyで行っていた。パケットの生成から、デコードまで行おうとしていたが、残念ながらRactor内でOpenSSLが使えずに終わってしまった。今後、対応していけば、こういったことも実現できるので期待大。
全体の所感
ruby初心者には難しいセッションが多かったですが、噛み砕いて説明してくれるセッションも多く、勉強になりました!
新しいgemや静的解析のツールが今後も出てくると思うので、いろいろと使ってみたいなと感じました!
(英語のセッションがほんとに聞き取れなかったので、そこも勉強しなきゃと感じました、、、。)