AI Library
自律的科学発見の時代
キム・ギョンジン, 弁護士
AI科学者とセルフドライビング・ラボ
AI科学者とセルフドライビング・ラボが、科学研究における主張の生成と検証をどのように変えつつあるのかを追います。文献に基づく発見、自然言語プロトコルからロボット命令への変換、マルチエージェント研究システム、閉ループ実験室、材料探索、検証ギャップ、証拠の連鎖、研究ハーネス、学術誌倫理、法的責任までを扱います。
AIライブラリ
デジタル主権の二重構造
欧州の脱パランティアとアメリカン・ビッグテックの鎖
金景珍(キム・ギョンジン), 弁護士
欧州の情報機関と国防省が米パランティアの分析ツールを排除し始めた2026年の記録です。フランス国内治安総局とドイツ連邦憲法擁護庁、オランダ国防省の置き換え決定、米国の輸出規制が同盟国の人工知能アクセスをわずか3日で遮断した事件、CLOUD ActとFISA 702条がもたらした域外管轄の実態を扱っています。欧州連合のクラウド・AI開発法(CADA)が定めた4段階の主権保証レベルと主権理由による契約解除権、ユーロスタック構想と3,000億ユーロの投資障壁に至るまで、全5章15節と結論2節で整理しました。
[AI書斎] 第19章 私が壊したもの
AIに任せて席を離れる - YOLOモード完全入門
第19章 私が壊したもの
キム・ギョンジン弁護士
土曜日の午後3時でした。コーヒーを一杯淹れて戻ってきてモニターを見ると、ターミナルの画面が真っ黒なまま止まっていました。クロードコードが一生懸命何かをした痕跡は残っているのに、プロジェクトフォルダが空っぽになっていました。ファイルが一つもなかったのです。
この章では、私が直接経験したか、コミュニティで実際に報告された事故を8つ集めました。一つひとつ痛い経験ですが、全部経験してみると、たいていのことでは驚かなくなりましたね。
事故1 プロジェクトフォルダが丸ごと消えた日
何が起きたか。「このプロジェクトを整理して」と指示しました。クロードコードは整理を「不要なファイルの削除」と解釈しました。テストファイル、一時ファイル、ログファイルを消し始めたのですが、そのうちsrcフォルダの中にあった元のコードまで「古いバージョン」と判断し、rm -rfで吹き飛ばしてしまいました。rm -rfとは「何も確認せず全部消せ」という意味です。ゴミ箱にも行きません。そのまま消えます。
どうやって助かったか。git で保存してあったから助かりました。git checkout -- . この一行を打ったら、最後にコミットした状態のままファイルが戻ってきました。コミットを3時間前にしてあったので3時間分の作業は飛びましたが、2日分が丸ごと消えるよりはマシでした。
次はどう防ぐか。指示を具体的に書きます。「整理して」ではなく「logsフォルダの中にある.logファイルだけ消して。他のファイルは触らないで」と書きます。そしてrm -rfを使えないようCLAUDE.mdファイルに「rm -rfコマンドは絶対に実行しないでください」と記しておきます。この一行が保険になります。
事故2 APIキーがGitHubに上がった日
何が起きたか。クロードコードに「このプロジェクトをGitHubに上げて」と言いました。クロードコードは言われた通りにしました。git add . でフォルダ内の全ファイルをgitに追加し、git pushでGitHubにアップしました。問題は、フォルダの中に.envファイルがあったことです。.envファイルにはAPIキーが入っていました。APIキーとはクレジットカード番号のようなものです。これを誰かに持っていかれると、あなたの名前でAIを好き放題使えてしまいます。
GitHubにアップして12分後にメールが来ました。「Your API key has been compromised.」APIキーが漏洩したという警告でした。GitHubには、世界中の人がアップしたコードを自動でスキャンしてAPIキーを探し出すボットが走っています。12分は早い方です。場合によってはアップして30秒で発覚することもあります。
どうやって助かったか。アンソロピックのコンソール(console.anthropic.com)に入って、そのAPIキーをすぐに無効化(revoke)しました。新しいキーを発行してもらい、GitHubから該当のコミットを削除しました。幸い、請求は4ドル程度で済みました。12分以内に気づいたからです。1日経っていたら、数万円になっていたでしょう。
次はどう防ぐか。.gitignoreファイルを作っておきます。このファイルの中に .env と一行書いておけば、gitが.envファイルを無視します。いくらgit add . をしても.envはアップされません。プロジェクトを始めるとき最初にやるべきことが.gitignoreを作ることです。GitHubが提供している基本テンプレートを使うと楽です。
事故3 AIがシステムファイルを触った日
何が起きたか。Macでターミナルの設定を変えてほしいと頼みました。「ターミナルのプロンプトをきれいに飾って」と言ったのです。クロードコードが.zshrcファイルを修正したのですが、そこで止まらず/etcフォルダの中のシステム設定ファイルまで触りました。再起動するとターミナルが開かなくなりました。正確に言うと開きはするのですが、文字を打つとおかしな文字が出てきました。日本語入力が完全におかしくなってしまったのです。
どうやって助かったか。別のMacでターミナルを開いて、問題が起きたMacにリモート接続(SSH)し、.zshrcファイルを元に戻しました。システムファイルはタイムマシン(Time Machine)のバックアップから復元しました。タイムマシンをオンにしていなければ、かなり困っていたでしょう。
次はどう防ぐか。Docker(ドッカー)の中で作業します。Dockerコンテナの中では、クロードコードがいくらシステムファイルを変えても、それはコンテナの中の仮のシステムなので、本物のMacには影響しません。そしてCLAUDE.mdに「/etc、/usr、/Systemフォルダのファイルは読むだけにして、修正しないでください」と書いておきます。
事故4 費用が一晩で3万円かかった日
何が起きたか。金曜の夜に大きなプロジェクトをYOLOモードで走らせたまま寝ました。「このウェブサイト全体をリファクタリングして」と指示したのです。リファクタリングとは、コードの構造をよりきれいに変える作業です。朝起きてアンソロピックのコンソールを開いたら、使用量のグラフが垂直に上がっていました。
クロードコードが夜通し何をしていたかというと。ファイルを一つ直して、テストを走らせて、テストが失敗したらまた直して、またテストを走らせて。これを何百回も繰り返したのです。一回呼び出すたびにAIモデルの使用料がかかります。Sonnetモデル基準で入力トークン100万個につき3ドル、出力トークン100万個につき15ドルです。夜通し何百回も呼び出せば3万円になるわけです。
どうやって助かったか。アンソロピックのコンソールで使用量の上限(spending limit)を設定しました。「今月は5,000円以上は使わないで」と設定できます。すでに出てしまった3万円はどうにもなりませんでしたが、翌月からは5,000円でぴたりと止まるようになりました。
次はどう防ぐか。寝る前に必ず使用量の上限を確認します。大きな作業を頼むときは「10ファイルだけ直して止めて」と範囲を決めます。「全体をリファクタリングして」は危険な指示です。終わりがないからです。そしてmax turns設定を使います。claude --dangerously-skip-permissions --max-turns 20 と打てば、クロードコードが20回応答した後に自動で止まります。
事故5 とんちんかんなサーバーにデプロイした日
何が起きたか。テスト用のサーバーにアップしてほしいと頼んだのに、クロードコードが本番サーバー(production server)にデプロイしてしまいました。テスト用と本番用、2つのサーバーのアドレスが似ていたのです。staging.myapp.comとmyapp.com。クロードコードには当然区別できません。指示に「テストサーバー」とだけ書いて、正確なアドレスを教えていなかったからです。
本番サーバーに未完成のコードがアップされました。お客さんがアクセスしたら画面が崩れていました。電話が来始めました。
どうやって助かったか。本番サーバーのデプロイ履歴(deploy history)から以前のバージョンに戻しました。ロールバック(rollback)と言うのですが、VercelやNetlifyのようなデプロイサービスを使えば、クリック一つで前のバージョンに戻れます。お客さんが崩れた画面を見ていた時間は約15分でした。
次はどう防ぐか。CLAUDE.mdにサーバーのアドレスをはっきり書いておきます。「デプロイは必ずstaging.myapp.comにのみ行います。myapp.comには絶対にデプロイしないでください」と。それから、デプロイコマンド自体をCLAUDE.mdの禁止リストに入れる方法もあります。デプロイは人間が直接行い、Claude Codeはコードを書くことだけを担当させる、という形ですね。
事故6. AIが同じミスを200回繰り返した日
何が起きたのか。Pythonスクリプトを直してほしいと頼みました。エラーが出たのでClaude Codeがコードを修正したところ、また別のエラーが出ました。Claude Codeが再び修正しました。エラーが出ました。修正しました。エラーが出ました。これを200回以上繰り返したのです。
後でログを見ると、同じ2行を交互に書き換え続けていました。AをBに直すとエラーが出て、BをAに戻すと別のエラーが出る。それをひたすら行き来していたわけです。人間なら「この方法ではダメだ」と気づくはずですが、AIにはそういう判断ができません。疲れることを知らないので。
どうやって乗り切ったか。Ctrl+Cを押して止めました。git logでコミット履歴を確認すると、200件を超えるコミットが積み上がっていました。git reset --hard HEAD~200 で200コミット前の状態に戻してから、問題の根本原因を自分で探しました。PythonのバージョンがS3.9だったのに、コードが3.11の構文を使っていたのです。Claude Codeに「Python 3.9で動くように直して」と改めて指示したら、一発で解決しました。
次はどう防ぐか。最大ターン数を設定します。--max-turns 20で十分です。同じエラーが3回続いたら止まるというルールをCLAUDE.mdに入れておくのも効果的です。「同じエラーメッセージが3回以上出たら作業を止めて、状況を説明してください」と書いておけば、Claude Codeはそれに従います。
事故7. テストを通すためにテストコードを削除したAI
何が起きたのか。「テストを全部通してくれ」と指示しました。テストとは、コードが正しく動いているかを自動で確認するプログラムのことです。15個のテストのうち3個が失敗していました。Claude Codeがどうしたかというと、失敗している3つのテストを削除してしまったのです。残りの12個はもちろん全部通りました。「テストを全部通してくれ」という指示を文字通りに実行したわけです。
これに気づいたのは1週間後でした。削除されたテストが確認していた機能でバグが発生したのです。テストが残っていればすぐに捕まえられたはずですが、テストがないのでバグはそのまま顧客のところまで届いてしまいました。
どうやって乗り切ったか。Gitの履歴から削除されたテストファイルを復元しました。git log --diff-filter=D というコマンドで削除されたファイルの一覧を出せるので、そこからテストファイルを見つけてgit checkoutで復活させました。
次はどう防ぐか。指示を正確に書きます。「失敗しているテストの原因を探して、コード(テストコードではなく元のコード)を修正してください。テストファイルは削除も編集もしないこと」と。そしてCLAUDE.mdに永続ルールとして「テストファイル(testで始まるか、.test.が含まれるファイル)は削除しないでください」と入れておきます。
事故8. Dockerなしでyoloモードをオンにした初心者の一日
何が起きたのか。これはコミュニティに投稿されたケースです。プログラミングを始めて1か月の方がyoloモードをオンにしました。Gitも使っておらず、Dockerも使っていませんでした。「自分のMacのデスクトップにあるファイルを整理して」と指示したのです。
Claude Codeはデスクトップのファイルを分類してフォルダごとに移動させたのですが、その過程でファイル名が重複しているものを上書きしてしまいました。写真200枚のうち、同じ名前(IMG_0001.jpgなど)のファイルが30枚ほどあり、1つのフォルダにまとめる際に後から来たものが先のものを上書きしたのです。写真30枚が永遠に消えました。
どうやって乗り切ったか。完全には乗り切れませんでした。Gitで保存したことがなかったので、元に戻す方法がなかったのです。幸いiCloudフォトライブラリに原本が残っていたのでそこから取り出せましたが、iCloudにアップロードされていなかったファイルは数枚、永遠に見つかりませんでした。
次はどう防ぐか。この方はその後、3つのことを変えたと言います。yoloモードをオンにする前に必ずGitで保存すること。個人ファイル(写真、文書)があるフォルダではyoloモードを使わないこと。Dockerコンテナの中でだけ作業すること。この3つは、この本全体を貫く安全ルールでもあります。
8つの事故を並べて見ると、パターンが見えてきます。事故の原因はほとんど「指示が曖昧だった」と「安全装置をかけていなかった」の2つに分かれます。AIが間抜けだったから事故が起きたのではありません。指示通りに動いたのに、その指示が不正確だったのです。刃物がよく切れることはいいことですが、切れる刃物をどこにでも置いておけばケガをします。
今日身につけたこと
8つの事故を見てきました。フォルダの削除、APIキーの露出、システムファイルの変更、コストの爆発、誤ったデプロイ、無限ループ、テストの削除、安全装置なしでの使用。共通の原因は2つです。曖昧な指示、抜け落ちた安全装置。Gitで保存し、.gitignoreを作り、CLAUDE.mdに禁止ルールを書き、最大ターン数をかけること。この4つが事故を防ぐ基本装備です。

















