トップ 追記 RSS feed

HsbtDiary


2026/05/22 (金) [長年日記]

Google One の AI Pro にアップグレードした

Galaxy Z Fold 7 の特典でついてきた AI Pro の期限が終わって、使い続けることもないかなーと AI Plus にダウングレードして過ごしていたんだけど、Google I/O で AI Pro に Youtube Premium Lite をつけるよ、という発表を見て今のプランとの総額の差額を考えたら実質無料じゃん、となったのでアップグレードした。

アップグレードの UI だとプランアップグレードすると年額払いの残りはどうなるのか全く書いてないのだけど、AI Plus からアップグレードしたら即座に AI Pro 1年分が課金、AI Plus の残日数の日割分が refund された。また、Youtube Premium Lite の特典はすでにある subscription とは別っぽく、今のプランは解約。これ、解約しないで気がつかずに払い続ける人いそう。

貧乏な話だが Youtube の方は日割り返金などはないから次回の請求日ギリギリに AI Pro に入ればよかった、かもしれない。

Ruby のパッケージ作成の CI を ruby/ruby のリポジトリに migrate した

今週はずっとこれをやっていたのだけど、Ruby の CI のうち、パッケージ、つまりほとんどのユーザーが tar.gz などとしてダウンロードしてビルドしているもののテストは ruby/ruby のリポジトリではなく、ruby/actions という便利ツール/ワークフローを集めたリポジトリにあった。

https://github.com/ruby/actions

これは、znz さんがエイッと頑張って、まずはワークフローで tarball を作るというのを GitHub Actions で実現し、そこから派生して、作成した tarball を使ってビルド、テストが通るか、というのを同じ場所のワークフローで用意、あとは daily schedule でテスト結果を通知して、僕などが眺めて失敗しているようだったら直すというのを長年やってきていた。

で、こうなるとビルドプロセスの workflow への記述が ruby/ruby と ruby/actions の2箇所に分散することになり、例えば macOS で何かが変わったので、workflow を変更しなくてはいけない、というときに ruby/ruby では直したが ruby/actions は忘れて daily build で落ちました、ということが起こったりする。

daily build で落ちて気が付く、というのは良い方でたまにリリース直前になって Windows のパッケージテストが落ちました、このコミットが漏れていたから、ということもあって本当に最悪な時もあった。

そんなわけで、この snapshot test と呼ばれるものを tarball-test として ruby/ruby へ全てマイグレートして、pull request や master push ごとにソースツリーから tarball を作成し、作成した tarball を展開、ビルド、インストールまでを実行するいわゆる system test 的なものを実行するようにした。

異様に pull request が多いのは、単に migrate するだけではなく、「今はこの step は不要」みたいのも今回徹底的に見直したからです。

また、今までは600行くらいの yaml ファイルが4つ、さらに毎年コピーして master から 4.0 に派生、みたいにしていたものもやめて Ubuntu/macOS/Windows それぞれの tarball test を master/4.0-3.3 の全ブランチに展開してそれぞれのブランチで面倒を見るようにもしておいた。これで、ブランチごとにテストが実行されるようになるので、ビルドできない!みたいなことはバックポート pull request を作成すればすぐに気が付くはず。

まだ、最終的なリリースワークフローに、今回作った tarball-test を組み込んではいないのだけど、次回の安定版リリースの時にその辺も組み込んだ上で動作テストして今回の migrate はおわり、って感じで行こうと思う。


2026/05/21 (木) [長年日記]

bundler-timing-plugin というのを作った

Bundler のインストールの細かい時間を表示してほしいというリクエストがあって、あると何かしら便利なことがある、というのはわかるのだけど、shell の実行時間表示、と同じで便利な気分になるだけでほとんど意味ないと考えている。

https://github.com/ruby/rubygems/pull/9153

