世界を動かす技術を、日本語で。

クロードはrsyncのバグを増やしたのか?

概要

  • 本レポートは AI(Claude)による支援 の影響を客観的に検証した分析結果
  • 指標・手法・データソース は筆者と統計学修士の妻が選定
  • データ収集・分析スクリプト はAIで作成、数値の整合性は自動化で担保
  • rsyncプロジェクトでのClaude利用 を巡る議論・炎上経緯を整理
  • バグ傾向分析の結果、AI導入後の品質低下は統計的に認められず

AI支援利用の説明とレポート作成経緯

  • 指標・手法・データソース は筆者と妻(Penn State大学統計学修士)が厳選
  • 妻の助言で 単純なバグ件数比較や線形回帰 はノイズが多く不適切と判断
  • リリースごとのバグ分布に基づき、AI導入後のリリースが過去分布と比べ異常かを検証
  • データ収集・集計・分析スクリプトやHTML生成 はGLM 5.1で作成
  • 数値・統計・グラフは Pythonスクリプトによる自動テンプレート化 で一貫性確保
  • プローズ(文章)は最終的に筆者自身が全面書き直し
  • GitHubリポジトリ でパイプライン全体を公開、再現性・透明性を確保

rsync炎上の経緯

  • 2026年5月、 rsyncへのClaudeコミット導入後にバグが増えた との疑惑がMastodonで拡散
  • 根拠のない批判や誹謗中傷 がGitHub issueやHacker Newsなどで急拡大
  • 技術的な議論や根拠提示はほぼなく、感情的な反応が大半
  • 一部で バグ件数推移の客観的分析 を求める声も出現
  • 本分析は 「AI導入で本当に品質が落ちたのか」 をデータで検証

分析サマリー

  • 36リリース分のバグデータ (v2.4.6~v3.4.3)を対象
  • Claudeコミット含むリリースは2件 :v3.4.2(9件、0.00 sev/10c)、v3.4.3(28件、3.29 sev/10c)
  • 両リリースは 四分位範囲(IQR)内外に分布するが、どちらも外れ値ではない
  • Permutation testのp値=46% :「任意の2リリースを選んで同等以上のバグ率になる確率」
  • Fisher's exact testのp値=74% :「Claudeリリースが有意にバグ多発とは言えない」
  • 歴史的平均バグ率はClaudeリリースの1.8倍 (2.95 vs 1.65 sev/10c)
  • v3.4.1 (Claude未使用、59バグ/9コミット)は外れ値だが基準分布内

バグ指標・集計方法

  • 指標は「重み付きバグ数/10コミット(sev/10c)」
    • 各バグは 0~100の重み(Severity) でスコア化
    • sev/10c =(Severity合計 ÷ コミット数)×10
  • コミットのリリース割当
    • デフォルトブランチの全コミットを 時系列で並べ、各タグ間でリリース範囲を定義
    • プレリリースは最終リリースに吸収
  • バグの収集元
    • GitHub issue、Bugzilla、メーリングリスト
    • GitHub・MLは直前リリースに割当/Bugzillaは「Version」フィールドで割当
  • Severityスコアリング
    • Qwen 3 35B(LLM) を信頼性エンジニアとしてプロンプト
    • スコア範囲:0(機能要望)~100(深刻バグ)
    • 温度0で一貫性確保、JSON出力のみ
    • スコア0(要望・スパム等)はデフォルトで除外

結論

  • AI(Claude)導入後のrsyncリリースでバグが有意に増えた事実は統計的に確認できない
  • 感情的な批判が先行しやすいが、実際の品質低下はデータでは裏付けられず
  • 分析手法・データ・再現性をすべて公開 し、客観的検証が可能な状態
  • 今後も議論にはデータと透明性が重要

Hackerたちの意見

でも、批評家の非難はストレートだよね。「クロードは状況を悪化させている。」って。ストレートな手法が一番公平な反応だと思う。だから批判がひどかったからって、悪い指標を使うのが正当化されるわけじゃないよね?

それが言いたいわけじゃないんだ。僕が言いたいのは、もし批判がリリースごとのバグ数やクロードによるコミット数みたいな広範な指標を指しているなら、まさにその点を見ていくのが正しいってこと。

AIと興味は専門知識じゃないよね。HNに来るのは、すごく細かい情報や、素晴らしいダジャレがあるからだよ。

