愛媛県松山市で開催されたRubyKaigi 2025に参加してきました。
今回は、近くに道後温泉があったことやカンファレンス自体が水・木・金開催だったこともあり、月曜日に道後温泉に一泊したりしたので、余裕をもって観光が出来たかなと思います。
沖縄の時はなんだかんだで車が無いと色々厳しいなーという感じだったので、自動車免許持ってない自分にはちょっとやり辛いところがあったんですよね。
来年は函館らしいですが、北海道は土地が何もかも広いので、見て回るには結構大変かもしれないなーとその辺りの点で若干の不安がありますね。
という訳で、今回のRubyKaigiを振り返っていきます。
とりあえず、Day-1からの簡単な記録から。
(人が写ってる写真は基本的にTwitterにツイート済みのものか大丈夫なものを選んでるはず)
Day -1
つまり、月曜日。お昼ぐらいに松山の大街道に到着、荷物を何とか預けて宇和島鯛めしを食べる。 関西人として瀬戸内の魚で育っているので、鯛の刺身が好きな自分としては、この鯛めしはとても素晴らしい。
そのまま、DD4D Brewingに行きビールを飲む。DD4Dは東京近郊のクラフトビアフェスでもよく見る醸造所で信頼感抜群、安定の美味いビールだった。昼から通し営業やってるのも嬉しい。
荷物を回収して道後温泉街にある温泉旅館へ。ビジホじゃない所に泊まるのはめちゃくちゃ久しぶりだった。旅館の内湯に入った後、s01さんの黒暗森林信号に合流しようと思ってたんですが、近場の寿司屋がちょうど空いてたので、軽く寿司をつまんで合流しようと思ってたら、めちゃくちゃなサイズのカワハギが出てきたり、隣の席の人に日本酒奢ってもらったりでタイミングを逃した。
結果的に、松田さん達(確か武者さんとnobuさんとtomogさんだったかな?)と居酒屋で合流できて、焼き鳥の基本水準が高いとか話していた。
最後は松田さんと、瓶でクラフトビールが入っていて、柑橘やフルーツを使ったカクテルが美味しいバーで飲んでいた。帰ろうとしたぐらいでsorahさん達が入ってきて、会が微妙に延長されたりなどして、RubyKaigiが始まってきたなーと感じた。
Day0
最後のバーで飲み過ぎたせいか、RubyKaigiが始まってもいないのに二日酔いになってしまい、チェックアウト延長して昼から活動開始。道後温泉商店街を散策して、お土産を物色したり、シックな喫茶店でコーヒー飲んだり。そういえば、ペンさん夫婦とStanに会った。
荷物を上手く預けることができなかったので、飛鳥乃湯の休憩室を借りて風呂に入った後お茶菓子飲んでリラックス。こういう時間が得られるのはとても良い。
ホテルのチェックイン時間が来たのでいつも通りビジホにチェックインして、ANDPADさん主催のPre Partyへ。
その後は今回の松山において非常に重要な場所となったThe Tapへ。地域のクラフトビールを提供してくれて夜遅くまでやっている素晴らしいクラフトビアバーである。松山にまた行くことがあれば是非行きたい。
最初、3人ぐらいで入ってたのだが、いつの間にかすごい人口密度になった。流石に申し訳ねえとは思ったが、ここしか無いのでお世話になるしかない。お金は落とすんでよろしくお願いします、という気持ちだった。
Day1
さて、ここからカンファレンス本編なので、セッションの内容を中心に書いていきたいと思う。ちなみに自分の記憶がベースになってるので、内容の紹介は間違ってる可能性がある。ここは違うよって気付いた人が居たら教えてください!
キーノート (ima1zumiさん)
地元開催、コミッタ就任披露、キーノートスピーカーと、今回のRubyKaigiの主役の一人と言って間違いないima1zumiさんによるキーノートは、とても素晴らしかった。
情報の符号化から文字コードの歴史に繋げつつ、文字というものの奥深さとそれがRubyでどの様に扱われているかをとても分かりやすく発表されていた。EBCDICとかはSIer時代にちょっとだけ見たことがあるし、自分がSIerで仕事をしていた時でもサーバーの大半がEUC-JPだったり、何故かUnixのシステム文字コードをSJISに変更して運用するとかよく分からないシステム(Windowsシステムとの相互作用のためだと思う)が存在しており、自分は単に面倒だなーと思ってただけなのだが、こういう事をちゃんとどうなってんだこれ?と突っ込んでいけると、こんな風に突き抜けることが出来るんだなーカッコいいなーと思いながら聞かせてもらった。
話の流れがとても洗練されていて、後から聞いた発表までの裏話なんかも踏まえると、大変な労力がかかっているんだろうなということが想像できる。
自分が一番好きだったのは「文字コードにのめり込むことになってしまった」という表現で、この「事前にそうなる未来なんて何も想像していなかったのに、唐突な出会いの結果自分でもよく分からん反応をしてしまって、人生に大きな影響を与えてしまった状態」というのが伝わってくるというか、こういう出会いが今の自分を形成してるんだよな、としみじみ思ってしまった。勝手に滅茶苦茶共感してるけど、多分合ってると思う。
Make Parsers Compatible Using Automata Learning (@makenowjustさん)
正確な名前は忘れましたが、教師あり学習によってオートマトンを生成するアルゴリズムを利用して、LramaとPrismのそれぞれのパーサーのプッシュダウンオートマトンを入手し、オートマトンが等価であるかどうかを比較することで、パーサー間の互換性の向上に繋げようというアプローチについての発表だった。
既存研究によって知られているアルゴリズムを応用して、人間では容易発見できない様な現実の問題の改善に繋げている点が素晴らしい。個別のアルゴリズムについては自分が不勉強なためほとんど分からなかったが、オートマトンというモデルが持つ応用力が伝わってくる話で、複雑な状態遷移を伴う現実の問題に対処する時に、何かしらのヒントになるかもしれない。記憶に残しておきたい話だった。
Continuation is to be continued (@fetburnerさん)
継続という非常にマニアックかつ挙動が理解しにくい機能を用いてモナド記法的な表現を作るという、なんか俺似た様なことやったことある!ってなった発表だった。
自分のアプローチはどっちかというとAST変換に近い形でブロック内で書かれている特定の記法を乗っ取り、flat_mapの入れ子に変換するという魔術だったのが、continuationの方はメソッドの途中でcontinuationを経由して行ったり来たりすることで、flat_mapの入れ子を表現していた。面白いなーと思ったが、continuationで実行されるコード、マジでどこからどこに飛ぶのか全然読めねえw 入れ子になると地獄w
サイン会
パーフェクトRails著者として参加してました。
もう5年前の書籍なのに、2冊買ってくれた方が居てちゃんとサイン出来た!本当にありがとうございます!
今でも役に立たなくはないと思うけど、読み替えないといけないところは色々あるのでその辺り申し訳ないと思う。
来年は新刊持っていきたい……と皆で話してましたが、その辺りはDay2に続く。
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down (@k0kubunさん)
JITの実装において、Deoptimizationとは何なのか何故こういうものが必要なのかということについてRubyの実例を元に解説してくれる発表だった。
Rubyは一見変化しそうに見えないコードでもユーザーランドのコードで何でも変更が加えられてしまう。あるメソッドの中のローカル変数でさえ書き換え可能だし、定数もちゃんと定数ではないw なのでJITで最適化して置き換えてしまっても前提が崩れた時には元に戻して最適化をやり直さないと結果が壊れてしまう。
という訳で、JITを作る上ではそういった挙動を理解して置き換えを元に戻す緊急ハッチをあちこちに備えておかなければいけない。このdeoptimizationがあることで最適化が出来る範囲を拡大できるが、その分メモリを食うことになる。
この話は3日目のRuby Commiters and the Worldで議論されていたStatic Barrierに繋がっている話だと認識していて、事前にk0kubunさんの発表を聞いておいて良かったと思った。
余談だが、こういうトーク間の繋がりで伏線回収されるの良いよね。
Ruby's Line Breaks (@spikeolafさん)
パーサーギャング団のボス、kaneko.yさんの発表。
Rubyの改行とは、改行を認識する・無視する状況とは何ぞやということを実際のRubyのコードとそのパースのされ方から紹介しつつ、歴史的経緯によって発生した基本規則からの例外事象をいくつか上げて、Rubyの改行の認識のされ方が実はlex_stateというlexerが持っている状態によって分岐しているという話だった。
a = 1.. 2
みたいなコードは実際に直感的ではないし事故りそうな気はする。
この発表の凄いところは、改行というのは一例であってlex_stateというものに依存して状態が過剰に複雑になっていることが大きな問題の一つであり、それを観測可能に出来る様にLramaを回収したという点だと思う。なので、今後改行に限らずlex_stateに依存している例外的な挙動を補足し改善するための足がかりを確保したということだ。確実に新しい一歩を進めている偉業をサラっと発表している辺りがCoolだなと思った発表だった。
State of Namespace (@tagomorisさん)
我々もMatzも待望しているNamespaceの実装に至るまでの苦労話(絶賛継続中)。
k0kubunさんの発表に近いところがあって、Rubyってのはマジで色々なところが実行中に書き変わる言語なので、下手にメモリ構造を共有すると効率的であっても何が起きるか分からん、みたいなことが大量にあるのだなあと思った次第。Rubhという言語は使うのは自由だけどそれ自体を開発するのはすごい大変という対比がよく分かる話だった。
C拡張のdlopenの重複回避のためにdllをコピーしてる箇所の凡ミスが面白かったw
TRICK
体力が尽きてきたので最後の通常セッションはお休みして、TRICKへ。SQLiteパーサーとクエリ生成の話は聞きたかったけど……。
TRICKはもう言葉では説明できないので、動画が上がったら見てくれとしか言い様がない。
言えることとしては、今年もぺんさんとmameさんが異常な活躍を見せる中、優勝者は別の人だったのが驚いた。
個人的に一番好きだったのは、ぺんさんの標準入力で数字を打ち込むとirbのsyntax highlightで表示できるアスキーアートになり、アスキーアートを上から順番に実行すると算術演算した結果のアスキーアートが出てくるやつ。文章で書いても何言ってるか全然分からんし、何がどうなってんねんという感じ……。
何にせよ、今年も滅茶苦茶笑ったので最高だった。
Official Party
滅茶苦茶広い松山城の城山公園でOfficial Partyがあった。天気が良くて本当に良かった。DD4Dのビールが何と飲み放題であり、ここだけクラフトビアフェスか?みたいな状態になっていた。
食べ物は結構数がシビアで食べ損ねた人が結構居た様だが、日本酒とビールは豊富だった。 どうやら、終了時間の少し前ぐらいに日本酒もビールの樽も綺麗に無くなったらしく、奇跡的な見積り量だと驚いた。松田さんはやっぱ何か持ってる人だよなと思う。
The Tap
帰り際にトイレ行ってたら飲んでた面子と逸れてしまったので、The Tapに向かうことにした。SHさんが一人で飲んでたのでしばらく二人でサシ飲みみたいなことをしてたら、やはり後からぞろぞろ人がやってきたw
The Tapでydahさんの熱い思いを聞きつつトークの予習が出来たなーと思ったのだが、それがあったのはDay0だったかもしれない。大概ビール飲んでるので細かい記憶が曖昧になっている。
Day2
二日酔いはそこまで重くなかったが、睡眠の質が悪過ぎて朝からクソ眠かった。とりあえずキーノートにはギリギリ遅刻せずに済んで良かった。
キーノート (Ivo Anjoさん)
事前にdatadog gemのコードを多少読んでたんだけど、非常に洗練されており、TracePointをめちゃくちゃ使いこなしているなーと思っていたので、とても楽しみにしていたキーノートだったが、期待以上だった。思ってたよりTracePoint成分が多く、Cレベルでしか触れないイベントやpostpone_job APIなどマニアックな機能をプロファイラ用のツールキットとしてまとめて使い易い形でgem化しているという話だった。
一つ一つの機能の説明が非常に分かり易く、話し方自体もめちゃくちゃ洗練されていて、朝一の英語セッションだったけどとても聞き易かった。
自分の仕事でも結構ガチでパフォーマンスに向き合わなければいけないことが多いので、楽しい + すぐに役に立つという俺得な発表だったと思う。
Dissecting and Reconstructing Ruby Syntactic Structures (@ydah_さん)
Rubyと他の言語のメソッド引数の解釈の仕方を比較しつつ、Rubyの特徴的な文法構造の一つとしてargsとprimitive(primitiveだっけ?記憶だけだと限界が……)という階層に着目してRubyという言語の柔軟さと文法構造の関わりというものを熱く語っているトークだった。
そういった文法構造を可視化しよりメンテしやすくする仕組みとしてparameterized ruleという仕組みをLramaに導入したということ、そしてそこで得られた成果を楽しそうに話すydah_さんが印象的だった。
熱量があり過ぎて、ちょっと聴衆を置いていって感があったけど、それもRubyKaigiって感じで良い発表だった。(自分も事前にThe Tapで色々聞くタイミングがあったので着いていけたかなーぐらいw)
ZJIT: Building a Next Generation Ruby JIT (@maximecbさん)
突然表れた新たなJIT、ZJIT。スケジュールに書かれてたabstractを見る限りではコンパイル結果のシリアライズと共有を可能にするのかなーぐらいの話だと思ってたら、JITの仕組み自体を根本的に方針転換するという話だった。
2年前にMaximeさんはキーノートをやっているとは言え、正直、これがキーノートではないRubyKaigiは恐ろしいなと思った。結構な大ニュースである。
YARVに注目してLBBVというまだ研究が進んでない分野で一定の成果を出したけど、これ以上の高速化はかなり厳しいという観測結果が出てきており、メソッドベースの教科書的なJIT手法に転換するとのことだ。自分達が作って切り開いてきたものにスパっと見切りを付けて、今迄の経験と挑戦とリスクを評価して、よりスタンダードなアプローチで結果が出せると判断し活動を開始している点がとても凄いことだと思う。何より作ってきたものを捨てるのは簡単じゃない。
既にマイクロベンチではYJITと同等以上の成果が出ているらしく、年末には実用的な性能としてYJITと同様のレベルに辿り着くと計画しているらしい。開発のペースが早過ぎる。どうなってんだ本当に……。
という訳で、度肝を抜かれた発表としては今回この発表がベストだったかも。次元の違いを見せられた感がある。
そういえば、またハチロクがスライドに居た。やっぱJITチームでは頭文字Dは必読なのだろうかw
ランチタイム
2日目のランチは、会場に来ていたパーフェクトRails関係者で集まってお寿司を食べた。
まだ未来はどうなるか分からないのだが、来年には既刊ではなく新刊を持ってRubyKaigiにサークル参加したいぞ!という気持ちを新たにする会だった。
前日のサイン会でやる気も出てきたので、なんとかKaigi Effectで動き出せる様にしたいなと思っている。
MicroRuby: True Microcontroller Ruby (@hasumikin)
午後一のセッションはちょっと時間が中途半端になってしまったのでお休みして、スポンサーブースを眺めたりして、その次から再開。
はすみさんのトークは淡々と凄いことを話すのが面白いところだなと思う。mruby/cではなくmrubyのフットプリントを十分に小さくし、更に組込みでよく利用される非同期ジョブのAPIを自分で実装することで、mrubyを本当の意味でマイクロコントローラーとして使える様にしたという発表だった。
mrubyとmruby/cで互換を取るためにサラっと凄い量のコードを書いていて、本当に凄かった。mrubyという言語の活用幅を大きく広げるプロダクトを作り上げたという点でも偉業だと思う。(自分は物理的な方面では非常に不器用で面倒臭がりなので、こっちの方面のプロダクトを全然触っていないのが申し訳ないところである……。なんかMatzもそうらしいがw)
Speeding up Class#new (@tenderlove)
Class#newはinitializeを経由することでCとRubyのインターフェースを行き来することになってしまい、そこで発生しているオブジェクト変換のオーバーヘッドが無視できないので、全部Rubyにした方が早いんじゃない?という話だった。特にキーワード引数はHashオブジェクトを経由しないとCとRubyを行き来できないのでコストがかかるらしい。
仮説をちゃんとベンチマークで検証してゴールに向かう開発の仕方や、Rubyのメソッド呼び出しにおけるinline cacheについても詳しく解説されており、とても勉強になる話だった。
JITが実用的になってきた時に、k0kubunさんがRubyで書いた方が簡単でかつ早くなる未来が来るという話をしていたが、この辺りもJITによる最適化のメリットが大きそうだし、その辺りも考慮に入っているのだろうと思う。
Making TCPSocket.new "Happy"! (@coe401_)
RubyのSocket.tcpに実装したHappy Eyeballs V2をC実装であるTCPSocket.newにも展開するという話だった。メンターであるakrさんの指摘を素直に受け止めて、そもそものSocket.tcpの実装をやり直すところから始めており、こういう真摯さがしおいさんの凄いところだなと改めて思った。
そして、相変わらずスライドの作り込みが凄い。しかもこれをちゃんと締切に間に合わせるレベルで作ってるんだから偉過ぎる……。これは根本的に駄目人間な自分には真似できない。
しっかりとRubyKaigiまでに実装を完了させ、実際にRubyのネットワーク接続を大きく改善してコミッタに就任というのが実にカッコいい。最悪のケースだと100倍ぐらい接続までの時間が短くなるので凄い成果である。
LT
なんか今年のLT、音出る発表多かった気がする。やっぱ音はインパクトありますね。
ダブルヘッダーだったydah_さんのLTが実にテックLTって感じでとても好きだった。デモやろうとして間に合わないところとか特に良い。
今回、kakedaさんがLTの前説を務めており、LTの歴史や銅鑼の歴史について話をしてくれたのがめちゃくちゃエモくて最高だった。自分はコミュニティに顔を出し始めたのは、その黎明期よりも少し後のことで活動時期が被ってないので、kakedaさんのことは名前だけ存じ上げているという感じだったが、今回語ってくれたLTの文化はまだ強く残っていたというか、わちゃわちゃやって熱量先行で全然間に合わねー!みたいな感じをとても楽しんでいた世代だ。この人時間内にちゃんと言いたいこと話し切れるかな、というプリミティブな所で登壇者を応援したくなる、そういうところがLTの好きな点だ。時代の移り変わりで登壇する人も昔より大分多様になったので、こういう昔ながらのLTというものを意識するかしないかは個人の自由だと思うが、自分はそういうLTが好きだし今回はそういう話がいくつかあってとても楽しいLTだったと思う。
kakedaさんのブログでそういった歴史についてもう少し詳しく説明している記事が上がっていたので、是非読んで欲しい。自分ぐらいの世代だとエモさ爆発だった。
晩御飯とRuby Karaoke
2日目はドリンクアップからあぶれていたというか、こじんまりと飲みに行くのもいいなと思っていたので無理に補欠をどうにかしようと思わなかった。という訳で久しぶりに会った@shishiさん、ペパボの@deowさん、弊社若者の@_anji7さんとで地元っぽい居酒屋で晩御飯を食べた。
やっぱこういう地元感のあるお店の刺身のコスパが異常というか、いやこの美味さとこの量で1800円ですか?となる。後やっぱ鶏肉が美味い。
小さい集まりだったが今回RubyKaigiに初参加した若者をコミュニティとの接点に紹介できたのは良かったかなと思う。
食事の後は自分は離脱してRuby Karaokeに移動。ちなみに酒飲んでカラオケすると大概酷いことになるので、2日目はほとんど飲んでいない。
mishさんのリクエストで一人ヒプマイやったり、大部屋でCreepy Nutsを歌ったりしていたが、個人的なハイライトはima1zumiさんとSOUL'd OUTを歌う実績が解除できたことだ。最近スティール・ボール・ランのアニメ化が発表された結果SOUL'd OUT熱が高まってきているが、結構昔のグループだし知らん人は全然知らんみたいなグループなので、着いてきてくれる人が少なくて普段寂しい思いをしていたが、今回キーノートスピーカーと一緒に盛り上がれたのは最高だった。COZMIC TRAVELをカラオケで歌う人とか高校時代の同級生以外でほとんど見たことがないw
自分は割とガチめでカラオケが趣味なので、普通よりそれなりにカラオケが上手いらしく結構人に褒められるのだが、好きなことを褒められると正直嬉しいw 人間調子に乗ってはいかんと思うがこの辺りは素直に喜んでおきたい。
Day3
Ruby Karaokeのおかげで酒はほとんど飲んでなかったので二日酔いは一旦抜けたのだが、HPが足りてない感じは変わらず。とりあえず遅刻しなくて済んだのでセーフ。
Ruby Committers and the World
and the Worldは非常にライブ感が強いセッションなのだが、今年はnobuさんのパッチ袋が火を吹いていて面白かった。やっぱパッチモンスターが猛威を奮っている回は面白い。k0kubunさんのセッションの感想でも書いたがStatic Barrierの議論が中々興味深かった。deoptimizeの話を聞いた後だとその意義というものがよく分かるし、斎藤さんがコミュニティの分断を招くからそう簡単に有効にできないと言ってたのもよく分かる。後、inline commentは結構欲しいですね。rbs-inline以外の文脈でもここに軽くコメントで注釈書きたいんだけど上の行に書くかーみたいな時はある。まあ、改行してしまえば書けるとかもあるんだが。
ランチ & 道後温泉
くっ、ガッツが足りない!という状態だったので、ちょっとでもスッキリさせようと思って午前のセッションはお休みして早めに抜けてモリスさんと道後温泉に向かった。早めに移動したのでスムーズに御飯が食べれたし、そのまま道後温泉本館で体を休める。温泉の体に染み入る感じと重力から開放される感じが良いよね。温泉街が近いRubyKaigi最高では。
温泉から出たら、道後温泉の湯上がりIPAを一杯。ってかフルサイズがでけえ。UKパイントでもなくて大ジョッキだよこれは。
Road to Go gem (@sue445さん)
Goでrubygemsを作る基盤を整備したという発表。事前に聞いていたのだが、自分が関西RubyKaigiで話しをしたRustでrubygemsを作る話が参考になったらしく、これは聞いておかねばという感じで着席していた。
自分は一人のユーザーとして紹介しただけではあるのだが、それがRubyKaigiでの発表に繋がってたのかと思うと、発表して良かったなと思うしとても嬉しい。
実際、Rustの方でソースコードを読んでいたので構造についても想像が付くのだが、それを自分の手でしっかりやり切って形にしているのは凄いことだと思う。正直、かなり面倒臭いことが一杯あったはず。
Bundlerの方にもPRを出してるらしいので、近い内に皆の手元でGo製のrubygemsを書く雛形が簡単に手に入る様になるだろう。
Analyzing Ruby Code in IRB (@tompngさん)
スポンサーブースを眺めてたら、ちょっと遅れてしまったので最初が聞けなかった。IRBをPrismのAPIに寄せて、そのfault-tolerantな性質を利用してIRBがカバーできない変なコードもちゃんと扱える様にしよう、という発表だったと思う。
印象に残っているのが、IRBが受け取るとヤバイ変なコードがマジでおかしなコードで、この辺が如何にもぺんさんっぽいというか、今回も楽しませてもらった。
去年のレポートでも書いたけど、本当に想像力の幅が凄い。想定範囲の広さってエンジニアの能力としても重要な要素なので、リスペクトしかない。そして真似できる気がしないw
力尽きてホテルへ
眠気が限界だったので、短時間でも仮眠しようとホテルに戻った。40分ぐらいベッドで横になってキーノートへ向かう。
Matz Keynote
登場の仕方がズルいww あんなん笑うやろw
AI時代のプログラミング言語とは、というテーマでのキーノートだった。「AIのための」ではなく「AI時代」に則したプログラミング言語の話であるのがポイント。「AIのための」言語?だったらPython使っとけばいいんじゃない?みたいなノリが黒Matz感あって面白かった。
実際のところ、短い記述量にコンテキストを多く含められ、DSLを構成するのに非常に親和性のあるRubyという言語は、LLMとの相性は悪くないだろう。型によるコードの意味の詳細化は、一定以上複雑なシステムと人間の認知力の関係性においては有効だと思っているが、LLMをベースにした今のAIの能力にそこまで有効かどうかはまだよく分かっていないと思う。人間に親和性のあるインターフェースとAIに対するそれとで、どういうバランスを取るのが良いのかはこれからより明らかになっていくだろうし、自然言語と今のプログラミング言語の間の存在としてAIとのコミュニケート言語が主流になってくるかもしれない。そういう時代においてRubyは割と戦い様がある言語なんじゃないかというのは自分も同意するところだ。まあ世の中どうなるか分からんというのは毎年のことなので、信条を守って進む以外にやれることはないのかもしれない。
Closing
書きそびれてたので追記。 s01さんが本当にやり切ったという感じで壇上で挨拶していたのにグッときた。Offical Partyは実際天候のリスクとかもあって自分の想像より遥かに大変だったろうと思う。
終わった後にスタッフに感謝の拍手が出来るあの瞬間はとても好きなので、スタッフの皆は堂々と壇上に上がってくれ!といつも思っている。
After Party
カンファレンス後は、さくらインターネットさんのUchiageへ。めっちゃ結婚式会場だったw
色々話したんだけど、自分ももういいオッサンになってる訳で、久々に会った友人と話す仕事の苦労話みたいなのが段々重くなっているのを実感するw
tricknotesさんと話してる時に、これこれこんな感じの仕事があってこういう時にマジで大変ですよねー、みたいなことを話してたら「自分の仕事見てました?」とか言われたのが面白かった。一緒にmirakuiさんと小川さんが居て、CTOと元CTOみたいな感じの人間が集まってたので、皆の分かりみが深いというやつだったのが印象深い。
uchiage後は、そこそこの人数と合流して「生」というビアバーに入った。ここも妙に地元感があるというか、えらく家庭的なビアバーだった。パーサーギャングやkoicさんが居たので登壇の話を色々と聞いたりしていた。
そして、最終的に松山の本拠地とも言えるThe Tapに移動。入ったタイミングではそんなに居なかったのだが、なんだかんだでじわじわと人が増えて最終的に黄色いシャツの一団が出来ていた。豪華メンバーが揃ってくるのRubyKaigiって感じでとても良い。
koicさんとydah_さんとで、最後まで飲んでる俺らみたいな人間ってのはつまり寂しがり屋なんですよ、っていう話をして意気投合していた。その時、松田さんは居なかったけど同じだよなーと思っている。
で、3日目でHPが限界だった所で最後まで飲んでたのもあり、店を出るタイミングでかなりベロベロになってしまっていて、koicさんとydah_さんとpastakさんに助けてもらった。記憶が曖昧だがコンビニでポカリと水を買ってきてもらって、水分ガンガン取って休んでたら多少なんとかなったらしい。
気付いたら着替えもせずにベッドでぶっ倒れてたが、幸い何も失くしていないし事前にチェックアウト時間を延長してたおかげで普通にチェックアウトできた。本当お世話になりました、ありがとうございます!
Day4
二日酔いではあったが、一応それなりに寝れたので普通に観光するぐらいなら問題なさそうってことで、お昼過ぎに松山城に向かう。リフトでお城近くまで上がれるのだが、下のフェンスまでそれなりの高さがあり大人になってこういうの乗ると結構怖いなと思う。自分はそこまででもなかったが、harukasanのツイートを見ると顔が割とマジだったので人によってはかなり怖かっただろうと思う
松山城は今迄見たことがある中でも、最高レベルに戦闘的な城で、道の作り、門の数、城の窓の配置と角度、全てが殺意に溢れており見てて滅茶苦茶楽しい城だった。そして、マジでRubyistだらけだったのであちこちで立ち話が出来てお得な場所だったw
中の展示も色々見所があったし、天守閣からの眺めが滅茶苦茶良くて瀬戸内海まで見えた。松本城の時は自分のタイミングが悪くて曇ってたので、その無念が晴らせた感じ。
その後、鯛ラーメンと鯛めしのセットを食べた。観光地っぽい店だったが普通に美味かったし東京のラーメン屋より全然安い。物価の違いを感じる。
実質RubyKaigiの廊下と化していた大街道をブラブラ散歩してすれ違ったRubyistに挨拶をしつつ、生みかんジュースを飲む。今回何度か飲んだ中でお気に入りだった「せとか」のジュース。味が濃いんだけど結構スルスルと飲める感じで上手い。完全に生物なのでお土産にできないのが残念な感じだった。
そして、Day-1とOfficial Partyでお世話になったDD4Dで今回の旅最後のビールを飲む。お店の人に最高でしたと感謝を伝えたら、綺麗に飲み切ってくれてこちらこそありがとうと感謝が返ってきた。イベントで持ち込むと大抵余ってしまうらしいが、そこはRubyistの酒飲みパワーでしっかり飲み切ることができた。後から聞いた話では向こうとしても大分良いイベントにできたらしく、何だったら全国に遠征しますよ、ぐらい言ってくれたらしいw
最初は一人だったんだけど、ここでもじわじわ人数が増えてきて最終的にはこんな感じだった。
面白かったのがioquatixさんがDDRプレイヤーだったらしく、やっぱコミッタ界(一部)ではDDRが流行ってるのか?とか思ったりした。せっかく日本に来たから日本でDDRをプレイしたいとのことで、日本のコナミのアミュパスとアカウントを紐付ける登録作業を手伝ったりしていた。実に光栄なことだw
この後は荷物を回収して空港へ。バスで炬燵さんに会って「ここ座れよー」って言われたりしつつ、空港でお土産を探していた。
実家の母親向けに一六タルト、後は酒飲みセット。
腹ごなしをしようと寿司屋に入ったら黒曜さんとばったり遭遇し、ここぞとばかりにモバイルバッテリーの電力を借りたりしていた。あの時は助かりました。ありがとうございます!自分のはDay3で飲み過ぎてぶっ倒れてたせいで充電しそこねていてモバイルバッテリーのHPが0だった。
帰りの飛行機がogijunさんと同じでヤノさんを紹介してもらったりした。最後までRubyistとの遭遇が楽しめるのがRubyKaigiの良いところだ。
まとめ
色々とあったことをサクっと思い出せる範囲でまとめて書いてみましたが、今年は観光もカンファレンスもバランスよく楽しめたかなーという感じです。沖縄の時は直前まで体調崩していて参加自体が微妙だったのと、移動に自動車が必要そうな箇所も多かった感じがあって、全力で楽しめたかというとちょっと悔いが残るところがあったので、今回その分は取り戻せた感じがありますね。
実は高校生の頃に一度道後温泉に行ったことがあって縁のある町ではあったんですが、今回改めて松山が好きになった。繰り返しになるけど松山城は本当に良かった。地元の人(キーノートスピーカー)がオススメするだけのことはある。
最近、RubyKaigiのCFPに応募できるレベルでRubyと関われていない自分ではあるのだが、やはりRubyKaigiはとても楽しいし刺激も受けるし勉強にもなる。自分にとって最高のカンファレンスがこれからも続いてくれることを祈っております。
来年の函館もとても楽しみですね。Rubyistの皆様、また函館で会いましょう。RubyKaigi 2025、お疲れ様でした!