はじめに
こんばんは。あいおいです。シュノーケルして体を冷やした結果無事にコロナを発症し、0日目*1は39.4℃を記録して「おっ!」と思ったけど1日目が36.9-37.1を推移していて己の免疫能力に驚いています。0日目はしんどかったし今も鼻水と乾いた咳は出るのでみなさんも体調には気をつけていただけると嬉しいです。
今年は沖縄だ!!!!!!
沖縄ってすごくない?すごいと思う。去年の私は正直行けると思ってなかったよ。だって会社のお金で行ってたので。今年も会社のお金で行かせて頂いていて、本当にブックウォーカーさんありがとうという気持ちですね……わたしにあるのは熱量だけなのでこの熱量でなにか恩返しをしたいところ。魚のクッキーとか焼いたらいいかな。
さて、そんな感じで三重から3年連続でRubyKaigiに参加出来ることとなりました。わいわい!1度目は衝撃の出会いをして、2度目はLT参加だったので普通のRubyKaigiは初なのかもしれない。いやまあ今回も今回で色々あったんですが、それはさておき。
総評
全体を通して言いたかったこと。最高でした!!!!!!本当に。すごくよかった。最高だと思った点はきっといくつかあって、今ぱっと思い浮かんだのをとりあえず羅列していくんですが、多分全然足りてないです。それくらい良かった。
立地がいい
沖縄というか、会期中は国際通りかな。すごい、夜が遅いんですね。深夜になってもどこかしらがやっていてお酒やご飯が飲み食いできる。バーも居酒屋もたくさんある。何回か「沖縄でやりたかったけど場所がなくて、なはーとが出来てようやく」って話聞いてたけど、なるほど確かにこれはRubyKaigiやらないと。って感じの土地でした。ハブ酒美味しかった。
あと沖縄、その土地の料理がかなり根付いていてすごくよかったですね。沖縄の友達もぽーたまやアンダンスーやいなむどぅちを普段から食べるらしいので、生活にそもそも浸透してるんですね。富山ではブラックラーメンを日常的には食べないので*2、そういう、地域で本当に食べられている地域料理というのはとてもよかったです。なにより美味しい。めちゃくちゃ美味しい。すごいね。
詳細はDay4-5の方で書きますが、海もきれいでとっても素敵な土地でした。私が水族館やTwitterの写真でしか見たことないような景色がすぐそばに広がっていて、こんな贅沢でいいのか……という気持ち。
会場がいい
これまじで良い。去年会場公開されて調べたらめっちゃびっくりしましたもんね、椅子も天井もいい。ここで登壇できたらどれほど気持ちがいいんだろうと思いましたよ。まあLT出し忘れたんですけど!!!!おばか!!!
スポンサーも今回すごく多くて、盛り上がりを感じましたね。なんで今年こんなに多かったんだろ?去年も同じくらいだったのか…?私が知らないだけで…?
トークがいい
なんか聞いたセッション全部良かったんですが、Speaker各位もすごいしトークを選定する松田さんもすごいしってことなのかしら。こちらは敬意を持って可能な限り感想をこれから書くつもりなんですが、途中で力尽きたらごめんなさい。後日追記します。もしくは私の大量の実況ツイートを見てくれ。
イベントがいい
こちらも書いてて思ったんですがちょっと各イベントが良すぎてここでまとめて書くと乱文すぎるので日に分けて書くことにしました。何が良かったのかは該当部分を読んでください。
Rubyistsがいい
いや別にこれは毎年なんですけど、今年は特にRubyKaigi初参加です!って人にたくさん話しかけられました。なんで?なんか話しかけやすい雰囲気あったのかしら。それはそれで嬉しいですね。
初参加の人がたくさんいるのもいいことだし、初参加です!って声をあげられる雰囲気?初参加なんだ!ようこそ~って空気感が今年はすごく強かったように感じます。事前イベントでも初参加者枠取ってくれてるところが結構あったと思う。これすごくいい試みだと思っているのでぜひ来年もやってくれたらなって思っています*3。
事前イベント初参加者枠の何が嬉しいかって、事前イベントってやっぱりコアなRubyistがいっぱい行くんですよね*4。事前イベントってどこかの会社さんがオフィスを貸してくれるので、ある程度規模が限定されると思うんですけど、そうすると結構な確率ですごい人とお話する機会が芽生えます。初参加者的にはその取っ掛かりってすごく大事だと思うんですよ。興味ある分野が明確じゃないから話した人のトーク聞きに行こうとか、事前イベントで予習できたから聞きに行こうとか、本人が来てね!って言ってくれたから分からないけど行ってもいいんだな~って気持ちになれるとか。個人的には登壇してるのを見てるだけだとすごい人だな~で終わっちゃって勿体ないので、事前イベントとかで話すタイミングを作って*5、Rubyistsの親しみやすさを実感してほしいなって思います。
詳細
Day0
出立
11:30かな?のANAに乗りました。早めに保安検査入って、ねんりん家で抹茶のバウムを食べたらとてつもなく好みの味で、私が求めていたのはお前だったのか……となりました。抹茶のバウムは初夏限定らしいので今すぐねんりん家の店舗に駆け込んでホールを買ってください。検査場内のカフェでは温めて提供されるんですが、ほかほかバウム美味しかったです。
軽食食べて満足して搭乗口で待ってたら、ふーがさんっぽい後頭部があって、「ふーがさん…?ふーがさんだよな……」と思ってちらちらしながらメンション飛ばしたら合ってたので合流。junkさんも来たんですが最初本当にjunkさんか分からなくて不安になっていた。顔を覚えられない*6。ごめんなさい……
DDR

