こんにちは🧑💻 8月からスマートバンクでサーバサイドエンジニアをしている竪山(@teaaa)です!
9月8日から9月10日まで三重県津市で開催されたRubyKaigi2022に現地参加してきました。
初めて参加したRubyKaigiはRubyistの熱気を感じられ、とても濃密な3日間でした。
Rubyを初めて間もない自分にとって、RubyKaigiがどのように映っていたのかをお伝えしたいと思います。
3年ぶりの実会場開催となったRubyKaigi
RubyKaigiは、国産プログラミング言語であるRubyに関する世界最大級の国際カンファレンスです。
国産言語であることもあって、毎年日本で開催されていました。Ruby開発の主要コミッター始め、著名な開発者の方々、多くのRubyistが一堂に会するイベントです。
しかし新型コロナウイルス流行により20年は中止、21年はオンラインのみ開催となっており、今年は待ちわびていた3年ぶりの現地開催という記念すべき会でした🎉
参加した理由・目的.
スマートバンクではサーバサイドは主にRuby on Railsで構築されていますが、私はRuby・Rails共にほぼ初心者の状態で今年8月に入社しました。
入社直後に先輩から「RubyKaigiというのがあって、とても勉強になるから参加するといいよ!」と教えていただき、初めてカンファレンスの存在を知りました。
他に社内で参加する方がいないこと、「現在の自分のレベルで、そのような場に参加して得られるものはあるのか……🤔?」と思うところもあり、当初はあまり乗り気ではありませんでした。
ですが、何か得られるものもあるかもしれないと思い「エンジニア研修の一環」として参加いたしました。
参加してみてどうだったか
結論として参加して大正解でした!
会場全体の熱気はとても高く、セッションの合間に廊下やスポンサーブースで盛んにやりとりがなされており、Rubyという言語自体の勢い、そしてようやく現地で交流できるという開発者たちの喜びと熱意に溢れていました。
スポンサーブースでは各社さんがとても凝ったノベルティや企画を展開されており、最終日まで常に沢山の人で盛り上がっていました。
自分がいつもお世話になっているサービスもあり実装についてのお話をしたり、感謝の気持ちを伝えながら楽しくブースを回っていたところ、最終日にはスーツケースに入りきらないほどのノベルティを抱えて帰京することになりました笑
いつかB/43のノベルティも配りたいですね👀
気になったセッション・得られたもの
Ruby meets WebAssembly(Day1 Keynote)
Rubyは開発者が自由に楽しくコードを書くことができることができる言語です。しかしながら、初学者にとっては環境構築の大変さや実行環境が限られていることなどが参入ハードルとなっているという課題がありました。
ブラウザをはじめ、さまざまな場所で実行できるようにすることをモチベーションとしてWebAsembly対応(Ruby3.2から導入されます)をされた開発者の方からのセッションでした。
ブラウザ上で動作するRubyインタプリンターやHTMLに埋め込んだRubyコードが動作するデモなどが行われ、革命的だと感じました。
<script type=”text/ruby”>
で囲みます
私も最近まさにRubyに参入したばかりなので、GoogleColabやJS Playgroundsのようなブラウザ実行環境が増え、初学者が挑戦しやすい世界が整っていくといいなと強く思いながら拝聴しました。
このWASMはCookpadさんのRubyKaigi中企画であった「Cookpad Code Puzzle for RubyKaigi 2022」の実行環境としても触ることができ、実際にブラウザ上でRubyコードを実行させながらパズルに挑戦出来ました。
refs
- https://rubykaigi.org/2022/presentations/kateinoigakukun.html#day1
- https://speakerdeck.com/kateinoigakukun/ruby-meets-webassembly
Matz Keynote(Day2 Keynote)
Ruby産みの親である、まつもとゆきひろ(Matz)氏による基調講演。
よく「Rubyは死んだ」といった意見を目にしますが、Matz氏の元にも「親切な方々」からのそういった「ご意見」が多く寄せられているんです という話から始まりました。
しかし毎年のようにRubyは死んでいる(と揶揄されている)にもかかわらず、Rubyは世界に大きな価値をもたらしていくこと、この発展に欠かせないものはRubyコミュニティーのパワーなのだ、というお話が印象に残っています。
主要コミッターだけでなく、Rubyに関わるすべての開発者一人ひとりの貢献が重要であり、それは必ずしもコントリビュート(実際にRuby言語のアップデートや関連Gemの開発に携わること)だけでなく、技術ブログやバグ報告も貢献に繋がる と話されていました。
Rubyが前へと進み、さらに世界を幸せにしていくには僕たち一人ひとりの貢献が欠かせないんだ、自分もその一人としてできることやっていこうという連帯感と強いモチベーションを得られた基調講演であったと感じています。
「なのでみなさん、まずは今日の感想ブログを書こうというのを宿題にします笑」という言葉に興奮し2、3日目の夜中にこれまであまり書かなかったブログを書きました。
Make RuboCop super fast (Day2)
Rubyの静的コード解析gemであるRuboCopの新optionである RuboCop Server Modeについての紹介でした。
従来のRuboCopは実行のたびにサーバーを起動していましたが、スタンドアロンサーバープロセスを起動させ、以降の実行時に—server
オプションをつけることで起動させたサーバー上で実行させることが可能になります。
さらに従来のrequire rubocop
で読み込まれていた大量のrequireを簡略化、サーバーモードで必要なもののみに絞ることでなんと起動時間を850倍も短縮することができるようになりました(!!)
またRubyKaigiドリブンでリリースされており、すぐにServerオプションを試すことができました。
refs
- https://rubykaigi.org/2022/presentations/koic.html#day2
- https://speakerdeck.com/koic/make-rubocop-super-fast
String Meets Encoding(Day3)
CSV.readのString#split高速化に取り組んだ内容でした。
CSV.readのベンチマークをとり、プロファイリングツールを使ってメソッドごとの実行速度を計測していく過程を、論理的な展開と共に丁寧に紹介する内容であり、非常にわかりやすかったと感じました。
ボトルネックとなっていた不要なエンコーディングチェック箇所を特定し、それを無効化することで実際に速度改善に成功されていて、DraftPRとしても公開されています。
CSV.readはかなり使われているメソッドであると思うのでこの修正は多くの人に恩恵がゆくものだな…と感じましたし、自分にとっては「こうやって計測と改善はやっていけばいいのか」という教科書のような内容に感じられ、そういった面での学びも大きかったと思います。
refs
RBSに関するSession
RBSはRuby3.0から導入された型ファイルシステムでありIDEでの型情報参照や、Steepと併用することで静的型検査を可能にします。
今回のRubyKaigiではRBSに関するSessionは5つ開催されており、コミュニティとして注目度の高いテーマであることが伺えました。
Rubyで書かれたプロダクトコードは、ドメイン知識がまだ不十分な自分にはややリーディングコストが高いと感じており、RBSにはとても興味を持っていました。
一方でRBSの恩恵を十分に受けるには、自身のコードだけでなく利用しているGem、依存Gemなどの型付けが求められ、非常にコストが高いものでした。
その型付けコスト低減を目的とした、拡張性・柔軟性に富んだRBS生成フレームワーク「Orthoses」の紹介や、静的型検査GemであるSteep開発者によるRBS導入のススメSessionなど、多くのRBSに関する学びを得ることができました。
まとめ
入社後の研修の一環として参加したRubyKaigiは知識だけでなく、とても大きなモチベーションにつながりました。
今回は一人参戦だっため、逆に思い切って色々な方と交流してみようと決めていました。(初対面にもかかわらず気さくにお話ししてくださった皆様ありがとうございました!)
日々使っている技術を開発している方々と交流することで、「自分も何かバグレポートくらいから挑戦してみよう」という意識も芽生えました。
同年代の方も多く、「自分も負けずに頑張らなければ」というモチベーションにつながりました。
このモチベーションを糧にB/43の開発に取り組んでいきます!B/43を是非よろしくお願いします。