❤️‍🔥

Rubyに関する2023年の自分とのDiff、そして次回に向けてのTODO(RubyKaigi 2024に参加)

 

RubyKaigi 2024年に参加しました

今年も所属企業のGMOペパボの参加支援をいただいてRubyKaigiに参加しました。
会場は沖縄でした。自分語りですが…沖縄は挙式をした思い入れのある場所でもあり、とても好きなので絶対に行きたい気持ちがありました。会社に大感謝です🙏
 
私は去年のRuby Kaigi2023にオフラインとしては初参加をしました。そこで多くの #kaigieffect(RubyKaigiに参加したことで受けた良い影響) を得たので、この記事では印象に残ったセッションやMatzのKeynoteに触れつつ、Rubyに関する2023年の自分との差分について振り返りたいと思います。
 

印象に残ったセッション

一番印象に残ったトークはShunsuke Mori (kokuyou)さんの「Let's use LLMs from Ruby 〜 Refine RBS type definitions using LLMs」です。以下、お名前を黒曜さんと記載いたします。
 
 
このセッションでは、Rubyの型推測の際に使用するRBSというライブラリで、型の推測をLLMにしてもらったらどうなるか?という内容についてお話しされてました。
 
個人的にも最近LLMを活用したGemを開発していたので、興味が湧き視聴させていただきました。
 
黒曜さんはRubyコードからRBS型を推測するツール「RBS Goose」を作成されたそうです。rbsを使用すると型定義のファイルを生成できる・書けるようになりますが、足りないものを補ったりuntyped(型チェックがされない型)なものを定義する必要があったりと手間もかかるとのことでした。
 
そこにRBS Gooseを用いることで、LLM経由で補完をするというアプローチを取ろうと考えられたそうです。(すごい)
 
スライドもアップロードしてくださっていたので、詳しい内容はこちらをご覧ください。
 
自分がこのセッションで印象に残ったポイントは、複数ファイルをLLMに渡そうとした時の戦略の発想と、RBS Gooseのプロジェクトの存続に関する考え方です。
 
まず、戦略に関してです。型に関わる多くのコードをLLMに渡す必要がある課題に対して、3つの戦略を挙げられていました。
Pass all constants list
Combine and pass on files that may be related by RAG
Infer all Ruby files at once
スライドにも書かれているように去年のOpenAIのChatAPIは、送信可能なToken数が現在よりも制限されていました。
自分もアプリケーションを開発した時に、プロンプトを複数回に分けて送信するなどの工夫をしました。
当時の自分はそのような手法しか思いつかなかったのですが、定数の部分だけを送ったり、RAGを活用して関連しうるファイルを組み合わせた上で渡したりするのは確かに良いなと納得しました。
 
※RAGとは
Retrieval-Augmented Generation (RAG) は、大規模言語モデル(LLM)によるテキスト生成に、外部情報の検索を組み合わせることで、回答精度を向上させる技術のこと。
 
次に、もう一つの印象に残ったポイントです。
スライドの最後のページにはこのような記述があります。
RBS Gooseが Dead Duckになる (失敗に終わる) のか、
それとも金の卵を生むガチョウになるのかはまだわからないので、
Cook my own goose(自分で成功の機会を捨てる)前に
もう少し続けてみたいと思う。
 
直接この言葉とお話を聞いた時に、自分も成功の機会を自分で捨てていないだろうか?とハッとしました。
 
最近はAIが目まぐるしく進化し、思いついたサービスやアイディアが大抵「ChatGPTでできそう」「AIを活用した似たサービスがあった」となることが多々ありました。
 
自分が思いついた新たなサービスと、ほとんど同じものが開発中にリリースされたこともあるくらいです。
 
そんな時に、他の人が作っているから良いかと諦めるのではなく、自分だったらこうするといった創意工夫を凝らして頑張ってみようと勇気をもらいました。
 
自分はrbsすら触ったことがない人間ですが、まずは触ってみようと思います。とても勇気をもらったセッションでした。ありがとうございました。
 

