トップ 追記 RSS feed

HsbtDiary


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

crit を使い始めた

claude desktop で開発していると、diff view があってそこへアノテーションとしてコメントしたり、github の comment を同期させて読んだりはできるんだけど、AI にコードを書かせる、AI がレビューする、自分もレビューする、というサイクルがなんかこれじゃないなあ、って流れでモヤモヤしているところに miyagawa さんが crit というツールを紹介していたので使ってみたところなかなか良さげだった。

https://github.com/tomasz-tomczyk/crit

skill も提供されていて、呼び出すと GitHub の pull request view ぽい画面を提供した上でコメントをして approve なり review comment として渡して AI に続きを、ということができるのですごくそれっぽくて良い。

ただ設定ファイルを HOME の下の dotfile に置く、というのがハードコードされていて、Google か、となってしまったんだけど、今や claude があればこんなのはなんてことないので、fork して XDG に合わせて保存するように改造したバイナリを使うようにしてしまった。便利。

で、これだけだと diff view でも大体同じなんだけど、自分のワークフローを以下のようにちょっと工夫した。

  • AI に最初の指示を与えてからとりあえず、テストが通った、要求を満たした、というレベルまでは auto でコミット込みで開発させる
  • GitHub に push して CI を回す
  • 直後に background で crit を起動して人間レビュー
  • 並行して agy による Gemini Pro レビューと subagent の claude でレビュー
  • crit でコメントを投稿し、agy/claude subagent のレビューが揃ったら付き合わせて評価
  • 内容を見て、対応してとか、無視していいよ、とか決めてから再度要件を満たすまで開発させる
  • できたら CI を回すのに pushして、レビュー...というようにループ開始

感心したのが、crit この辺をいい感じにやるっぽく、2周目をやると Round 2 として処理を始めて、1回目のコメントや claude はこう対応した、とかそういうアノテーションも残してくれるのがなんかすごいな、ってなった。

自分の OSS 活動はチーム開発、って感じではないのでひたすら個人のやる気と AI の assist で頑張る!って感じだから回るのかもしれないけど、これはだいぶ理想形になってきた気がする。

疲れたので東京都美術館へ

Agentic Coding でいろいろやり出して3ヶ月、朝から夜までずーっと何かしらの問題やら要望を claude と壁打ちなりコード書かせて解決するという日々で金曜には疲れちゃった、という感じなのでこの日も夕方の前に雨は降っているけど歩いて東京都美術館へ。

企画展はもう見た後なのでいいのだけど、公募のグループ展が来週には終わるということなので駆け込みで見てきた。

東京都美術館の企画展じゃない方の展示は割と好みのものが多くてぱっと見だけだとなんだかよくわからない、というのをブラブラ眺めるのが疲れた時にちょうどいい。

ザーッと見た後にレストランに行ってパフェを食べて一休み。平日の夕方、シニアの人々の談話場所になっていて、これはこれで文化施設としてはいいのだろうけど、ちょっと休みたいな、って時だとややうるさくもあり、相対的に静かな席にして、ってのを次回からは要望しようと思う。

東京都美術館の後は上野駅に行って、台風に備えた買い物へ。上野駅、リニューアルが終わったとのことだったけどザーッと店を眺めてもイマイチ、って感じで2周歩いてしょうがないからこれ買っとくか、って感じだった。帰り道、結構雨が強くなってきて家についたところにはビショビショとまではいかなくても濡れてしまった。

食べ物はいろいろ買っておいたので週末は引きこもり予定。


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

アオイホノオのドラマをもう一度見た

U-Next の NHK オンデマンドアドオンの一覧を見ていたら、アオイホノオが配信されているのを知ってもう一度一気見してしまった。

原作の漫画も全巻持っていて、ドラマの方も全話見ていたんだけど、ドラマが12年前、というのに「マジで...」となってしまった。あと内容的に、ガイアックスなどのゴタゴタもあり、今新たに公開みたいな感じだと多分難しいのだろうなあ...とか感じてしまった。

内容としては、「漫画家になれなかった時のことを考えているやつはダメ」「やらなあかん!」みたいなパワーワードを見ると、ちょっとだけやる気が出てきたのでいい経験だった。続編あればいいなあ、とか当時は思っていた気がするけど、このあとは割とグダグダが続くので、ちょうどいい終わり方ではないかな、とは思った。

syck 1.6.0 を出した