クルーズ船
結構ギリギリまで踏んで、クルーズ組は港へ。ぴゃっと受付したらラストビールをいただけて、いいんですか?!?!?!って言いながらにっこにこで飲んだ。あんちゃんとかがもういて、わーいってしたりした。
あとujihisaさんがいて、ujihisaさん!?!??ってなった。ウーパールーパーじゃなかったんですね……いつもruby-jpのtimesでvote妖精をしてくれている方です。ujihisaさんが見てくれてるな~みたいな安心感もあって、そういうところで勝手にお友達だと思っています。奥様のケイティさんが日本語ペラペラで全然英語で対応することがなくてすごい…!となりました。英語…えいご……*8
あと乗船前にうづらさんと出会って、timesでトランスパイルの話を拾ってくれたお礼とかをしたついでにやりたいことの詳細を話したら、はすみさんを教えてもらいました。こういうの本当に助かる~
クルーズ船は永和さんの提供。永和さん、キーボードのとき*9から定期的にこうやってお世話になっている感じがある。永和さん所属のRubyist含めて色々交流してもらっている、いつもありがとうございます。
船自体が初体験だったのでめちゃくちゃテンション上がっていた。クルーズ船くらい大きいと全然揺れないんですね、外に出ない限りは船だというのを忘れてました。あいにくの雨だったのであんまり外出られなかった。ご飯でタコライスを食べていて、ソースがめちゃくちゃ辛くてんひーってしてた。顔に出るらしくて「そんなに辛いなら食べるよ」って言ってもらったんですけど、責任を持って食べました。大人なので。
個人的にぽっけさんがすごく好きなのでぽっけさんを捕まえてRBSの話を色々していた。今後の話とか、そういうのをした記憶がある。今思うとセッションの先取りだったかも。
立ち話ついでに前述のうづらさんに話していた内容をざっくり言って、「はすみさんがいいよって教えてもらったからどこかで声かけたいんですよね~」みたいに言ったら「今日いたと思いますよ……ほらあそこ」って連れてってもらった。こういうの本当に助かる~(2回目)
はすみさんにはじめましてしたら、「えっはじめましてじゃないですよ」って言われて、あれ?!ってなった。物覚えの悪さをなんとかしてくれ。色々話して救いの手をもらう前フリが取り付けられたのでよかった。*10
帰りはいまいずみさんとたまたま被ったのでちょっとお話を聞いていた。いまいずみさんの文字へのモチベーションはなんなのか、とか。irbとrelineへの活動とのつながりが自分ではわかっていなくて、でもこのときの会話でつながって、なるほどな~~ってなった記憶がある。
Day1
朝ご飯

