ククログ

株式会社クリアコード > ククログ > RubyKaigi 2023 - Ruby + ADBC - A single API between Ruby and DBs #rubykaigi

RubyKaigi 2023 - Ruby + ADBC - A single API between Ruby and DBs #rubykaigi

RubyKaigi 2023Ruby + ADBC - A single API between Ruby and DBsというADBCの話をしてきた須藤です。

なお、クリアコードはシルバースポンサーとしてRubyKaigi 2023を応援しました。

関連リンク:

内容

話した内容は前述のスライドと事前情報記事を参考にしてください。しばらくしたら話したときの動画が公開されると思うので公開されたらリンクを追加しておきます。

よかった話

今年は咳さんの話がよかったです。特に「Concurrency is everywhere」と「Sequential execution is a special case」がよかったです。咳さんは多くの人が「ふつう」だと思っていそうなことに「それは違うんじゃない?」という話をすることが多々あって(多々あるように私には見えていて)、今年のこの視点もさすがだなぁと思ったのでした。さすがだなぁと思いすぎて私の話の中でも咳さんの話を紹介してしまいました。

JRuby + Apache Arrow

JRubyの開発者である@headiusがJRubyからもADBCを使えるようにするため、JRubyのApache Arrow対応を提案しました。CRuby用のApache ArrowバインディングはC++実装のバインディングですが、JRubyならJava実装でしょ!ということで、Java実装のバインディングを使う方向で検討しています。

RubyKaigiで話すとこんな感じで開発がブーストすることが多いのでとてもいい機会ですね!みんなも自分が書いているコードの話をするといいよ!

研鑽Rubyプログラミング

先日研鑽Rubyプログラミングの感想をまとめていたのは、研鑽Rubyプログラミングの著者の@jeremyevans0RubyKaigi 2023で話すからだったのです!

@jeremyevans0と訳者の@kakutaniからサインをもらいました。@jeremyevans0とは記念撮影もしました。記念撮影のあと、一緒にお昼ご飯を食べに行きました。どうやって箸でお寿司を食べるかを教えました。(私は素手ではなくて箸でお寿司を食べる派です。)

お昼ご飯のあとはサイン会があるということだったので、ふるさとの天然たいやきを買って届けました。これはたいやき部の部長としての活動です。

Rabbit

いつもRabbitを使っている人たちが今年もRabbitを使っていました。RabbitユーザーにはRabbitユーザーの証である「ショッカーマニア」1の人形を渡しているのですが、この数年は持っていくのを忘れていて渡していませんでした。しかし!今年は忘れずに持っていったので@hasumikin@yu_suke1994@heronshoesに渡しました。

@hasumikinはイベントごとにテーマを作っている(RubyKaigi 2023用のテーマとか)のですが、同じイベントで話す他のRabbitユーザーも使いやすいように https://github.com/rabbit-shocker/rabbit に直接pushしてもらうことにしました。(コミット権の設定をしました。)Rabbitのテーマはgemとして配布できるのでその仕組みを使うこともできますが、通常はイベントでの話が終わったあとや話す少し前にgem pushするので共有されるタイミングが遅くなってしまいます。Rabbitのリポジトリーに入れてしまえば最新のRabbitを使うだけで共有できるのでそうすることにしました。

@yu_suke1994にコードのハイライトバックエンドはカスタマイズできると伝えてしまいましたがウソでした。。。デフォルトでRougeが使われていて変更はできませんでした。。。

@heronshoesは別のツールで生成したPDFをRabbitで表示していました。(Rabbitは昔からPDFビューアーでもあるのです!)が、PDFビューアーとして使うときにテーマをカスタマイズすることが面倒なことがわかったので、さっき少し改良しておきました。

まつもとさんのスライドにうさぎとかめが表示されていなかったのはまつもとさんがうさぎとかめのお世話を怠って逃げられたわけではありませんでした。新しいmacOS上でRabbitが安定していないことが原因でした。まつもとさんは普段はLinuxマシンを使っているそうですが、そのLinuxマシンの電源アダプターを忘れてしまってMacマシンを使わないといけなくなったそうです。しかし、MacマシンでRabbitが動なかったためRabbitでPDF化したスライドをMacマシンで表示していたとのことでした。

RabbitをGTK 3ではなくGTK 4で動くようにすれば新しいmacOS上でもいい感じに動く可能性があるので、まつもとさんが次に話をする機会がある10月前までにRabbitをGTK 4に対応させてリリースしたいなぁという気持ちになりました。gtk4 gemはすでにできているので主にRabbitを変更するだけでいけるはず。

Red Data Tools

今年はRed Data Toolsからは私と@heronshoesが話しました。ここ数年Red Data Toolsの開発イベントはオンライン開催でRed Data Toolsのみんなと会っていないので、RubyKaigi 2023初日の夜にRed Data Toolsのみんなで集まりました。いつものRed Data Toolsのみんなだけではなく、Official Partyで誘った新しい人たちもいました。

