RubyKaigi2023LTに出したプロポーザルを公開します

こんにちは,相生ゆら(@Little_Rubyist)です.RubyKaigi2023楽しかったですね.RubyKaigi2023自体のレポートは他社員が書いてくれている*1*2し,私は私でプライベートのブログにあげてしまったので今回はLTのプロポーザルの話やLTの話をしようと思います.RubyKaigi2024のLTなどにプロポーザルを出してみたい人の参考になれば幸いです.

プロポーザルに書いた内容

Title

Adding custom rule for Rubocop in the 2 month of employment

Abstract

I will talk about how I contributed to the team by developing about "nice to have, but not too much trouble without" rule in Rubocop.

For Review Committee

Details

RubyKaigi2022がきっかけで転職をして,就職後すぐに行った軽い環境改善の話をします. 実装内容自体は「1行だけのletは{...},長い行はdo...end に直す」という本当にちょっとした改善ですが,そういった改善がコードに統一感を持たせ,よりよい開発体験に繋がるということが伝えられたら良いなあと思っています. 実際にこの実装を導入したことで昔の記述ルールが定まっていない頃に書かれたletはほとんど駆逐出来ました.

コードを綺麗に保ちたいと何となく思っているがRubocopについてはあまり詳しくない人向けのLTです.

Pitch

(2022年9月時点で)半年以上前から行きたいと思っていた会社に”RubyKaigiがきっかけで”というのはかなりインパクトがあり,エピソードとして面白いと思われます. また,最近のRubyは開発体験の向上を強く考えていると思っているので,体験向上の一例として良いアプローチが可能です.

プロポーザルの話

入社して間もなかったのもあっていい具合にまとめられる唯一といっていい話題がRuboCopの件でした.しかしそれだけだと圧倒的に話の内容として弱いのでRubyKaigiに関連のある転職エピソードを加えたプロポーザルになっています.

実際に表に出るのはAbstractまでですがAbstractに全ては書き記せないので,プロポーザルを出す時はDetailsやPitchでどういった内容を話すのか全容が簡単にでも伝わるように意識して書いていました.これはLTなのでまだ短くまとめられましたが,フルトークとなると何をどこまで書けばいいか分からなかっただろうなあと思います…….実際他の人のプロポーザル記事を眺めると,GoogleDriveに載せた資料を添付したりされていました.

今回色々あって採択理由を聞くタイミングがあったのですが,その時に「RubyKaigiきっかけで転職した話が気になったので採択した.RuboCopの話よりそっちを話して」と言われたので採択後にその話の比重を増やしています*3

RubyKaigiはトークの特性から技術の,しかもかなり尖った内容のテックトークでなければプロポーザルが通らないような印象を受けますが,内容次第では今年の私のように採択される可能性が十分にあります.出して損をすることはないので気軽にプロポーザルに応募してほしいなと思っています.

LTの話

LTは登壇経験のない人が登壇をするのにぴったりだと私は考えています.RubyKaigiほど大きなカンファレンスでなくとも,会社主催のLTイベントや地域Ruby会議から挑戦してみるとよいでしょう*4.また,登壇にあたっては内容のレビューをしてくれる友人や同僚,上司がいると心強いかと思います.今回のLTでは英語スライドだったので,英文レビューを知人にお願いしました.

さて,LTで話したRuboCopの話を少しだけしましょう.

speakerdeck.com

あまり特別な事はしていませんが,特に挙げるとしたら24枚目のコードにある RuboCop::RSpec::ExampleGroup.new(node).lets でしょう.実装はlib/rubocop/rspec/example_group.rbにあります.describe do...end を起点にASTを取得して,中にある letflat_map して渡してくれます.今回のような ある定義に同じStyleを適用させる Copを実装する時にとても扱いやすいです.

各gemに定義されているCopで扱うほど一般的な要素は,結構な確率で取り回しが効くようにされています.ASTを最初から学ぶのはハードルが高いと思いますが,やりたいことに近いことをしているCopを見つけてnode_matcherを読んだり,必要な要素を拝借すると理解も実装も早く進むのではないでしょうか.

RuboCopのカスタムルール実装そのものの話はもっと丁寧に書かれた記事を弊社のシゲタが書いているのでこちらを参考にするといいかもしれません.

転職の話

結構な回数「LTの内容って実話(盛ってない)なの?」と聞かれたんですが,最初から最後まで実話です*5.事実は小説よりも奇なり.

おわりに

ブックウォーカーではエンジニアを募集しています.興味がありましたら気軽にお話しにきてもらえると嬉しいです.ブックウォーカーの採用情報ページからご応募ください.

www.bookwalker.co.jp

*1:https://developers.bookwalker.jp/entry/2023/05/26/110000

*2:https://developers.bookwalker.jp/entry/2023/06/01/110000

*3:TitleやAbstractに転職の話が一切ないのは元々そちらが本筋ではなかったからです

*4:私の初LTは富山Ruby会議でした

*5:https://twitter.com/subroh_0508/status/1656574588363620353