まきさんとも自キの会からの付き合いなので5年くらいの付き合いがあるらしいですねえ。せっかくなので遡ったんですけど、2019/08/10にやってたらしい。つまり20歳ほやほや。え~こわすぎ。
本日 @emorima さんと @takkanm さんにめちゃくちゃ丁寧に自キ作りのサポートしていただいて最高だった…沼の入り口に立った……choco60できたら即あげます🙏
— 相生ゆら (@Little_Rubyist) 2019年8月10日
今日本当に楽しかったです,企画ありがとうございます🙏🙏🙏🙏
Writing Weird Code
ぺんさん!!!!!優しくて大好きなRubyistです。前半のRubyの穴を突く感じとか、その突き方の導入とか、変なコードを書くことの楽しさを伝えるのが本当に上手…………記号関係が鬼門というか、変なこと出来そうだったりするのはしおいさんの去年のトークで感じていて、その実例をめちゃくちゃ大量に出されたような感覚でした。ぱっとこんなに沢山出せるのが本当にすごい。
ちなみにirbの型補完、すごいさらっと言ってましたがすごいことですからね!!!そういえば自分で書いた型をkatakata_irbでどうやって検知しているのか聞けてなかったかも。多分今はirbに入っていると思うので、katakata使わなくても自前のClassに付けてあげた型を見てくれているはずで、でもsigディレクトリ以下にあるとは限らない*11し、どうやってるんだっけ…?なにか設定とかあったっけ…?ちょっとうろ覚えなので調べます。
本題に戻りましょう。何より圧倒されたのは後半の方なので後半を語りたい!これ社の速報ブログだと書いてたら絶対速報間に合わないと思ってやめたんですが、聞いてるその日からもう語りたくて語りたくて仕方なかった……全部語っていいかしら、いいよね、語りますね。
まずFloralが圧倒的によすぎた、一番最初に一番すごいやつを持ってきて全部かっさらっていく人なんだ……って思いました。まず出てきたのが画像。そこでもうインパクトがあるのに、説明で全然わからないけどすごいことを言い出すし、挙げ句の果てにはdecoderは隠しきれなかったんですよ……って、結構隠れてますよ、割と。極めつけは何がすごいって、アニメーションできれいに動いてRubyKaigi2024と表示される。絶賛されるしかないじゃないですか。こういう3Dっぽいアニメーション、どうやって実装しているのかあんまり分かっていなくて*12、3Dで計算するには色々制限がありすぎる気はしつつ、3Dに見えるように2Dでフレーム書くのはもっと無理だよな……って。Freshでも画像をその場で生成させてるから計算していそうなのはわかる。これは金魚鉢のときも思ってたんですけど……聞くタイミングは結構あるから聞けばよかったなあ。今度聞かせてください。
次です。Fresh。なはーとの入口にもあって、あーこれは実行したら絶対何かあるんだろうなあ、でも流石に写経は厳しいよなあ。と思いながら写真を撮ってました。keynoteで出てくると思ってなかった。これも訳が分からない。Floralとは違う方向にすごいアニメーション*13で、挙げ句ちゃんとQuineしてる……?????どういうことですかね。写真に撮っても違和感のないような綺麗なRubyとその中心に書かれているRubyKaigiの文字、どうやったらこうなるんだって感じですが…… このCM、交差点でちょっと待ったりしてたんですけど出会えなかったんですよね。悲しい。
じゃんじゃか行きましょう、Wavy。個人的にはかなり好きです。一番好きかも。すごい自然にゆらゆらコードが踊っているの、ずっと見てたくないですか?波打ち際に溜まったらそれで終わりじゃなくてちゃんとループにしてあるところが丁寧さを感じますね。これもまたコピペすると同じところから始められる、というのが良い。金魚鉢と一緒。そういう仕組み好きなのかも。あと今回は比較的簡単なコードでinit出来るというのがあって、それがすごくいいなーと思いました。なんだろ、全部が全部何もわからないわけじゃなくて、ちゃんと知ろうとしたら知れることの積み重ねなんだなって感じられたというか。その一端がinitのための (line.delete(' ')*(2)).split('#')[1] というか*14。そういうところが好きな理由ですね。
Dangerous。これすっっっごい。なんか全部べた褒めしてる気がするんですが、本当に全部すごいので仕方ない。マウスでクリックするとふよんってなるクラゲ。かわいいですね~!点字をバイナリとして扱うのはかなりなるほどみが強かった。まあ確かに点字、bitだよな……という気持ちになってしまった。挙動周りはおそらく基礎的な数学の話が含まれていて、数学何もわからん……ごめんなさい……という感じだった。基礎教養の薄さをずっと気にしているので早く解消したい。sleepかけないとはちゃめちゃに早いクラゲが爆誕するのには笑ってしまった。この辺からぺんさんのヤバさに慣れてきて、「まさかこの後のトークの種をすべてのTRICKに仕込んでいるのか…?!」と違うヤバさにふるえていました。こわいよーこわいよー
Kaigi-ish。これもよかったですね~最新のrelineで動くやつ。FaceClassなのもいいなって思う。Themeとかじゃないんだ、みたいな。けどその辺は別に本題ではなさそう。コードもRubyKaigiで、ThemeもMinsa織りで、すごくない…?しかも動く。ちょっと目がちかちかするけどなんかこう、そういうものですよね。こういう場所でお披露目されるThemeってさ。これこの後いまいずみさんがさっそく使っててふふってなった。去年も思ったけどirbチームはすごく仲がよくて素敵だなあ。
さいご!Eternal!Minsa織りがランダムで出る。ランダムでってどういうこと??しかも糸を引いた程度でずれるあの手織りの感じも表現されているらしい。怖いよ……ここでも数学っぽい話が出て、最初のほんの少しだけ分かったけど後半は何もわからなくなってしまった。くやしいなあ。Minsa織りには「いつのよまでも」という意味があるらしい。激エモやんけ…………私自身はRubyと触れ合ってまだ7年とかなんですが、確かにずっと一緒に成長していきたいなあと思いましたね。そしてそれは私が頑張ると一助になるんだよなあ……という。頑張っていきたい。ちなみにここでMinsa織りを見たおかげで、見かけたら「あ、ぺんさんのMinsa織りだ……」と思うようになりました。Minsa織り、マンションの壁にもあるし道路にもあるし、もちろんおみやげコーナーにもあるんですよね。素敵。
なんかKeynote後で話す機会があったときはいっぱいっぱいで話せなかったのにブログで言語化するとめっちゃ書けるの困る。もっと面と向かって褒め称えたいよ……
The grand strategy of Ruby Parser
我らがBison Slayerや。金子さんとは去年のRubyKaigi直前にあったShibuya.rbからの友人ですが、なぜか一気に仲良くなってかなり親しんでいます。親しみCommitterランキング上位3位くらいには入る。去年はDay0で松本城で邂逅するわLTの舞台袖ですごいからかわれるわ*15帰り際に新宿駅で会うわで色々あったんですが、ちゃんとトーク聞いたことなかったんですよね。ごめんね。ちゃんと聞いたのはBuriKaigiだけなんですが、BuriKaigiはRubyKaigiと雰囲気がまたちょっと違うので……
そんな感じで初めてちゃんと金子さんの発表を聞きました。圧倒的だった。結構本人に直接お伝えしてるので改めて書くの恥ずかしいし要らないか…?と思うんですが、感想は言えば言うだけいいものだって分かってるので書いていきましょう。お伝えしたことと重複してると思います。先に弁明しておきます。
とはいえ絶対言ってないであろう登壇直前の話からしようかな。今回は何回も「見に来いよ!」って言われてたので、「はい!行きます!」という感じで最前取ってたんですが、最前をすったかたーって走っていくので呼び止めて見てるよー!ってしてました。本人からあれだけ見ろよ!って言われてたのに最前で見てなかったら失礼じゃんね*16。私は真ん中付近に陣取ってたけど、右側にはいつものLramaチームがいたはず。koicさんもいたんじゃないかな。そっち側はあんまり見てないです。横にがちゃぴん先生が来てくれて、ぺんさん良かったですねえって話をしていた。
壇上に上がって写真を撮ってる金子さんが「圧巻ですねえ」ってすごい嬉しそうな声で言っていて、私は友人が幸せそうだととことん幸せになれる人間なので、これだけで見に来てよかったなと思いました。人の嬉しそうな顔や声は世界を平和にするんだ。
ちゃんとトークの内容の話もしましょう。とはいえLramaにPRを出しているとはいえ実実装は全然知らないので、トークの内容自体はあんまり分かっていない(はず)です。
開幕の自己紹介とTreasureDataさんの紹介が早口で笑ってしまった、Lramaの話が早くしたいから詰めてるのかと思ったら別にLramaの話もめっちゃ早口なので面白い。この人Lramaの話させたら1日話せるぞ、って感じがする。それだけ好きなのも伝わってくる。Introductionがちゃんと解説から入るのが本当に丁寧で素敵ですね。早口でもなんとなく分かるというか、少なくともトークの内容に関してはぼんやり輪郭が見えるくらいになるのがすごい。そういう塩梅の解説具合にしてるんだと思うので、その調整もすごい。BNFはすごい便利なんですよ~みたいな話最初か途中にあったんですが、ごめんなさい、読めてないです……ただ読もうとすると読めそうなのはすごく分かる。早く読もうね。
中盤辺りのなんでLR Parserやねん、みたいな話はかなりぼんやりとしか理解していない気がする。結局そもそもの知識がないのでLRとそれ以外を並べられて「ここが素晴らしいんです!」って言われると現状「なるほど…!」としか言えないんですよね。悔しい……今年は知識不足で悔しい思いをする場面がすごく多いな。
分からないなりに楽しんではいて、金子さんがLR Parserが正しいと信じ切っていて、LR Parserのことが大好きで、じゃあそれはなんで?ってところを説明してくれているのはひしひしと伝わったので、あの金子さんがこんなに言うんだからLR Parserって素晴らしいんだろうな……みたいな気持ちになってくる。洗脳か?
私が洗脳されかけていることはさておいて、Parser Generatorがなぜいいかって話ですよね。conflictを伝えてくれるのは本当に賢い。愛おしい。飼ってる犬がちゃんとしつけた通りにお手をしてくれるみたいなさ、そういう健気さがある。
好き勝手出来るのは手書きのいいところとして、それはそれとして自分で気付けないところでいい感じにやってほしい部分はあると思っていて、それをParser Generatorはよしなにやってくれるからいいのでは?という気持ちがあります*17。我々の考えたルールにParserは従っていてほしいんですよね、この辺テスト駆動と思想は近いと思うんだけど。沿わないかどうかは人間では判断しきれない部分がやっぱりあるので、そこは機械がやってほしいなって思っています。この辺トークと完全に同じこと言ってる気がするけど、意見が同じ、くらいに見てほしい。
それはそれとしてPrismのことめっちゃ煽るやんとは思いました*18。あいおいは大体穏便にことを済ませようとするのでちょっとでも過激だとおぉ……となるタイプ。ちなみにPrismとLramaで解釈の違うコード、みたいな話出てたけど、あれって人間的にはどっちが正しいというか、どっちが嬉しいみたいなのあるのかしら。
CSの話。この辺は本当に分からない。わからないことしかない。私は……。それはさておき白と黒のとびらとか、計算理論の基礎があって嬉しくなりました。まだ読みきれてないです。感想はよって言われてるから早く読みますね……それ以外の本はどれも知らないやつかな。いっぱい読んでいて本当にすごいなあと思いますね。「優れた入門書」として自分のブログ上げてるのふふってなるんだけど実際に優れてるので癪ですよね~本人に直接言うと「知ってる」って言われそう。これもまた癪ですね。しおいさんの構文解析ツアーは読んだことないなあと思ったら鹿児島だった。なるほどそれは知らなかった。LR Parserの歴史についても全く知らなかったのでいい機会でした。表面をなぞるくらいの知識でもあるとないとじゃ全然違うので……
なんでLrama作ったの~みたいな話は去年も聞いた気がする、拡張しにくいし足りない機能多いしみたいな。じゃあ新しく作ります!ってするの改めて考えるとすごいパワーですよね。本当にすごい。どういうことがしていきたいのか~みたいな話をしてたわけですが、図式で分解されていってめちゃくちゃ分かりやすかった。説明がうまいとは常々思っていた*19けど、ここまでとは思っていなくてちょっと衝撃を受けました。ちょっと実装周りの知識が足りなくて分解された詳細について色々語るのは出来ないんですが、わいだーさんとjunkさんの実装したことが話されて勝手に嬉しくなりました。parse.yの話で5つに分割されて、その説明をする流れでチームの登壇紹介出るのきれいすぎる、Day1一発目だから出来ることじゃん。ずる。最後の余った1個は僕がLTで話すんでってするのもずる。なんというかセッション外も含んだ構成がうますぎるんですよね。
その流れでどんどんチームが増えていって、最後に*20私が混ざれたのすごい嬉しいですね。これは先に言っているやつですが、金子さんのセッションは自分の世界に引きずり込むのが上手くて、でもただの沼に落とす悪い人じゃなくて、ちゃんと先の見えない世界から一筋の光が見えるくらいのところまでは手を引いてくれる感じがするトークをしてくれるので、そういうところがとっても好きですね。去年からLramaチームにメンバーが増えたのもそういうところで引力があるからじゃないかなって思っています。
後から聞いたけどクロノトリガーからあのステータスは取ってるらしくて、じゃあ多分私の配信の任意の場所から取ってくれたんだろうなーというのも勝手に思っていて*21、そういうのも含めてすごく幸せになれるセッションでしたね。今見るとこれも皆そこまでレベルが高くなくて、これからどんどん成長してラヴォス*22に立ち向かうんだろうなって感じがする。聞きに来てって言ってくれてありがとうございました!

