虚無庵

徒然なるままに

Ruby Hack Challenge Holiday in 福岡 #1 を開催した

connpass.com

2023-08-05 に笹田さんをお招きして Ruby Hack Challenge を福岡で開催しました。

Ruby 処理系の説明をする笹田さん

最初に

今回、笹田さんの交通費は日本 Ruby の会にご支援いただきました。ありがとうございます。

日本 Ruby の会は今回のような勉強会だったり、海外カンファレンスの渡航*1、国内で開催される Ruby カンファレンスの交通費などを支援してくれます。「これは支援してもらえるのかな?」と思ったらまずは Issue を作成して聞いてみましょう。

なんでやりたかったのか?

今回サポートとして id:udzura さんにご協力いただいたが、以前からうづらさんとは「恒常的に実用的な Ruby への貢献がしたい」と話していました。

コミュニティ活動としては Fukuoka.rb を運営しているものの、初学者・未経験者も受け入れられるよう間口を広くしているため、コンフォートゾーンを抜けきれない印象を個人的にはずっと持っていました。

「このままで良いのだろうか?」と思っているそんな中、Ruby Hack Challenge の存在を知り ”福岡*2から ruby 本体にもコントリビュートできるような人材を育成する場が欲しい” と思い、笹田さんに相談させてもらいました。

今回のことをきっかけに自走できる人が増えてくれれば幸いです。

何をやったのか?

参加者のほとんどが事前に用意されている教材を進めてもらっていました。

教材をもくもくする参加者たち

私個人は parse.y リファクタリングチャレンジにチャレンジしていました。本イベント前から parse.y リファクタリングチャレンジを提唱されているかねこさんや既にリファクタリングに取り組まれている S.H. さんからどのように進めると良いかを何度かお話させてもらったものの、色んな知識不足から分かったような分かっていないような状態でした。

今回笹田さんにお越しいただいたのでここぞとばかりに「どのように進めたらいいのかさっぱり分からない」とどストレートに質問し、リファクタリングのアプローチのヒントをいただいた。

自分なりの解釈

parse.y リファクタリングチャレンジのそもそもの動機は Universal Parser が発端だと解釈しています。

CRuby 以外だと JRuby や TruffleRuby、はたまた mruby などで使えなくはないけど 209 個の関数を駆使する必要があり、これは実用的ではないため、もう少し使いやすくするためのリファクタリングチャレンジと解釈しています。

笹田さんから噛み砕いて説明してもらうと以下のことでした。

  • 例えば libruby と parse.y の I/F は、ある機能では parse.y 側に強く依存していたり、またある機能では libruby 側に強く依存していたりと、非常に入り組んでいる
  • rb_parser_config_struct はその入り組んだ I/F を何とかつないだけど、口が 209 個ある状態
    • その口のコードをじっくり見ていると、他の箇所(node.c とか compile.c とか)にかっちりハマりそう(≒移植できそう)なところを探す

聞くと簡単そうに思えるが、やると全然見つからないウォーリーを探せ状態で一日が終わりました。

まとめ

参加いただいた方たちに最後ひと言もらいましたが、分からないなりにハックしてくれていて良かったと感じました。

個人的にも「どこが分からないのか分からない」から「やっぱり分からない」へと変わったのでやった価値はあったかなと思っています(笑)

第 2 回は…、どうしましょうかね。

おまけ

2023-10-04 の予定

2023-10-04 の Fukuoka.rb はオフライン開催をする予定です。

*1:スピーカーになった場合に限る

*2:正直、そんな御大層なものではなく、自宅から近いところから