Keynote

MatzのKeynoteです。去年の冒頭のKeynoteも最高でしたが、今年も最高でした。
ちなみに、去年の内容はYouTubeで確認できます。ぜひ視聴して欲しいです。
 
今年はパフォーマンスについて改善できるポイントの話と、過去を振り返ってみて20年前のRubyと比較した今のRubyについての話がありました。特に、今回のスピーカーであるSatoshi Tagomoriさんがちょうど実装している機能が取り込まれたらRubyを4.0にしても良いかもしれないという発言は感銘を受けました。
20年も前に実現したかったことがほとんど今実装されているそうで、残り1つが現在も開発中というのはとても熱いですね。
 
 
また、MatzはRubyCommunityについても言及していました。言語単体でできることは限られていて、多くのRubyCommunity(Rubyのカンファレンス、コミッター、企業、BootCamp的な団体…etc)によってサポートや改善がされてRubyの活動ができているといった趣旨の内容でした。
 
次の節でも触れますが、今年は特にRubyCommunityの力を感じた1年でした。
 
本当にこのコミュニティに関われて幸せですし、自分もその一員としてもっと踏み込んで貢献していきたいと感じました。
 

去年の自分との差分 #kaigieffect

さて、そんな素晴らしい内容が沢山あったRubyKaigi 2024でしたが、今回は自己成長に関してまとめてみたいと思います。冒頭でも触れたように、RubKaigi2023で #kaigieffectを得た結果、この1年は意識してRubyに関わるようになりました。
 
去年との差分を書いてみました。
それぞれの詳しい感想は記載してある記事等をご覧ください。
 

Ruby Association Certified Ruby Programmer Gold version 3 取得

いわゆるRubyGoldです。あまりにもセッションの内容やタイトルがわからなかったのもあって、これはどうしたものか…と思い悩んだ結果、RubyGoldの学習が理解につながりそうと結論が出ました。
実際に学習してみると、過去のセッションで出てきたFiberやRefinement、メタプログラミング、VMといった話が出てきました。今回のセッションも「難しいな〜」という理解度ではありましたが、明らかに内容に関しては何か見たことがあるぞ、というポイントを増やすことができました。
 

RailsGirlsのコーチ

RailsGirls Kagoshima 2ndにコーチとして参加してきました。
自分は異業種からエンジニアになったので、同じ境遇だったり、新たにプログラミングを学ぼうとしたりする方を支援したい気持ちが強いです。妻もRailsGirlsにお世話になったので、コーチとして参加しました。
 

Kaigi on Railsのオーガナイザー

RailsにもRuby同様に日本で開催されているカンファレンスがあります。会社の先輩が過去にオーガナイザーをしていたことを知り、自分も主催者側を体験してみたいと強く思うようになって飛び込んでみました。
 

Urawa.rb

住んでいる地域のrbを妻のすずか(@suzuka_hori)と立ち上げました。2024/5/19現在で4回開催しているのですが、これまで何度も満員になるなど様々な方にご参加いただきました。
 
Urawa.rbは、埼玉県浦和周辺でみんなで楽しくRubyを勉強するコミュニティです。初心者も経験者も一緒に勉強しましょう!
 
Urawa.rbに参加した方とRubyKaigiでランチに行けると良いかも、という裏ミッションがあったのですが今回達成することができてよかったです☺️
 
 

過去の自分と比較して規模の大きなRailsの実装をしている

ちょうど一年前は「スリスリAI」ラボという画像合成に関するAPI周りの実装を行っていました。
 
 
これはこれでDB周りやAWS周り、画像合成AIの調査、初めての非同期処理の実装など考慮することが多く、苦労もあったのですが現在はもっと規模の大きい実装を行なっています。
 
それが「タクラミ」です。タクラミは「タクラミとは、クリエイターが有償でオリジナルイラストや似顔絵などのリクエストを募集できる」SUZURIの機能です。現在はベータ版を公開していて、タクラミの作成だけができます。
 
 
まだベータ版なので詳しいことは書けませんが、引き続き頑張っていきたいと思います。
 

