00:00
よし、さっそく今回の資料を紐解いていきましょうか。
あの、ちょっと想像してみてほしいんですけど。
はい。
ある日、自宅の屋根裏部屋で、全く見覚えのない一枚の絵画を見つけるんです。
で、そこには間違いなく自分のサインが入っているのに、書いた記憶が一切ないっていう。
ああ、それはちょっと不気味ですね。
そうなんですよ。実はこれと全く同じことが、半年後のあなたのコードベースで起こるかもしれないんです。
なるほど。
何か謎のバグを見つけて、Gitブレイムを叩いたら、完全に自分の名前になっている。
でも実際に書いたのはAIエージェントで、あなたは数秒画面を見て、OKを押しただけみたいな。
まさに現代の開発現場が直面しているホラーですよね。
ええ。なので今回の深掘りでは、AIエージェントが書いたコードのコミット履歴に、一体誰の印が残るのかというテーマを扱います。
はい。今日はITエンジニアの非時速報と7つのAIツールの公式資料を元にしています。
半年後のあなたが、自分が書いた記憶のないバグの責任を負わずに済む方法を明らかにしていきましょう。
最初はすごくシンプルに考えていたんですよ。ツール側の設定ファイルで、AIが書きましたっていうフラグをオンにすれば解決するんじゃないのって。
そう、期待したいところですよね。でも現実はかなり混沌としているんです。
例えばコーデックスの場合だと、リポジトリの設定ファイルを完璧にしても、実は意味がないんですよ。
え、どういうことですか?
実はですね、チャットGPTのウェブ画面経由でログインしたセッションと、APIキーで直接実行したセッションとで、裏側のユーザーIDの紐付け方が変わるんです。
ああ、ログイン経路が違うだけで履歴の挙動が変わるんですか?
そうなんです。だから、同じ設定でも印がついたり消えたりしてしまうんですよね。
それはかなり厄介ですね。
ええ。さらに、クロードコードの古いバージョンだと、もっと致命的なバグがありました。
致命的ですか?
はい。開発者が印を消そうとして、設定ファイルにアトリビューションフォルスって書き込むと、なんと設定ファイル全体が読み飛ばされてしまうんです。
ちょっと待って、たった1行足しただけでですか?どうしてそんなことに?
これは、YAMLのパーサー、つまり設定を読み込む解析プログラムの使用の問題ですね。
ああ、なるほど。
想定外のブール値が入ると、スキーマ違反としてエラーを吐くんです。
それでパニックを起こして、他の権限設定まで全て破棄してしまう構造だったんですよ。
印を消そうとしたら、セキュリティ設定まで吹き飛ぶのは罠すぎますよね。
本当にそうですね。
でも、まあ少なくとも設定が存在するだけマシなのかもしれないなってちょっと思いました。
鋭いですね。実は今、最も恐ろしいのは設定すら存在しない沈黙のエージェントたちなんですよ。
沈黙のエージェント?
アンティグレーティブとか、マナス、ジェンスパークといったツール群ですね。
これらはメインブランチへの直接プッシュや書き込み権限を持っているにもかかわらず、公式資料には誰の名義でコミットされるのか一切記載がないんです。
03:07
つまり、ブラックボックス状態でリポジトリをいじり回されるわけですね?
その通りです。そしてさらに悪質なのが、ヘルメスというツールですね。
ヘルメス?それは何がまずいんですか?
これは単に名義が不明なだけじゃないんです。
コミットの直前にバックグラウンドでスクリプトを走らせて、あなたのローカルのGitコンフィグにある作者名とメールアドレスを勝手に書き換えてからプッシュするんですよ。
うわ、完全にハイジャックじゃないですか。鍵を渡したら勝手に自分の指紋を現場にベタベタ残されるようなものですよね。
まさにその表現がぴったりです。
でもそんな風に裏でこっそり偽装するくらいなら、逆に今からコミットするけどあなたの名前を使っていい?ってまっすぐ許可を取るツールはないんですか?
そこなんですよ。まさにオープンクローというツールがその逆転の発想を取り入れています。
ほう、逆転の発想。
はい。彼らのアプローチは機械が書いたという事実を記録することではないんです。
じゃあないとしたら何を記録するんですか?
そのセッションに同席した人間の共作者、つまりあなたの同意を都度記録する仕組みになっているんです。
なるほど。処理の度にあなたが責任を持つことに同意しますか?っていう身元確認をしてくるわけですね。
ええ。これは技術的な実装というより思想のパラダイムシフトと言えますね。
思想のシフトですか?
はい。自動化が進めば進むほど最終的に法や組織が求めるのは機械の実行ログではなくなるんです。
人間がそこに同席し、承認した事実になるというわけですね。
ああ。最初の屋根裏の絵画の例で言えば、AIが書きましたっていうサインを残すんじゃなくて、
私がAIと一緒に書くことに同意しましたっていう証明書を裏に貼るようなものですね。すごくしっくりきました。
分かりやすい例えですね。
じゃあ結局私たちは今日からどうやって身を守ればいいんでしょうか?
設定ファイルも信用できないし、裏で勝手にコンフィグを書き換えられるかもしれないとしたら。
履歴が取り返しのつかないほど汚染される前に、指紋確認のテストを必ず挟むことです。
指紋確認のテストですか?
本番環境に導入する前に、まずは使い捨てのテスト用リポジトリでAIに小さな変更をコミットさせてみるんです。
なるほど。まずは試すんですね。
はい。そしてGitロゴを叩いて、実際の作者情報を自分の目で確認してください。
公式のドキュメントを鵜呑みにせず、事実ベースで追跡の手がかりを確保するんです。
自分のサインが入った不気味な絵画を屋根裏に増やさないためにも、まずはテスト環境でAIの筆跡と挙動を確かめる。
これはあなたもすぐに実践できそうですね。
ぜひやっていただきたいです。ただ、この資料を読み込んでいて、ふともう一つの疑問が浮かびました。
何でしょうか?
もし数年後、AIがコードを書き、AIがコミットし、さらに別のAIがそのコードをレビューするようになったとき、
06:05
果たしてGitにおける作者、オーサーという概念自体が完全に消滅してしまうのではないでしょうか。
あなたはどう思いますか?