じゃあ、どんなのがいいと思う?

この分析は単一の指標を使っている:10コミットごとのバグ数(バグ/10c)。コミットごとのバグ数を指標にすると、セキュリティの深刻度やユーザーへの影響が曖昧になっちゃう。この枠組みでは、誤ラベルのボタンとアプリ全体のクラッシュが同じ重みを持つことになる。

すべての怒りの投稿の中で、深刻度の分析はなかった。押し出されていた唯一のポイントは「LLMの使用がバグを増やす」ってこと。著者はそれが彼らの言っていることだと明言している(ストレートな非難 -> ストレートな反応)。

じゃあ、バグが増えたって証明してみてよ。なんで根拠のない主張がされて、急にプロジェクトのメンテナーがそれを疑いなく証明しなきゃいけないの?主張している人がそれを証明するべきだと思う。

個人的には「コミットごとのバグ数」ってもっとひどいと思う。だって、君が言ったことに加えて、安定してたプロジェクトのコミット活動が急増してるのを隠しちゃうからね。これがあれば、rsyncの現状を大したことじゃないように見せかけるのにぴったりの指標だよ。 [0] https://github.com/RsyncProject/rsync/graphs/commit-activity

これを解決したよ。新しいバージョンは、もうすぐGH Pagesで公開される予定で、各バグに重みを付けるためのかなり良い方法論を使ってると思う。0.0から1.0に正規化して、それを合計して、総重み付きバグとして扱って、その基に分析を行う感じ。分析自体は特に変わらなかったよ。

コミットの複雑さ、セキュリティの強度、バグの深刻度を考慮していない。1行のタイプミス修正とCVEパッチの区別もつかない。これはストレートな手法だ。でも批評家の非難もストレートだよね。「クロードは状況を悪化させている。」って。ストレートな手法が一番公平な反応だと思う。もし公平って言うのが、この分析と反応が十分だって意味なら、申し訳ないけど同意できない。ユーザーの視点から見てバグの性質が悪化しているかどうかを理解する必要があるよね。たとえ率が変わらなくても、結果としてソフトウェアの品質が低下していると感じるなら、特にプロジェクトのメンテナーだったらそれは悪化していると考えるよ。それを完全に無視するつもりはないけど、一般的には定量的な分析だけではこの種の質問に完全に答えるには不十分だと思う。

でも、それは公平だよ。ここまでのところ、誰もコードの分析をして「Xの深刻度のリグレッションがY件見つかった」と言ったのを見たことがない。みんなが言っているのは「LLMのせいでバグが増えた」ってことだけ。この分析は、自分で確認できるけど、「バグの数はLLMがあってもかなり平均的だよ」って言ってる。もしもっとニュアンスのある分析が欲しいなら、自分でやって結果を共有してもいいよ。

証拠なしに主張されることは、証拠なしに却下できる。これは、主張をするために使われたものよりも、より厳密な証拠だよ。俺にはそれで十分だ。もし誰かが元の主張をより良い証拠で裏付けるために実際に作業をしたいなら、素晴らしいことだと思う。ぜひ見てみたいね。それまでは、この問題について心配しないつもり。

わかった、みんなに言っておきたいことがある:数字やレポートカードはスクリプトでテンプレート化されてるんだ。幻覚の話は無意味だよ。 https://github.com/alexispurslane/rsync-analysis/blob/main/s...

これに怒ってる人たちには残念だけど、rsyncのメンテナーに圧力をかけても、結局は他の人がAIの使用を責任を持って開示するのをためらわせるだけだと思うよ。みんな、ドラマを避けるためにコミットのClaudeのクレジットを外すようになるだけだよ。

オープンソースのメンテナーがLLMの使用を求め始めたら、人々がどうなるか見るのが面白いと思う。コミュニティがオープンソースのメンテナーに使うツールについて圧力をかけようとするのは本当に失礼だよね。逆に行こうよ。「ごめん、このPRはLLMを使ってないから閉じるね。」

それって悪いことなの?Anthropicのマーケティング部門から見ればそうかもしれないけど、エージェントが開発者のツールベルトの一種に過ぎないなら、クレジットをつけるのはちょっと変な感じだよね。結局、コミットの責任は開発者にあるんだから。