Railsの新卒研修を任せていただいた

掲題の通りです。研修の具体的な内容に関してはここでは触れませんが、多少スライドを作ったり技術的な質疑応答の担当を任せていただけるなどありがたかったです。
 

Gemを作った

resquirrelというGemを作りました。
 
 
このGemはOpenAIのChatAPIを使用して、リリースブランチにマージされた内容でNotion DBにリリースノートを自動生成するといったGemです。
 
開発のモチベーションは3つありました。
  • 周囲に伝わりづらいエンジニアの改善を可視化したい
  • ネイティブアプリ開発者にAPI側の変更の伝え漏れを防ぎたい
  • それらを他事業部、ゆくゆくは他企業でも使っていただきたい
 
外部のリリースノートで公開される内容や、アプリケーションを触ってすぐわかる変更は他職種の方にも伝わりやすいです。一方で、エンジニアはそれ以外にも様々な改善や微修正をしているので、その努力や成果を可視化したいと考えたのがきっかけでした。
他にも、モバイルエンジニアにAPI側の変更が伝わるなどの複利があったり、他事業部もRailsを使っているので同じ課題を解決できたりと都合が良かったのでGemの開発をしてみました。
 
resquirrel
yuki-snow1823Updated May 17, 2024
 
RubyKaigiのLTで聞いた気がするのですが、Gemとしてリリースするというのは今後様々な責任が伴うので、一定の覚悟を持って付き合っていこうと考えています。きっと良い経験になると思います。
 

英語を勉強してコミッターと話した

去年はダイエットを継続して10kgの減量に成功したのですが、年があけて2024年1月からは英語を勉強しました。前回のRubyKaigiに参加して海外のエンジニアの方と話せなかったのと、あまりにも英語が理解できなかったのもあって学習を始めました。
 
私は英語の文法や単語を学習するというよりも、話すことを中心に勉強しました。スピークというアプリを使用してAIとシチュエーションごとの会話を何度も行うことで自信につながりました。
 
その結果、day0(開催前日)のイベントでお会いしたJohn Hawthornさんとお話をすることができました。Kaigi on Railsのチーフオーガナイザーの大倉さんもサポートしてくださったおかげもあって、色々な会話ができました。
 
 
大倉さんとJohnさんと話していたところに、タイミングを見てお声がけすることができました。
これも、Kaigi on Railsのオーガナイザーに挑戦して大倉さんと知り合うといったコミュニティ活動の賜物だと感じました。
 
スピークはおすすめのアプリなので、ぜひトライアルしてみてください。
 
 

知り合いがとても増えた

今回のRubyKaigiに参加してみて、とても多くの人に声をかけていただきました。それは、これまでのイベントやXで絡んだことのある方など、種々様々なきっかけがあってこそです。
RubyやRubyCommunityに多く関わったことで皆様との貴重なご縁ができたことが非常に嬉しかったです!これからもぜひよろしくお願いします。
 
 
特に、初めてKaigiに参加する方や、Rubyを学習して間もない方とも積極的に交流したいです。
ぜひお気軽にお話しください。自分も話しかけます!

TODO

さて、今回の #kaigieffect を受けて何をするのか宣言したいと思います。
今回は技術的なことを中心に取り組んでみます!
 
  • Quineを作ってみる
  • wasmを使って何か実装してみる
  • 研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフを読む
  • Rubyのしくみ -Ruby Under a Microscope-を読む
  • パーフェクトRubyを再読する
  • CRubyとは何か説明できる状態にする
  • mruby触って、持っているラズパイで何かしてみる
  • Rubyのコードが実行されるまでをまとめて説明できる状態にする
  • RubyMineのライセンスを購入して触ってみる
  • C言語の学習をする
 
来年のRubyKaigiにはこれらができた状態で参加し、また何か違った形の成長ができたら嬉しいです。
 
Ruby最高!
RubyCommunity最高!
 
改めて、RubyKaigi2024に関わった皆様に感謝申し上げます。