前回の記事では、7 月に AI エージェントと書いた文章の 93.2% が、7 月 30 日の時点で残っていると書きました。同じ行を 2 か月後の 9 月 25 日に数え直すと、残っていたのは 57.4% でした。
数字は下がりましたが、見たときの感想は「ふーん」でした。8 月に英語版と日本語版を置くフォルダーを入れ替え、9 月には載せる項目を減らして本文を書き直しています。消えた行の多くは、そのときに書き直した部分だと思います。7 月の時点では必要だった文章が、いまは要らなくなっただけです。
残存率は、文章の出来よりも、書いてからどれだけ時間がたったかを表しているように思います。
7 月 20 日に書いた行は、6.4% しか残っていませんでした
数え方は前回と同じです。AI と書いたコミット(コミットメッセージの Co-Authored-By: 行に Claude が入っているもの)が .md ファイルに足した行のうち、いまのファイルに git blame を実行して、まだそのコミットの行として表示される行を「残っている」と数えます。git blame は、行ごとに、その行を書いたコミットを表示する Git のコマンドです。
前回測ったときのコミット(7 月 30 日の a256f7f)までに書いた行を、9 月 25 日のコミット(1961ecd)で数えました。左の日付は書いた日です。
$ python3 survival.py a256f7f 1961ecd
2026-07-16 追加 5849 残存 2712 46.4%
2026-07-17 追加 1886 残存 1366 72.4%
2026-07-19 追加 236 残存 102 43.2%
2026-07-20 追加 3903 残存 248 6.4%
2026-07-21 追加 1176 残存 1074 91.3%
2026-07-22 追加 863 残存 692 80.2%
2026-07-24 追加 239 残存 151 63.2%
2026-07-25 追加 1103 残存 1019 92.4%
2026-07-26 追加 2851 残存 2393 83.9%
2026-07-27 追加 2370 残存 2159 91.1%
2026-07-29 追加 1638 残存 863 52.7%
2026-07-30 追加 720 残存 324 45.0%
合計 追加 22834 残存 13103 57.4%
消えた 9731 行のうち 文面も残っていない 5949、空行 2705、文字のある行 831、記号だけの行 246
7 月 20 日に書いた行は、前回は 98.2% 残っていて、いまは 6.4% です。前回ひとつだけ 64.0% と低かった 7 月 24 日の行は、いまも 63.2% です。この日の設計文書は前回測る前にもう書き直していたので、そのあとは手が入らなかったのかもしれません。
git blame は、行を別のファイルへ移すと、移したコミットの行として表示します。日本語だけの行は、移動を探す -C オプションを付けても同じでした。そこで、消えたと数えた 9,731 行と同じ文が、いまのファイルのどこかにあるかも調べました。文字のある行で同じ文が見つかったのは 831 行で、これを全部残っている側に足しても 61.0% です。消えた行の大半は、移したのではなく、書き直すか削除していました。
自分のリポジトリで数える
数えるのに使ったのは survival.py です。数えたいリポジトリの中で実行します。リポジトリを読むだけで、何も変更しません。
python3 survival.py # HEAD までのコミットを、HEAD で数える
python3 survival.py a256f7f # a256f7f までのコミットを、その時点で数える
python3 survival.py a256f7f HEAD # 同じコミットを、いまの状態で数える
1 つ目の引数は、どのコミットまでに書いた行を数えるか、2 つ目はどの時点で測るかです。Claude 以外の AI と書いているなら、survival.py の中の "claude" をその名前に書き換えてください。.md 以外のファイルを数えるなら、".md" と "*.md" を書き換えます。
複数のモデルを比べるなら、同じ時期に書いた行を、同じ時点で測ってください。
結論
結局、この残存率は私には要らない数字でした。同じ行でも、7 月末に測れば 93.2%、9 月末なら 57.4% です。下がった理由は文章の良し悪しではなく、フォルダーの入れ替えや項目の削減でした。
コードでも同じことが起きるはずです。リファクタリングでモジュールを分ければ、コードは別のファイルへ移るか、書き直されます。仕様が変われば書き直し、使わなくなった機能は消します。時間がたつほど、残存率は AI の出力の良し悪しと関係のない変化でも下がり、数字だけではそれを見分けられません。VS Code の記事が編集 10 分後とコミットしたときに測っているのは、そうした変化が起きる前に、すぐ手で直されたかだけを見るためだと思います。同じ時点で複数のモデルを比べるなら使えますが、測り続けて追う数字ではありません。
残存率が高いから AI の書いたコードは良い、とは言えません。低いから悪い、とも言えません。1 つの数字で AI の出力の良し悪しを決めず、その数字が何を測っていて、何によって上下するのかを確かめてから使ってください。