僕の場合は本気で改善しようとする時に DEBUG 表示で見ればいいのであって、ユーザー全員に、常に表示する必要はないということで reject するつもりだったのだが、最近 plugin として利用できる hook を追加したのを利用して、こんな感じで書けばすぐに実現できるよ、と bundler-timing-plugin というのを作った。

https://github.com/hsbt/bundler-timing-plugin

必要なフックポイントがないと動かないので、開発中のバージョンである 4.1.0.dev でしか動かないのだけど、半年以内には出るであろう 4.1.0 だといい感じになると思う。

この plugin、claude に「これとこれを見て構造を理解してから、 9153 でやりたいことを最近新しく追加した plugin hook を使って bundler の plugin にして」(というような内容)でシュッと作ってくれたので本当に楽になったなと感じる。

キャリーワゴンの車輪を補償してもらった

ほぼ昨年の話になるんだけど Raynesys というメーカーの折りたたみ型キャリーワゴンを車での旅行用に買って、衣服などを入れたボストンバッグやら買い物した段ボールやらを放り込んで運ぶ、ということに便利に使っていたんだけど、気がついたら車輪の1つがなくなっていて「なんで!?」となっていた。

おそらく、畳む、出す、などを繰り返しているうちに外れてどこかに落ちたのだろうけど、家や駐車場の間を探してもあるわけはなく、ホームセンターでそれっぽい車輪を探しても当然合うわけもなく、また新しいの買うのやだなー...となっていたところ、Amazon のサポートページから販売元に連絡したら車輪だけ送ってくれてめちゃくちゃ助かった。

保証期間とはいえ、こちらの瑕疵による紛失、にもかかわらずパーツを送ってくれたのでめちゃくちゃ好印象だった。次回 Raynesys が扱っているもので欲しいものが出てきたら、ここから買おうと思う。


https://www.amazon.co.jp/dp/B0F21MZ5DD


2026/05/20 (水) [長年日記]

CVE-2026-46727 を公開した

Ruby 4.0 に入った Socket などのメソッドに timeout を指定可能になったんだけど、そこの処理が場合によってはクラッシュする、ということで CVE-2026-46727 を取得して情報公開した。

https://www.ruby-lang.org/en/news/2026/05/20/getaddrinfo-cve-2026-46727/

今回久しぶりに MITRE 経由で CVE をアサインしたんだけど、一時期は 2週間くらい応答ないな、という時もあったものの今回は金曜に申請して日曜には CVE が発行される、という爆速っぷりで良かった。

Ruby 4.0.5 がリリース

CVE-2026-46727 に合わせて、これは Ruby 4.0 もリリースしないとダメだね、と k0kubun 君とやりとりしつつ CVE の公開とリリースをした。主に自分は情報を用意して k0kubun 君がアナウンスやパッケージを公開する、という感じで進めたので割とすぐだった。

https://www.ruby-lang.org/en/news/2026/05/20/ruby-4-0-5-released/

今回久しぶりに Ruby の同時リリースもハンドリングしたけど、3.3-4.0 全部に影響あります、という時だと作業手順や誰が、何をするというレベルで準備しないと時間のロスが多すぎるな、って感想だった。非同期に何かしていくというところだと高速にできるようにはなったので、こっちの方も頑張ろう。

RubyGems/Bundler 4.0.12 をリリースした

Ruby 4.0.5 などのリリース日であると同時に、RubyGems/Bundler の定期リリース日だったのでエイっとリリースした。

https://blog.rubygems.org/2026/05/20/4.0.12-released.html

前回のリリースがちょと大変だったので、claude で直しまくった結果、コンフリクトは発生しないで全部バックポートして、よっしゃリリース、というところで master にだけ含まれている test helper を使っている箇所でテストが落ちたのでやり直しだった。

今回は RubyKaigi 2026 中に開催したコード懇親会で送ってもらった不具合修正や改善を中心にバックポートして入れている。ちょっと ruby/rubygems をみる時間が減っていたので次回のリリースに向けて細い不具合修正などをやっていかないとなあ。