長野県松本市にて開催された今年のRubyKaigiに3日目だけ現地参加しました。
所属会社であるGMOペパボ株式会社に参加費用を出していただきました。
昨年はリモート参加して、プレゼンを拝聴していましたが、相変わらず内容に追いつくので精一杯という感じでした。
ただ、現地参加して得られたものはたくさんありました。
まず、企業ブースにて有名企業のCTOとカジュアル面談できたり、技術的な話をできる機会がありました。
RubyKaigi終了後には、たまたま出会った海外エンジニアの方としゃぶしゃぶを囲み、テクノロジー談義に花を咲かせました。
来年はなんと沖縄で開催されるらしいです。
たった1日ですごく濃い経験をさせてもらったRubyKaigi 2023について感想を書いていきます。
参加したセッション
※ あくまで個人の感想であり、スピーカーの意図や事実とは異なった内容が書かれている可能性があります。
RubyコミッターとShopify社の方々のパネルディスカッション(英語)でした。多少なりとも英語をかじっているので、何を言っているのかはなんとなく分かりましたが、そもそも技術的な内容に理解が及ばず、やっぱり本質的に重要なのは英語力以前に専門的な知識だよなあと、本題とは関係のないことを思っていました。
Matzさんが話しながら翻訳的なこともされていて流石でした。世界中のRubyistたちと向き合ってきたからこそ、その人たちとコミュニケーションを取るために英語力を磨かれてきたんだろうなあと思うと頭が下がる思いでした。
Rubyistにとって使いやすいデータフレームを作りたいという思いで、RedAmberというOSSを自作しているとのこと。職業エンジニアではなく、趣味として?活動されているそうで、お金ではなく知的好奇心に駆動されているのが素晴らしいなと思いました。
自分は前職でPythonのPandasというライブラリを使ってエクセルファイルの整形などを行ったことがあり、そういった整形や分析処理などをRubyの書き方でやりたいってことなんだろうなと理解しました。Red Data Toolsというプロジェクトの一環とのことで、Rubyでできることが広がりそうでワクワクしました。今後の動向に注目です。
ブースの面談に参加していたため、途中から参加しました。
ADBCとは、Apache Arrow Database Connectivityのことです。データベース固有のAPIをラップすることで、異なるデータベースに接続できるAPIを提供します。
役割としてはActive Recordなどと同じようですが、ADBCは大容量データとパフォーマンスにフォーカスして、Rubyのデータ処理において大容量データを扱えるようにしたとのことです。
速度差などをグラフで分かりやすく示されていてそのすごさを体感できました。ただ自分の知識不足のせいもあり、内容は深いところまで理解できませんでした。こちらもRed Data Toolsの一部とのことで、ソースコードを見てみます。
個人的にとても印象に残ったセッションでした。JavaScriptのように、Rubyをブラウザで扱えるようにすることで、初心者にもとっつきやすい言語にしたいという想いでWasmの開発を進めてらっしゃるそうです。JSの歴史やライブラリ群から着想を得て、Rubyのgemをブラウザ上でロードできるように試行錯誤されている過程をお話されていました。
実際のデモでは、ブラウザ上で外部ファイルが読み込まれ結果としてコンソールに出力されていて、会場では拍手が起こりました。ただ、外部ファイルの中でさらに別ファイルを読み込むという処理はまだできないらしく、そこを解決すべく試行錯誤されているとのことでした。自分もその様子を見て感動しましたし、とても興奮しました。
こちらもとても印象に残ったセッション。スライドが非常に分かりやすく話し方も明瞭で、素晴らしいプレゼンでした。英語でしたがスルスルと頭に入ってきました。
内容はRubyのHTTPクライアントとサーバに関するお話で、HTTP/0.9からHTTP/3までどのような進化の変遷を辿ってきたのかをサンプルコード付きで説明されていました。とてもシンプルなコードだけど、その中にはこれまでの歴史が詰まっているということを知ってすごいなと思いました。(すごいしか言ってない、語彙力・・・)
プレゼンターのSamuelさんは一緒に開発していきませんか?という声かけもされていたの印象的でした。Rubyistが一堂に介するRubyKaigiは新たな仲間を探す場として最適で、だからこそ自分のプロジェクトに興味を持ってもらうためのプレゼンにとても力を入れられていたんだなと気づきました。RubyKaigiの新たな側面を知る良い機会でした。
ご本人がツイートされてますが、以下で紹介されている記事でとても分かりやすく解説されていました。
実際にRBSを書いて、どのように型判定されるのかをデモしていただきました。参加時点ではRBSに関する知識がほぼゼロだったので、恥ずかしながらへーこんな感じなんだというざっくりとした感想を抱くぐらいしかできませんでした。
参加後のメモに「Steep」とキーワードを残していたので、それを元に検索すると、Rubyコミッターの@mametterさんの記事を見つけました。(分からなくてもメモするの大事ですね)
techlife.cookpad.com
Ruby3にバンドルされているTypeProfで型注釈のないコードを静的型解析できるようになること、Steepで型エラーを検査し、さらにRubocopのようにエディタ上でエラー表示までやってくれるんだなということを学びました。
また、上記の記事内で紹介されている@jnchitoさんの記事で、実際にどのように活用するのかを知り、すごい、自分も使ってみたいと思いました。
qiita.com
弊社のメンバー内でもRBSを使っていくぞ的な話があったので、実務で書ける日も近いかもしれません。
RubyKaigi 2023のラストを飾るキーノートセッションでした。@soutaroさんは15年前から一貫してRubyの型チェックに関するコントリビュートをされていて、前項で紹介したSteepを開発された方です。
github.com
RBSに関する知識がほぼなかったこともあり、お話の内容には残念ながら理解が及ばなかったのですが、15年間の努力と今こうして多くの方がSteepを活用されていることを知り、その凄みを感じました。ありがたいことにスライドを公開されていたので、RBSの知見がついてきた段階で改めて勉強させてもらいます。
speakerdeck.com
RubyKaigi 2024に向けて
企業ブースでCookpad CTOの@kani_bさんと面談させてもらった時、RESTからGraphQL APIへの移行をどのようにしていくと良いかといった相談をさせてもらいました。
Cookpadではスクラップ&ビルドをよく行うらしく、技術的負債が積み上がりすぎて拡張性が損なわれてきた時は、一から作り直したりするようです。
そのような発想を持っていなかったので、なるほどそういう考え方もあるのかという気持ちになりました。そしてそういったリプレイス作業には幅広い技術的知見が必要になるはずなので、息の長いプロダクトにおいては、強いエンジニアを採用して技術的負債を解消していきたいニーズが強くあるんだろうなという推測をしました。
開発プロセスを早めたい時は、思い切って作り直す時間を設けて、設計をきれいにするのも手段の一つなんでしょうね。ポケモンでいえばソーラービームみたいな。
なぜこの話を書いたのかというと、技術的イベントには問いを持って参加すると得られるものが多いんだろうなと思ったからです。
今回でいえば、RESTからGraphQLへの移行を進めるにはどうするか、という問い。ソースコードを他社に見せてどうこうとかはできないまでも、話を一段抽象化すれば、他社のエンジニアに課題感を共有して、解決策を一緒に模索し合えたりする。それはとても素晴らしいことだし、楽しいことだなと思います。
だから、RubyKaigi 2024には自分なりの問いをたくさん持っていこうと思います。そして技術的知見を磨いて、誰かの問題解決をお手伝いできるようになっていたいです。
また、個人の技術者としてどう成長していくかというアドバイスもいただいて、「とにかくたくさん作ること」というお話が印象的でした。勉強になったで終わらせるのではなく、実際に問題を解決するためのアクションとしてコードを書いて成果物を作っていくようにしようと心に決めました。
思い出たち
天然温泉 あづみの湯 御宿 野乃松本に一泊しました。松本の街並みを一望できる露天風呂は最高のひと言でした。セルフロウリュがあるサウナと水風呂もいい塩梅で、心身ともに整いました。RubyKaigi前日にとても良い準備ができました。人気漫画がずらりと並ぶコーナーがあって、前から気になっていた『チ。―地球の運動について―』を読みました。地動説を証明するために、死をも厭わないシーンに鳥肌が立ちました。知的好奇心は誰にも止められないんだな。
お世話になったプログラミングスクールRUNTEQの卒業生の方と集まり、ボードの前で記念撮影をしました。皆さん有名企業の最前線で活躍されていて、自分も負けてられないなと思いました。コミュ力不足で十分な交流ができなかったのがちょっと反省です。
RubyKaigi遠征の締めはとても素敵な時間になりました。同じチームで働いているakiさん(@aki90935433)としゃぶしゃぶを食べに行こうという話になりお店に着くと、エレベータの前で偶然RubyKaigiに参加されていたガブリエルさん(@gazayas)に出会いました。一緒に食べましょう!ということになり、1時間半ほど技術談義に花を咲かせました。ガブリエルさんはBullet TrainというOSSの開発に参加されていて、RBSのトピックでも出ていた抽象構文木に関する知見もお持ちのようでした。
github.com
サミュエルさんのHTTPのプレゼンがすごかったと仰っていて、自分たちのOSSにいかに興味を持ってもらうかって大事だよねというお話をしました。OSSではないけど、自分もLTなどに参加する時は聞き手に興味を持ってもらうにはどのような構成がいいか?など考えるようにしたいと思いました。ガブリエルさんは大阪で活動されているそうなので、地元の京都に帰った際にまたお会いできたら嬉しいです。
akiさんがエンジニアになろうと思ったルーツもお聞きして、誰かの役に立ちたいって想いが根本にあることを知り、素敵な仲間と今こうして働けてるんだなと感慨深く思いました。お二人ともありがとうございました!
最後に
1日だけの参加なのにこうして書いてみると、ものすごく濃い経験をしたんだなと気づきました。オンラインで視聴していただけだった2022と比較すると、学びが段違いでした。オフラインの偉大さを改めて実感します。
冒頭にも書いたように相変わらず技術的な話については5%ぐらいしか理解できていない感がありましたが、プレゼンターの熱量を体感し、キーワードを知り、デモを目の当たりにしたことで、入り口に立てた気がします。参加して勉強になったな〜で終わらせるのではなく、この強く印象に残る体験をベースに自分なりに探求していくことが重要なんだと思います。RubyKaigi 2024では1年間で得た学びと問いをポケットに詰めて、より良い経験ができるようにしたいです。
RubyKaigi 2023の運営メンバー・スピーカーの皆さん、GMOペパボの皆さん、このような貴重な機会をいただきありがとうございました!