新しい人たちはRubyのパーサージェネレーターを置き換えた@spikeolafと一緒に開発をしたい人たちでした。@spikeolafがやっていることを一緒にやるにはC言語の知識があった方がよさそうということでした。しかし、その人たちはまだC言語の知識はあまりありませんでした。ということで、Red Data ToolsでC言語まわりの経験を積んでから@spikeolafと合流しようということになったのです。

新しい人のうちの1人は、私が行きの電車の中でついつい声をかけてしまった人でした。今年はクリアコードから2人で参加する予定で2人分の隣り合った席を予約していたのですが、体調不良で私しかいけなくなりました。そのため、前日に私の隣の席をキャンセルしました。前日にキャンセルしたのでだれも座らないだろうと思ったのですが、途中から横に座った人がいました。私は寝ていたのですが、目が覚めてふと横を見るとノートパソコンでRubyKaigi 2023のタイムテーブルを見ているではありませんか。しかも、なにやら各トークを予習しているようです。どうしようかと思いましたが、今年はRubyKaigi 2023 予習イベント ~推しトーク紹介~でトーク紹介をしていて私は結構詳しい方なはずなので、ついつい「私、スピーカーですがタイムテーブルを解説しましょうか?」と声をかけてしまいました。電車でのタイムテーブルを終えて別れましたが、Official Partyで再開しました。どの話が面白かったかを聞いたら@spikeolafの話というのでちょうど近くを通った@spikeolafを捕まえて一緒に開発しなよ!とけしかけました。が、C言語の知識があった方がよさそうということになったのでまずはRed Data Toolsで経験を積むことになりました。

そんな@mterada1228は「@TKStefanoと一緒に毎週水曜日の12:15-12:45にRed Arrowを題材にRubyの拡張ライブラリーをする配信」に混ざることになりました。興味のある人はRed Data Tools関連動画プレイリストの新しい方の動画をチェックしたりウォッチしてみてね。

RubyGems

私はバインディングを書くことも多いです。バインディングをインストールするには、バインディングそのものだけではなく、バインディング対象のライブラリーもインストールしなければいけません。私はシステムのバインディング対象ライブラリーを使いたい派ですが、そうではなく、gemにバインディング対象のライブラリーも同梱したい派の人たちがいます。

2019年、fat gemをやめるで説明している通り、私はシステムのバインディング対象ライブラリーを自動でインストールできるようにしています。システムが適切に設定されていれば途中でユーザーに明示的な確認を求めずにすべていい感じにインストールします。多くのユーザーはバインディング対象のライブラリーが必要なら自動でインストールして欲しいはず(「インストールしていいですか?」とプロンプトがでたら「yes」と返すはず)なので、よほどのことがない限り確認がない方が便利だと私は思っています。しかし、そうではない人もいます。

なので、そうではない人もいい感じになにかできるような仕組みをRubyGemsレベルで整備するかー、とRubyKaigi 2022(去年!)の頃に考えていて、メンテナンスをしている@hsbtとこんな感じでどう?と相談していました。が、「じゃあ、こういう感じで!」というやつの実装をRubyKaigi 2022の帰りに終わらせられませんでした。そのため、「あぁ、後で仕上げないとなぁ」と思いながらRubyKaigi 2023になってしまいました。RubyKaigi 2023でそれを思い出したので仕上げました。

詳細はまた別の機会に説明しますが、RubyGemsのプラグインがインストール直後からすぐに有効になるようにして、RubyGemsのプラグインとしてシステムのバインディング対象のライブラリーをいい感じにインストールするやつを用意しようと思っています。

test-unit

@hsbtにGitHub Actionsでtest-unitの実行結果がコンパクトになると見通しがよくなってうれしいと言われたのでGITHUB_ACTIONS=trueならデフォルトでいい感じの出力になるようにしておきました。デフォルトでいい感じになるので新しいバージョンのtest-unitにするだけでいい感じになります。

OSS Gate

OSS Gateをもっといい感じにしたいと@yasulabに相談したら、Railsチュートリアルを読んだあとの次のステップの1つとして紹介してくれたり、フィヨルドブートキャンプをやっている@machidaを呼び出してくれたりしました。OSS Gateとフィヨルドブートキャンプでもコラボできそうなので楽しみです!

若者のOSSとの関わり方

私はSpeeeさんのOSS活動をサポートしています。今年は入社2年目の若者である@takatea_dayoがRubyKaigiにオフライン参加するということだったので、RubyKaigiにいる野生のOSS開発者たちがどういう風にOSS活動をしているかを知って欲しいなぁと思いました。たまたま歩いていた@a_matsudaとたまたま歩いていた@onkに自分のことを話してもらえました。いいきっかけになっていたらいいなぁと思います。

まとめ

RubyKaigi 2023では、話をしたり、スポンサーをしたり、RabbitとかRubyGemsとかtest-unitとかをいじったり、OSSのことをしたりしていました。

今年もいいRubyKaigiでした!オフライン参加してよかった!

  1. 今はもう販売していません。「ポピー ショッカーマニア」で検索すると情報が見つかるかもしれません。