トップ 追記 RSS feed

HsbtDiary


2026/03/06 (金) [長年日記]

RubyGems の Psych を Ruby で書き換えてみた

Claude で問題を解いてみようシリーズで前からやりたいことリストにあった RubyGems が依存している Psych を専用の YAML パーサーで処理できるようにしてみようというのを Claude にやらせたらまともに動くものができた。

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

前から Gemini とか GitHub Copilot 経由で使えるやつでちまちまやってたけど、どうしても bundle install など現実に存在する gem のインストールで死ぬということが多かったのだけど、Claude Opus 4.6 を問い詰めていたらサクッと動くものができて、お前やるな、となった。基本的な進め方は

  • テストは変えないでひたすらテストを通すように雑に作成させる
  • テストを全部通したら(これが Actions でだけ落ちる、とかがあり大変だった)コミットを整頓させる
  • 作業の途中で落ちた箇所については全て回帰テストを追加
  • dump/load しかない if 乱立の実装をパーサーの原則に基づいて構造化しろ、と雑に命令して Parser/Builder/Emitter に分割させていい感じにさせる
  • さらにテストを追加
  • パフォーマンス計測させて Psych から置き換えても現実的なレベルにちまちまチューニング

って感じでいいんじゃね?ってレベルのものができた気がする。いきなりこれに置き換えると流石にやばい気はするのでどっちをデフォルトにするかはともかく、オプションで切り替えられるようにするって感じかなあ。

機動戦士ムーンガンダム 15 を読んだ

しばらく積読のままだったムーンガンダムの15を読んだ。いつの間にか精神世界バトルといういかにもガンダムらしい展開になっていたけど、相変わらず前回はどこまで話が進んだんだっけ...となってしまった。

本当に同じようなことを繰り返していて良くない、というかもう漫画というメディアは読むべきではないのかなあ。


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


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

zlib の脆弱性情報 CVE-2026-27820 を公開した

3月末には Ruby 3.2 のメンテが終わり、3.3 がセキュリティメンテモードになるということで zlib の脆弱性情報および修正コードを公開した。

https://www.ruby-lang.org/en/news/2026/03/05/buffer-overflow-zlib-cve-2026-27820/

この手のやつ、慣れたもので事象の理解とパッチがあればはいはいって感じで進めるのは余裕にはなってきた。とはいえ、これをフルタイムじゃない時にもやれるか、というと無理だとは思うけど...

各種調整とか申請フローが多々あり、AI にはできない仕事、というか何を脆弱性で何をただのバグとするかは最終的には人が決めて終わりというものなので、当面はこれをやって食べていけそうな気はする。

all-ruby のイメージ作成をついに Actions で自動化した

ずーっと前から手元の Windows マシンでせっせと作ってきた all-ruby の docker イメージだけど、気がついたら 800GB くらい WSL の仮想マシンのディスクが成長していて、なんだこれ、となったのでアンインストールすべく Claude の力を借りて GitHub Actions でもイメージビルドできるようにした。

https://github.com/ruby/all-ruby/compare/d370d65de79057917f40f1d8522d19c1ce640a18...febbb8aa75146bc884524ca6972b2f0635572459

大まかな方針としては、とにかくジョブの並列数を増やして docker hub に中間生成物を投げつつ、最後の統合処理をやるというところなんだけど、分割までは上手く行っても統合の途中で Actions の runner がログもなく動き続けて固まる、みたいなことがやたらと発生していて、おそらくは disk size かなあとあたりをつけて、職人の勘による分割作業を繰り返してなんとか最終的に動くイメージを作るところまでできた。

いやあすごいね、これを手で書いてたら発狂すると思う。この辺の方針と戦略はわかるから、後の細かいところは書いといて、というのが本当にたくさんあるのでバンバンやっていこうと思う。

とりあえず bookworm をベースイメージにするのと、安定版バージョンがリリースされたら自動でビルド、というあたりまで辿り着きたい。


2026/03/04 (水) [長年日記]

Gemini 利用に課金されていた

Google の AI Studio、One の AI Pro だから、リミットまでは無料で使えるだろと思っていたら、クレカ入れると勝手に上限突破して課金し始めるようで、$8 消化して引き落としされていた。

これは API 呼び出しで Zed Agent から色々切り替えて試していた Gemini Pro 3.1 の利用が原因で、こんな額で済んだといえばよかったのだけどめちゃくちゃ損した気分。正解はAPIのセットアップ時にクレカを入れない、らしいのだけど Claude でも Max プランのオンボードでクレカを入れさせようとしていて、この辺の手続きの流行は本当に邪悪だと思う。

bundler.io/guides を guides.rubygems.org に統合した

同じような記述がありつつも分離してメンテされ、誰も方針も何もしないで放置に近い状態だった bundler.io/guides を guides.rubygems.org に migrate した

大体の方針はすでにあるので基本的に Agent にぶん投げて実行してあとは微調整で終わり。この手のhtmlをいじる、みたいなやつは本当に楽になっていい話である。

https://guides.rubygems.org/

migrate したのはいいけれど、重複している記述がたくさんあって微妙なのは微妙なままなのでもう少し意味のあるかたまりにして更新するのは次の作業。あとはコマンドラインリファレンスをどうするかだなあ。