トップ RSS feed

HsbtDiary


2026/08/06 (木) [長年日記]

朝から上野駅往復

再来週に仙台に行くことにしたので、朝から新幹線の切符の受け取りに上野駅へ。ちょっと涼しいなと思い歩いて往復してきたけど帰宅するなり汗だくでしんどい。

別に新幹線くらい Suica に紐づければいちいち発券しにいく必要がないんだけど、東海道新幹線でミスって入れなかった経験以来使いたくないんだよなあ。

Ruby 開発者会議 8 月

前日に見たばかりだけど開発者会議。

https://bugs.ruby-lang.org/issues/22221

自分は最近やっている Windows のロングパスと require 高速化を出していた。このロングパス、というやつ本当に面白くて

  • claude に Ruby で不具合が直ってない、または改善の余地があることで Go, Python, Rust ではすでに解決済みのやつを調べて
  • その中で特にユーザーへのインパクトが大きいものを選んで
  • bugs に報告が来ているものはさらに優先して選んで

として出したらこれですと出してきたのが https://bugs.ruby-lang.org/issues/18947 だった。ようは、Windows で 260 文字を超えるようなパスを扱うことができなくて困っている、というやつで、自分も実はこれを claude を使って Windows で Ruby の開発をしているとしょっちゅう踏むやつなのだった。

claude は worktree を使うと異様に長いパスを作るので、最初の時点でちょっと深い位置で作業をしていて、そこからさらに深い worktree を作り、テスト用のファイル名でも、となると容易に踏んだりする。そしてその度に、一時的にドライブ直下に TEMP ディレクトリを作っておきました、とかやってるので何やってんだこいつ、となっていた。

このロングパス問題、Go はなんと解決しているらしく、どうやっているかというと Windows 10.0.15063 にある隠し API を叩くとロングパスを扱えるというものらしく、それと同じ方法を Ruby でも作って、とやったら扱えるようになってしまった。まじか。

ただ、この隠し API はドキュメントにはないものなので、怪しいなあとは思いつつも今から無効化したら golang が爆死するだろうし、その時は一緒に、ということでやっていいんじゃないかという方向性には持っていけたのでよかった。

今は nobu レビュー待ちだけど、適当な時期に入れる予定。これで自分が開発するときにちょっとした困りごとがなくなるので助かる。


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

gem-codesearch の MCP を作った

自分の仕事に必要なので無限に MCP サーバーを作っている。で、今日は gem-codesearch のを MCP を用意した。今でも ssh 経由で skill を経由すれば同じではあるんだけど https の方がいいだろうってことで。

これが自分の中では破滅的に便利で、claude skill にメソッド削除やリネームの時に gem の影響調査に使うやつ、というので登録しておくと、調査して、というのを指示しなくても claude が自律的に Ruby のコードの削除だな、というのをトリガにして「コード変更による実影響の調査をしてきました、これらの定数を使ってる gem はありません」とやるので最高になった。

bugs, rubyci, gem-codesearch と三種の神器が揃ったので捗ってしょうがない。

開発者会議準備会

なんか朝からポヨポヨしていたけど、この日は火曜から延期した開発者会議の準備会。自分としては最近ハマってる Windows のキラーフィーチャーのロングパス対応と require の高速化を置いて、事前にちゃんと考えるというのをやってた。

みんなやる気が蘇ってきたのか、異様に議題が多い気がする。本番は明日。

RubyGems/Bundler 4.0.18 リリース

2週間経ったので定期リリース。最近は素朴に issue を見て不具合修正、バックポートというのをやっていて結構な量の不具合修正だった。

https://blog.rubygems.org/2026/08/05/4.0.18-released.html

あと、--cooldown オプションを渡してなかったわ、というサブコマンドがいくつかあったのでそこでも指定できるようにしておいた。なお今回から bundler のタグを作るのはやめて

https://github.com/ruby/rubygems/releases/tag/v4.0.18

だけ一つにするようにした。こっちの方が見やすいのと、将来に向けた統合の準備、って感じです。


2026/08/04 (火) [長年日記]

Ruby office hour

この日は Matz は品川のイベントのために移動なのか不参加だったので、nobu, ko1 と3人でゆらっとおしゃべりしていた。

特に最近力を入れている Windows 周りでロングパス対応をする裏技を入れるかどうかについて、懸念点とか気になっていることを nobu と壁打ちしているうちに午前中が終わってしまった。たまに人と話すと時間が早いねえ。

メンテしている heroku を terraform にした

インフラテコ入れ活動の続きで、面倒見ている heroku の構成を terraform を使って IaC 化した。

これも claude に何を使うのがいいかねえと相談して terraform しかないね、という結論になったのでしょうがなく採用した。terraform とか、解決したい課題に対して人間が理解できる範囲を超えているとしか思えないけど claude に丸投げしてやらせるのならまあいいか、って判断。

いつもならここから dump した tf をレビューさせて、改善項目などを見つけて直させるのだけど今週はちょっと立て込んでいるので後で。

gem-codesearch を mitamae 化した

で、続きとして gem-codesearch という Ruby コミッタだけが使える rubygems.org に登録されているすべての gem を調べる仕組みを入れているサーバーの手入れをしていた。

まずは ssh でログインして何をしてもいいよ、と claude に明け渡してから mitamae による IaC 化をしてから、ディスクが足りなくなってきているので ebs をアタッチして拡張だとか、検索の時にゴミとして出てくる vendored コードの重複排除をどうやればいいか、とか。

あと、claude 自身に「claude が使いやすくするために検索結果はどう表示すればいい?」と相談したら

  • すでに着手しているように vendored な関係ないファイルを消してください、余計な処理が多くて token が減ります。
  • /srv/gem/… のような全く同じ情報の繰り返しを消すのも token 削除に有用です。
  • このツールの肝は foo と言う gem に method と言う文字列が含まれるのを1行で知りたい、と言うことなので、同じ gem の表示の繰り返しはやめて、存在だけ最初に出すオプションを追加する

ということだったので、じゃあ全部作って、と作らせた。json にした方が効率がいいのか、と思ったらすでに構造化された出力があるから json にして複数行にするのは無駄なだけと一蹴された。なるほどね。

最終的に 130gb くらいあった gem のファイルが 20gb 以下になってスッキリかつ、高速に検索できるようになった。あと個人的な話になるが、claude に Ruby のコードを消すという時には、gem-codesearch を使って影響調査をしろ、という skill も放り込んだので万全である。