syck が 4.1.0-dev でビルドできないというのを見つけて、claude にぶん投げてビルドできるようにしてから、積み上がっている pull request や issue も投げては理解して、「こう直しておいて」みたいな感じでバシバシ閉じたやつで 1.6.0 としてリリースしておいた。

https://github.com/ruby/syck/releases/tag/v1.6.0

Ruby 3.3 との組み合わせで結構な頻度で SEGV が起きる、みたいなんだけど手元だと結構な頻度で回しても発生しなかったんだよなあ。もし本気で困ってる人がいたら教えてください。直すかもしれません。

RubyGems のガイドのデザインリニューアル

rubygems.org のデザインリニューアルが再開していて、 https://guides.rubygems.org/ にも pull request がきたのでマージしてデプロイしておいた。

https://github.com/rubygems/guides/pull/470

で、この前段階として、guides の github-pages は昔のブランチを指定したら内部で何かが動いて github-pages が作成される、という legacy ビルダーのままだったので、まずは github actions を使った方に migrate というのをやっていたのだった。

https://github.com/rubygems/guides/pull/474

もうちょい記述内容の重複とか、流れに沿って読んで意味のある構造などにしたいのだけど、それはまた今度。


2026/06/24 (水) [長年日記]

RubyGems/Bundler 4.0.15 リリース

2週間ぶりの定期リリース。今回のリリースでは、-j をつけたときにビルドジョブを make jobserver という仕組みで賢く振り分けたり、Fable 5 にやらせたメモリ削減を入れたり、cooldown や plugin の渋いバグを直したりとまあまあなボリュームを入れている。

https://blog.rubygems.org/2026/06/24/4.0.15-released.html

ついでに、コンフリクトをいい感じに直すのを claude に仕込みつつあるので、rb_sys のバージョン更新など、今までならコンフリクト解消だる、でやめていたのをウリャっと進めてしまった。

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

あと、メンテナンスブランチへ auto pick するにはコードベースが違いすぎるので、個別に pull req を用意してマージしたやつが changelog に出てこなかったり、手元の branch が remote origin と差があるときに pick の対象とならなかったり、みたいなケースも claude に「直して」とバンバンぶん投げて直してもらった。

git rerere を知った

で、RubyGems のリリースは自動化スクリプトによる auto pick を駆使しているんだけど、2-3回は素振りをしてコンフリクトの傾向を把握してから、本番リリース、としていて素振りで修正したコンフリクトが2-3回目の試行では自動で直っていてなんで?と思ったらこれは git rerere という機能だった。

名前だけは知っていたけど、何かはよくわかっておらず、おすすめ設定として有効にしていたので適用されていた、ということっぽい。これは、コンフリクトの修正を間違えてやった場合もそのまま間違えたまま適用、を繰り返すのでだるい、となったので claude に「なんで間違えた修正が繰り返し入るんですか?」と聞いたら、rerere や、forgot を使って消すことができます、というのも教えてくれて勉強になった。

claude を使うとき、あまり丁寧に背景とか説明しないで、やりたいことだけをすごい雑に聞く、というのに慣れてきた気がする。

ruby/rubygems の bundler をやっとフラットレイアウトにした

rubygems では 10 年くらいに渡って、トップディレクトリに bundler というディレクトリを入れたままリポジトリはモノレポだけど、ただコードが同じ箇所にあるだけ、CI には便利、一緒に直すときも便利、という物理的にしか意味がなく、コードの共有化、とか結合レベルの上げ下げ、みたいなことは何もできない状態が続いていたのだけど、AI パワーでやっと lib の下にフラットに配置してしまった。

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

とはいえ、これをベースに重複している vendor コードの共通化、モンキーパッチしているコードの共通化、なども含めた大きめの計画を丸2日くらいかけて、日本語であーでもない、こーでもない、というのを考えてから「で、これ作れるんですか?」「作れます」まで行けたので進めたのだった。

https://github.com/ruby/rubygems/issues/9236#issuecomment-4748470107

実際にやってみると、手元だけでは実行できないケースで CI が落ちたものの、ひたすら claude に直させたら割とあっさり終わったので 4.0.15 のリリース後にさくっとマージしてしまった。

なんか、bundler 側に lib/rubygems/* というコードを放り込んで、ロード時に二重ロードしない、というガードを入れたら、このまままずはランタイムベースの統合を進めて行ける気がしてきたなあ。頑張ろう。