みんな、ドラマを避けるためにコミットのClaudeのクレジットを外すようになるだけだよ。人々はドラマに関係なくこれをやるべきだよ。兆ドル企業に無料で広告を出す理由なんてないから。生成されたトレーラーは、第三者プロジェクトに貢献する場合にのみ関連があるから、その場合は開示が礼儀だよ。

AIの使用開示については全く気にしないよ。人間が作ったコードがAIが作ったコードより必ずしも良いとは思わないし、知ってる人が書いたものでない限りね。結局、コミットしてプッシュするコードには責任を持つべきだし、これは変わらないよ。手で書かれたコードでも、猫がキーボードの上を歩いたコードでも、AIが書いたコードでも、俺には関係ない。プロジェクトのコード品質は様々な理由で低下することがあるから、AIが作ったかどうかにこだわるのは生産的じゃないと思う。それはただの気を散らす要因だよ。もし誰かがAIを批判するための口実を探していて、別の人がAIを擁護しようとしているなら、どうぞご自由に。でも、それがプロジェクトのコード品質を評価する方法にはならないよね。

コミットはツールの帰属を示す場所じゃないと思うんだ。変更内容を知りたいだけで、ツールの選択にはあまり興味ないよ(関連があればPRに書いておいてほしい)。例えば「ネオビムでマックブックで書いた」とかも全く関係ないしね。

この件に関しては特に利害関係はないけど、ちょっと怪しい点がいくつかあるね。 - 最も多くのバグがクレジットされたリリースは、Claudeが共同執筆したコミットの最初のリリースの「直前」のリリースなんだよね。未クレジットのLLMがこのリリースに入ってる可能性はないのかな? - リリースのクレジット方法はあまり良くないよ。マイナーアップデートで導入されたバグを、そのマイナー版の最も長く生き残ったパッチリリースに帰属させる傾向があるからね。3.4.1がたくさんのバグを導入したとは思えないけど、3.4.0の翌日にリリースされたから、そのリリースで導入されたバグが3.4.1に帰属しちゃうんだよね。 - それに、最近のリリースはバグが報告される時間が少ないから、最近のリリースがバグが少ないって評価されるバイアスがあるかも。

君の最初と二番目のポイントは矛盾してるように見えるよ。もし3.4.1のバグが全部3.4.0に帰属するなら、未クレジットのLLMコミットがプロジェクトにコミットされていたタイミングがさらに遅くなることになるから、君の主張はますますおかしくなるよ。それに、LLMコミットが以前のリリースに秘密裏に追加されていたという証拠は全くないし、そのせいでバグの数が多いなんてこともない。バグの数が多いことがAIの関与を示すなんて、ただの循環論法だよ。君は自分の主張を守るために、空想の仮説を作り上げてるだけだよ。君の三番目のポイントについては、それは妥当だけど、どれくらいの時間がバグを見つけるのにかかるか、各バージョンのリリースサイクルがどれくらい進んでいるかの分析をしたから、必要ならそれを出せるよ。

LLMの使い方はいろいろあって、手を動かしてローカルで変更することから、完全にお任せすることまであるよね。LLMが生成したコードはたくさん見たけど、コミットメッセージには共著者が付いてないことが多い。これは、誰かがClaudeやCodexを介してコードベースにアクセスしているときだけに見られる現象で、そういうコミットはだいたい冗長だけど、実際にはコードの変更をまとめてるだけで、理由は言わないんだよね。一方で、開発者がClaudeをツールとして使っているのも見たことがある。VSCodeを開いて、Claudeのターミナルウィンドウを使って行ったり来たりしながら、正しいコードを書くようにして、細かい部分はClaudeに任せてる感じ。だから、コードの作者が最初は小さく始めて、時間が経つにつれて成長したのかもね。

一番驚くべきエラーから始めよう - Claudeの統計はたった2つのデータポイントから取られている。

この調査について批判するつもりはないよ。すごく時間がかかっただろうし、忍耐も必要だったはず。素晴らしい仕事だと思う!本格的な研究をいくつかのリポジトリで行うのは、学術界のどこかのグループに任せるべきだね。LLMがソフトウェア開発をどう変えたかについて学ぶことはたくさんあると思うし、最もクリーンな分離は、リポジトリが「LLMは関与していません」と宣言するか、逆に誇らしげにそうでないか、あるいは中立的かで判断することかもしれない。バグだけが興味のある変数じゃないし、ここで話してるうちに誰かがすでにこれをやってるんじゃないかな。