Windows で Docker desktop 使うのをやめて、じゃあコンテナ実行は macOS で https://github.com/apple/container で暮らしていこうと思いきや、container r login で docker.io にログインすると
❯ container image pull --platform linux/amd64 docker.io/ruby/all-ruby:latest
Error: error querying keychain for registry-1.docker.io (cause: "queryError("query failure: unhandledError(status: -25308)")")
という感じで何もできないという症状に遭遇してしまった。これ、logout して credential がない状態なら動くので本当に認証の何かが問題なんだろうなあ。
あと、気がついたらディスクが full disk に近づいていて、なんだよ、と思ったらこれも apple/container のディスクが肥大化して 350GB 使っているから、ということだった。Windows のやつと同じなので全部消してから初期化かつ、ログインなしの状態で run だけ使って当面は過ごすことにした。
この辺、image push もできないとか致命的というか「そんなことある?」ってレベルの不具合なので、誰も使ってないのでは、とか疑ってしまう。
dotfiles のメンテに時間をかけるのが無駄と感じているので、なんかうまい方法がないかと考えたところ claude に「2026年に時代遅れの設定を見つけて」「homebrew のインストール状況を考慮して不要なものを教えて」とかやってると、いらない設定をバンバン見つけてくれるので、はいはい、とそのまま受け入れて消していた。
あとは、「Ctrl+g で ghq 準拠のディレクトリ構造 GIT_GOGET_ROOT の下にある git ディレクトリを fuzzy finder で表示させて、選択したら tmux の panel で新規作成、すでに作成済みの場合はその panel に移動するようにして」と指示して出てきたのがこれ
__cd_repository() {
local repo_path=$({
zoxide query --list 2>/dev/null | grep "^$GIT_GOGET_ROOT/"
fd . "$GIT_GOGET_ROOT" -t d --max-depth 3 | sed 's/\/$//'
} | grep -vE "^$GIT_GOGET_ROOT/(github|gitlab)\.com/[^/]+$" | awk '!seen[$0]++' | sk)
[ -z "$repo_path" ] && { zle reset-prompt; return; }
local target=$(tmux list-panes -s -F "#{pane_current_path} #{window_index}.#{pane_index}" 2>/dev/null \
| awk -v path="$repo_path" '$1 == path {print $2; exit}')
if [ -n "$target" ]; then
tmux select-window -t "${target%%.*}"
tmux select-pane -t "$target"
else
tmux new-window -c "$repo_path"
fi
zle reset-prompt
}
zle -N __cd_repository
bindkey '^g' __cd_repository
なんか無駄もあるかもしれないけど、Ctrl+g すればリポジトリのうち最近使ってるものが近くに表示されて、選択するとすぐに tmux でスイッチできるようになったので最高。今後もこんな感じで雑にやりたいことを指示して、微調整、で自分にとって便利な環境を用意していきたい。
RubyGems と Bundler は 2-3 週間ごとにリリースをやってみよう、ということで 4.0.8 をリリースした。
https://blog.rubygems.org/2026/03/11/4.0.8-released.html
だいぶ致命的な不具合というか挙動の何かということはなく、細々とした修正やちょっとよくしたよ、という感じになってきたので収束を感じる。こんな感じなら半年に一回 minor をあげてもいいのかもなあ。
Galaxy Z Fold 7 を買った時に特典としてついてきた Google One AI Pro の 6 ヶ月無料期間が終わりそうなのでこのまま更新はせずに Google One Premium のプランの方に落としておいた。
先月くらいだと更新してもいいかもなあ、とは考えていたけど Claude Max を触りだしてから、いつまで経っても XDG に対応する気がない Gemini CLI に期待するより Claude に乗り換えた方がいいな、って気になったので Google の方は継続なしで。Claude Max も半年限りではあるので、半年後にどうなるかはわからないけど、今のところ Pro くらいにはして継続だろうなあという気配がある。
Matz が不在だったり、いつものメンバーが四国方面に行ってそう、というのもあったので nobu と2人でなぜか月曜と火曜あたりから落ち始めた Windows のデバッグをしていた。
https://github.com/ruby/ruby/pull/16356
要は scoop で入れている GNU coreutils の Rust 版 uutils-coreutils というやつの shim が作成されなくなってしまって sort コマンドがどこからともなくやってきた sort コマンドに置き換わっていてビルドスクリプトが落ちていた、ということだった。これが Windows Update の影響によるジャンクションの制御が変わったから、とか理由はわからないのだけどとにかく動いてないものは動いてない、ということで動くようにしていた。
いやー、scoop が環境を汚さないでまともに使えるやつだと思って使っているのに、こういうトラブルがあるのは本当にしんどい。
先週作ったやつだと Psych は Psych、YAMLSerializer は YAMLSerializer という感じに完全に分離してテストや実装を作っていて、最終的に YAML 関連以外のテストが通れば OK!ということにしていたのだけど、次のフェーズとしてテストは Psych のものを信用しつつ、YAMLSerializerは全部その挙動に合わせるようにした。
https://github.com/ruby/rubygems/pull/9379
こんなのは Agent なら容易くやってくれるのであとは戦略だけになると思うんだけど、今まで分岐していた処理を分岐しないようにした上でテスト実行させた上で、一つずつエラーを見ては Psych の挙動になるようにして、と言い続けてるうちにできてしまった。1つだけ、コードの変更が大量になる割には「別にどうでもいい...」みたいなやつが残ったのでそれは別のレイヤーで吸収する感じにした。