前回の記事では、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 の出力の良し悪しを決めず、その数字が何を測っていて、何によって上下するのかを確かめてから使ってください。