Techouse技術責任者の山崎 (Twitter: @nappa) です。
今回わたしたちは新卒入社のエンジニアメンバーを含め総勢17人のメンバーでRubyKaigi 2024に参加しています!
個人的には2010年につくばで開催された「日本Ruby会議 2010」以来ひさしぶりの参加となりました(※私の記憶が確かならば)。14年ぶんの時代の変化を感じるとともに、RubyとRubyを含むエコシステムの大きな変化を感じたところです。
さて、当ブログではメンバーに、参加したセッションのまとめ記事や感想を書いてもらっています。その多くは今年の4月に新社会人として入社したばかりです。彼らが Ractor や YJIT などの技術的な内容をスッと理解してサクッとブログを書き起こしてくれていることを、とてもうれしく思います。
しかし、なんでみんなサクっと書けているのでしょうか……?
事前学習
いきなり RubyKaigi に参加しても、その発表内容を理解するのは困難です。 そのセッションの多くは Ruby Internal をテーマとしており (RubyKaigi ですから当然です)、まず Ruby Internal を理解しておく必要があります。
というわけで今回わたしたちは事前学習のため、勉強会を3回実施しました。
まず C で書かれたソースコードを理解できるように構造体・ポインタ・スタック・ヒープなどの基礎知識を学んでもらい、次いで AST、BNF などコンパイラの基礎知識、そして YARV、YJIT や Ruby/C API などの Ruby 固有の知識を学んでもらいました。
▲こんなような具合でソースコードを抜粋して解説をするなどしています。
しかし、Rubyの内部構造が「なぜそうなっているのか」までを理解するためには一層深い知識が必要となります。
「なぜ YJIT にすると早くなるのか」「なぜ YARV を使うモデルは Ruby 1.8 までのモデルよりも早くなるのか」といったトピックを理解するにはCPUアーキテクチャを理解する必要があり、「並行処理・並列処理が何故必要になるのか」ということを理解するためには各種スレッドの実装やOSのプロセスを理解しておく必要があります。
奥深くまで理解するには、大学で学ぶような計算機科学の知識をフルで活用しなければいけませんし、もし大学で学んでいない場合にはゼロから4年分の計算機科学の知識を学ばなければなりません。あまりにも大変です。そして、ふだんの「Ruby on Rails を使って Web アプリケーションを書く」という業務からはあまりにも遠い場所に RubyKaigi はあります。
基礎勉強会
Techouse では「基礎勉強会」と称して2週間に1回、わたしが OS・ネットワーク・データベース・ハードウェア・セキュリティ・システムアーキテクチャなどをお話する勉強会を開催しています。
時間は1回につき90分以上で、これまで46回開催してきました。
これは、私が先輩から教わってきた知識や、なけなしの給料をつぎ込んで買い込んだ本を読んで学んだ知識、やむにやまれず体当たりで体得した知識……それら自分の知識すべてを注ぎ込むような勢いまとめあげ、他分野の技術の知識もまぜつつ極力平易に、かといって手抜きはせず、「落語のまくらのように」楽しくおもしろく分かってもらえるようにがんばっています。
今回の RubyKaigi 参加メンバーの多くもこの勉強会に参加してきています。
きっとその内容が、RubyKaigi 2024 のセッションの理解に役立っていることでしょう。
ブースにてお待ちしています。
今回、RubyKaigi 2024 の当社ブースではその内容の一部をご覧いただけます。
本日5/17(金)の RubyKaigi 3日目も Techouse ブースにてお待ちしておりますので、エンジニアの皆さまにご高覧くださいますと幸いです!!
Techouseでは、社会課題の解決に一緒に取り組むエンジニアを募集しております。 ご応募お待ちしております。 jp.techouse.com