Kashiwa.rb #14「ワイガヤグループワーク会」やってきた

やってきました。

Kashiwa.rb #14 ワイガヤグループワーク会 - connpass

今回から数回は各自テーマを持ち寄って取り組む形式でやっていく試みです。個人でもくもく作業するのもいいけど、せっかくだからその場に集まった何人かで一緒に調べたり質問したりとインタラクションが発生して学習機会に繋がればいいなという狙いもあって「ワイガヤグループワーク会」としてみました。

それぞれが取り組んだテーマ

  • Parser
  • Rubyで音楽
  • RubyMCPサーバー作る
  • RailsアプリのgemをLLMで調査する
  • Ractor

どれも面白そうなテーマですね。

自分が取り組んだテーマと内容

自分は Parser についてを hisakey さんと youchan さんの3人でグループワークしました。

Ruby の Parser 調べるぞ!と言っても現在の Ruby の Parser 周りの事情が色々ありそうだったので、まず事前にまとめた内容を持ち込みこれを見ながら会話したり、分からない部分は質問してみるところから入っていきました。

kozy4324.hatenablog.jp

ざっと眺めた後に Ruby の Parser を深掘りするのにも色んな掘り方がありそうだよねっていうところで残っているメモは以下の通りです。

  • Parser ごとに I/F や出力される AST に差異がある部分があるので、それがどういった点なのかを理解できると良さそう
    • 例えば RuboCop において parser gem と Prism で差分があるらしいが、それが具体的に何なのか? RuboCop が Prism に移行していくというロードマップがあるとしたらその差分がどういった障壁になりうるのか(もしくは障壁にはならないのか)、とかちゃんと知っておきたいよね
  • AST の Node の種類が本当にたくさんある、それを一つ一つ眺めて理解していくだけでも Ruby の言語仕様の豊かさ(複雑さ)に触れられそう
  • Ruby の言語仕様のいくつかだけで構成されるサブセット言語を定義し、それに対して Parser を実装すると Parser の内部仕様や振る舞いが理解できそう
    • 手書き Parser を作ってみる?
    • Parser ジェネレータの Racc を触ってみるのも良さそう

などなど。で最後に出た Racc で Praser を作ってみようというトピックに対してズバリこれ!というコンテンツを発見していたのでみんなで取り組みました。

github.com

今回はこの lr-parser-101 の途中で時間切れとなってしまいましたが、Raccの実装の後に同じ対象に対して手書き Parser を実装してみてもいいかもしれませんねと最後に会話していました。次回以降の取り組むネタになりそうですね。

参加者のレポート記事

同じグループの hisakey さんが爆速でブログ記事を書いていてくれていたのでリンクしておきます。

hisakit.hatenablog.com

終わりに

しばらく数回はワイガヤグループワーク会をやります。今回参加した人たちは同じようなテーマで取り組む予定ですし、それ以外の面白そうなテーマがあればぜひ持ち込んで一緒に何かできると良さそうですね。興味を持ってもらえたなら是非足を運んでもらえると嬉しいです。次回は 9/19(金) あたりに開催予定です。

以上、私からの参加レポートでした。