あとスライドと実況見直してて思い出しましたが、 lex_context がどういう役割を持っているのか分かって急に解像度がぐっと高まって、これも嬉しかったです。説明されると急に分かるようになるのは金子さんの説明力の高さもあるけど、Lramaの分かりやすさも理由の一つな気がする。いやRBS書いてるだけでは分からないところの方が多いんですけど、それでもやっぱりぼんやりは分からなくもないかな…?みたいな感じなんですよ……(伝われ……)
この実況ツイート、後から金子さんに「これ突っ込みどころだったので突っ込んでもらえてよかった」って言ってて、わーいってなった
#rubykaigi #rubykaigiA 15分かかる話をどうしてLTでやるんですか?
— 相生ゆら (@Little_Rubyist) 2024年5月15日
余談ですが、合間に入る名言に対してかなりポエミーな解釈をしたんですが、それをブログとしてpublicに残すのはめちゃくちゃ恥ずかしいので今度直接聞きにきてもらっていいですか?メモっておくので。
Let's use LLMs from Ruby 〜 Refine RBS types using LLM 〜
実況芸でお世話になっている黒曜さん!これがRubyKaigi初登壇って言っていて、うそつけ~って笑っていました。黒曜さんは富山Ruby会議01からの仲なので、Rubyistの中でもかなり旧知。2019/11/03なのでRubyコミュニティ参入直後くらいですねえ。時間の流れ怖いよ~(2回目)*23
座りました〜〜!話しかけてくださいませ、、!#toyamark pic.twitter.com/DszZ1SVMmk
— 相生ゆら (@Little_Rubyist) 2019年11月3日
LLMの話は去年のLTでもありましたね!実はあんまり聞けていない。LT前後は結構いっぱいいっぱいだったので……今回はゆっくり聞けてよかったです。最近話題のAIを使ってRBSの生成をもっと楽に出来ないかな~という話。RBS Gooseというのを作ったがロゴはDuck, でもDuck Typing同様Gooseっぽく鳴くDuckなのでGooseと名付けられたプロダクトにこいつがついててもOK!みたいな事を言っていて、ほんまか…?と思ったりした。
それはさておきアプローチの話。型を付けたいコード(A)、型がついているコード(B)、Bに対して付けたお手本になる型ファイル(B')を渡してプロンプト渡して生成させる。みたいな感じだったはず。お手本ファイルを渡す必要があるのは、LLMがRBSの記法を分かってなくて変な書き方をするから。LLMはそれっぽい感じに推測して書き足すだけなので、命名規則が結構大変そうな感じがするなーというのと、サブクラスとかを扱ってる時がしんどいよねという話。後から聞くと渡せるtokenの数は増えてるけど出力がまだ弱くて、そういう意味でも実用には至れない感じらしい。厳しいな~。シンプルに開発や検証でもお金がかかるのが個人だと地味に痛手だよなという感じもしますね。
ただ夢はかなりあると思っていて、範囲を絞って渡すとか、渡し方や出力の仕方を調整するとか、そういうことができれば早い段階で実用に耐えられそうな気配はある。黒曜さんともその辺は話して、例えばgemの型生成なら依存が少ないので比較的楽に生成出来るんじゃない?みたいな話をしていました。今思うとOSSならRDocとかも結構書かれているので、そういうところから型情報を抜き取ってより高精度に生成することが可能そう。
あと機能面でも少し話を深掘っていくと、LLMどれを使うか選べるのはめちゃくちゃ賢いと思っていて、今後もっと有用なLLMが出てきたときにも楽できて嬉しそうな感じがしましたね。テスト周りも重いことや金銭面のことを考えてちゃんと対策していてえらすぎた……個人開発だと(私は)結構テストをおろそかにしてしまうので、そういうところをちゃんとしているのはシンプルに尊敬と言うか、開発者としての信頼度が高いよなと思いました。ちゃんとテスト、書こうね……。あとこれはテストでやってる訳ではないはずだけど、性能評価をしっかりやって公開していてすごい。個人で試してみようかなとなったときに、じゃあどのLLMを使おうかな……って悩んでしまうので、その指標を提示してくれるのはお試しで触りたい人にとってかなり嬉しいんじゃないかしら。めちゃくちゃ最近出たらしい*24GPT-4oも評価していて手が早い。本当にすごい。それをスライドに盛り込めるのもすごい。GPT-4oは優秀ですねえ……
オチとしてrbs-inlineの話と、rbs-inlineならcopilotくんとかがすでに結構補完してくれそうということで早期終了のお知らせの気配を感じていて趣があった。この辺はRBSもAIもまだまだ変化が大きいのでどうなるか全然わからないですねえ……
せっかくなのでまとめて書いてしまうんですが、Day2のLeanerさんのDrinkupでgem_rbs_collectionの話から派生して、PRの保安官を出来ないか*25みたいな提案をしていて、こちらも結構乗り気っぽい感じでした。どこかでtypoとかを細々大量のPRで出されて「別に悪いPRではないけど限度はあるよね……」みたいな状態があったのを思い出して、そういうので適切なPRが埋もれてしまうのをLLMで改善できないか?みたいな話。gem_rbs_collectionの /merge とか、PRの管理の話が発端だったんですが、割とよさそうな発想では?と思っているので、興味のある人は黒曜さんに話を振ってみるといいかもしれません*26。
Exploring Reline: Enhancing Command Line Usability
キャーいまいずみさーん!なぜか今年はパインARMYと呼ばれていて、パイナップルをやっつけようとえもりハウスに行ってたのは見たけどARMY、なんで…?と思っています。なんでなんでしょうか?いつもHelpfeel Cosense*27で大変お世話になっています。検知能力が半端じゃない。今年からはNotionでタグづけもしていてどういうこと???と思っています。いつかでであを一緒に踏んでください。
さて、いつも文字コードの話だと思うんですが、今年はRelineの話。IRBとRelineにはいつも本当にお世話になっています……。しかしRelineが裏で何かをやってくれている、ということはぼんやり分かっていながら、じゃあ何をしてくれてるの?というのは分かっていなかったので、今回のセッションはすごくよかったです。表示部分らしい。そうなんだ~!全然裏じゃないじゃん。なんてことだ。だからruby-debug-ideでは > は表示できてたけど p 1 とかした途端死んでたのかもしれない*28。Relineは問題なく動いていた、という意味で。全く関係ないかもだけど。
こっちでもIRBの型補完の話に触れられている。社内リポジトリにkatakata_irb入れっぱなしな気がしているので消してこっちを使うようにしたいんですよね…… repl_type_completor はoptionalなので、rails consoleで使うためには多分application.rbとかに書くとことかありそう。わかんない、完全に憶測で言っています。みんなも型補完使っていってほしい、実際katakata_irb入れてから一気に軽くなってうわあいってしてたので……ただこれが自作型導入でどれだけより良くなっているかは分かっていなくて*29、そっちについてはまだあんまり言えないです。これも記事にして上げたほうがいいやつだな…?なんでブログ書いてる途中でやりたいことが増えたんだ…?
まあいいでしょう。Relineってなんぞや?という話です。Command Line Editor。そういうのがあるんだ……となってしまった。なんか完全に「あのConsole上での便利な様々をやってくれていたのは、ごん、お前だったのか……」状態だった。全然知ってあげようとしてなくてごめん。でも普通に考えてあんなに便利なことがConsoleでさっと出来るわけもなく……って感じですよね。なんかConsoleとして頭の中で合成されてしまっていて、Command Line Editorというものが思い至らなかった。Consoleで新しくタブ立ち上げたりしたときに出る謎の文字(エスケープシーケンス)はそれを待っていたからなんだなあ……と繋がってすごくすっきりした。
Relineとそれ以外のCommand Line Editor(特にGNUかな)では機能が不足してる部分があるよ~みたいな話なんですが、正直そんなことを思ったことがなくて、寝耳に水でした。めちゃくちゃいろんなことが出来る感覚でいたけどあれでも足りてないんだ……readline-extがdefault gemsから外れるということで、そうするとreadlineが呼ばれて、Relineが使われるようになるらしい。この辺認識があってるかちょっと不安ですが、READMEに互換性があると書いてあるもののextとrelineではちょっと差分が出るのかしら。そこで勝手に切り替わっても不都合が起きないように足りてない部分のショートカットや設定周りを実装してあげる必要があるんだよね~みたいな話だったはず。設定周りはinputrcに書かれる、初めて聞いたファイルだぞ……会場には結構知ってる、書いてる人がいるっぽくてすごいなあになった。というかこういうコンソール周りの設定って割といじってないんですよねえ。おすすめ設定募集中。
Reline……というかGNU readlineには思ってた以上に設定項目があるっぽくて、Reline的には結構不足部分があるらしい。でも個人的には不都合は感じていないので、カスタム初心者には十分な機能を提供できていそう。結構な不足部分があるので片っ端から実装してると手が足りないよねってことでちゃんと解析してるのがえらすぎる……。Github上にあるinputrcから、頻度の高い設定を調査したらしい。やり口が賢すぎないか?上位の設定は結構網羅出来ててIRBチームも賢い。さすがすぎる。逆に全く設定されてなかった変数もあったらしくて、それはそれで面白い。まあPrivateで誰かしらは使ってるんだろうけど、そういうのは言い出したらきりがないのでね……
実際の実装の話をしましょう、ってなったときにundoを出されて、undoなかったんだ?!?ってなっちゃった、全然意識してなかったけど確かに使ってなかったか……というかConsole上でundoを使うという意識があんまりなかった。普段のコードをIDE上で書いてるときもそんなにundo使ってない説はあるかも。まあそれはさておき、undoはやっぱりhistoryにログを残していくしかないですよね……そうですね……という感じだった。どれくらいの粒度で、みたいなのめちゃくちゃむずかしい気がするんだけどあれってどうやってよしなにやってるんだろう。分かっていません。何はともあれundoは実装されたので、じゃあredoもほしいよねってことで、そこはこれからの課題らしい。どんどん便利になっていってるの本当にすごく良いなあ。IRBチームをなんとなく素敵だなという感情で見てるのと、型補完をぺんさんが頑張ってくれているのでその辺含めてちゃんと追っていきたいですね。
Official Party
きたよ! #rubykaigi pic.twitter.com/iUOGzW6ZEP
— 相生ゆら (@Little_Rubyist) 2024年5月15日
ぴゃっとブログ書いて酒を回収してPartyに行った。今年は登壇ないので代わりに速報ブログでも書くか~と思って書いてました。社の広報にも取り上げてもらってます。初の試みだったので広報チームの人には結構負担を強いたんじゃないかなあ……無事に3日分出せてよかった、お疲れ様でした(空リプ)
さて、Partyの話に戻ります。Official PartyのBBQ, よすぎた……いつもと違う感じがしてすごくよかったです!!!3回目の若造がなにゆっとんって感じかもしれませんが、まあいいじゃないですか。
わいわい肉焼くのも楽しかった。なんか名前を一方的に知っている*30すごい人が世話焼きさんでお肉焼いてお皿に入れてくれたりして、性格が垣間見えてめっちゃよかったです。あと個人的には裏で許可出してくれた松田さんに甘いお酒を差し上げられてよかった。コップある想定だったのと終わり際でせわしなくなっちゃったのだけ申し訳なかったな~*31。基本的に好評でよかったです!炬燵ちゃんやあんちゃんとかのいつもの仲良くしてくれてる皆様にも振る舞えて、みんなが美味しいって飲んでくれてすごく嬉しかったなあ。大好きなみんなが嬉しそうだと私も嬉しいので(2回目)。そしてそれが自分によるものだと思うとなおさら嬉しいんですよね……
基本的にはParser組のところにいて*32、junkさんとわいだーさんがCommitterになるのを眺めたりしました。いいな~(実装に関わってるわけじゃないので、圧ではない)。あとSHさんがすごいお肉焼いてくれて、ああそういう人なんだなあ優しい人だなあと思ったりしました。何食べたいですか?とか、お腹空いてますか?とかめっちゃ聞いてくれる。優しすぎませんか?ごめんね、焼かれるお肉を眺めるのが好きなだけなんです……めっちゃ見てたね……

ハブ酒あるじゃん~!と思って頼もうとして、一応「現金だけですか…?」って聞いたら「現金だと嬉しいですね…!」って返されちゃって、あわ…あわ…ってしてたら見知らぬRubyistが「出しますよ!」って言ってくれて、んあー?!ってなった。ありがとう見知らぬRubyist。名前確認したらよかった。酔ってて何も覚えてないよ。ハブ酒は美味しかったです。思った以上に飲みやすかったけどあれってベース何なんですかね?
がちゃぴん先生のダイエット話とか色々雑談も出来てよかった。がちゃぴん先生多分今年がはじめましてなのにすごい仲良くしてくれてありがたすぎる……あと去年は全然話せなかったとりいさんともお話が出来て嬉しかった。優しげな雰囲気で話していて落ち着く方でしたね~ささださんと仲が良くてふふってなった。ささださんが海降りていいかな…?!みたいな雰囲気してたら立入禁止だよ~って止めてたり。微笑ましすぎる。
お酒を差し上げる前の話なんですが、松田さんにプロポーザルのフィードバックを頂いてました。内容を公開すると負け惜しみっぽくなっちゃうので公開はやめておくんですが、すごく良いことを言っていただけて嬉しかったです。フィードバックを貰え、という話は金子さんに言われていて、「行かないなら僕が会わせますからね」とまで言われていたのでそこまでされる前に自分で行きます……と思って行ったんですが、行ってよかった。本当によかった。ありがとうございます*33。
あと余談ですが私を含めてLramaチームだと認識されていたのが嬉しくて、なんだろ、ライブラリを書いてる張本人はContributeしてくれる人自体が嬉しいだろうからチームとしての認識が早いというか、ある程度のバイアスがかかるだろうけど、松田さんはそうじゃないと思っているので、松田さんにそう認識してもらっていることがすごく嬉しかったです。そういう部分も含めて聞きに行ってよかったなって思いました。
ランチ話
去年もDwangoチームとBWチームでご飯を食べていて、それを今年もしたいなーと思ったので声をかけてました。ヒカルステーキに行っていた。DWはそんなにRubyのチームがいないらしいのだけれど、こうやってちょっとでも交流が出来るのはすごく嬉しいし、グループ会社の特権だなあと思う。概念同僚です*34。

ヒカルステーキ、ステーキを食べるべきだったんだけどなぜか欲に負けてハンバーグにしてしまった……この後もステーキを食べる機会はなかったので沖縄ステーキ体験は敗北である。だってハンバーグ食べたかったんだもん……でもハンバーグも肉肉しくなるように趣向が凝らされていて、なんだあれ、腸なのかな…?で包まれていたんですよね。ひき肉もかなり粗挽きで肉!って感じだったので、ステーキ屋さんで食べるハンバーグとしては満点だった。ヒカルスパイスをかけそこねたことだけが後悔。あれめちゃくちゃ美味しいらしいですね……
Day2-5
ごめん!この時点でURL等含めて20000字を超えていて流石にだめだとなったので分割します!!!!思った以上に今年のRubyKaigiへの感情がありました。自分でもこうなると思ってなかった。記事を上げたらここにURLを貼るのでちょっとだけ待ってください。
某お酒のリスト
以下の通りアイスワインの白2本、赤1本。日本酒を1本振る舞っていました。日本酒だけ結構余ったけどそれ以外は空になったので助かる。飲んでくれた各位ありがとうございました~
イオンさんだけembedが出なかったので気づきにくそう。ここにURLが!あるよ!
https://www.aeondewine.com/shop/g/gA106-4008005042441/
おまけ
沖縄良かった写真集。Day0-1




*1:Day0って言いたかったけど会期中と間違えるのでやめた
*2:とろこんも別に食べない。学校の運動会のおにぎりで出てくるくらい
*3:弊社はまだ難しそう。これからに期待!
*4:これはDrinkupの時も松田さんが言ってたけど、情報を取りに行く力が強いので
*5:会期中はみんながSpeakerに群がるので機会が作りにくい
*6:でであしてるから他のRubyistよりは会ってるはずなのに!
*8:ずっと苦手意識がある。よくない。
*9:Day1朝ご飯で言ってるまきさんとの初対面のやつ
*10:今回はこういう「誰かの助け」みたいなのが多かったKaigiだったので全部書いていきます
*11:一応RBSコミュニティ的にはsig以下で統一されてる気配はあるけど
*12:残念ながらQuineは読めないので……
*13:こっちはもっとちゃんとアニメーションしてる
*14:1行で書きたくて適当に合成しました
*15:緊張を解してくれたのでとても感謝してます
*16:これ来年の私のトーク通ったら来てね!ってめっちゃ言ったけど、その皆に適用する気はさらさらないです
*17:こういうの下手なこと言って全然違うこと言ってたら怖いけど、恐れずに言っていく。間違ってたら訂正してくれると信じているので
*18:松田さん的にはもっと言うと思ってたらしい、過激派?
*19:ruby-jpでちょこちょこ教えてもらったりしてたので
*20:やってる内容的に無理やり感はあるが
*21:違ったら嫌なので答え合わせはしなくていいです
*23:この頃のあいおいは猫かぶっているのが分かる
*24:AI周りちゃんと追ってないのであやふや
*25:めっちゃ意訳
*26:私は興味はあるんですが、手が足りない……
*27:もう現時点では名前が変わっているので。旧Scrapboxです。意図のある名称変更は敬意を払います
*28:https://youtrack.jetbrains.com/issue/RUBY-31423/Debugger-dont-work-with-IRB-1.7.0#focus=Comments-27-7845527.0-0
*29:型の導入率自体が悪いので計測をまだやってない
*30:意外と名前知られてるっぽいので一方的じゃないかも
*31:お酒はゆっくり楽しむものなので
*32:お酒の文脈が金子さんとjunkさんだったので
*33:後から聞いたら金子さんは先に聞いてたらしい。なるほどね
*34:社内には概念同期もいます