※あらかじめご了承ください
記事中ではGemini CLIを「新人」、GitHub Copilotを「先輩」と表現していますが、これは役割をイメージしやすくするための擬人化であり、ツールの優劣をつける意図はありません。
はじめに
データウェアハウス開発部の大塚です。
最近はAIエージェントに助けられる場面も増えましたが、その裏でAIによる『やらかし』の事例も増えていると実感しています。
優秀なツールも、活かすも殺すも結局は使う側の指示次第だと痛感しました。
今回は、私の采配ミスにより設計書が跡形もなく破壊された事例を、自戒を込めてまとめました。
前提
弊社JMDCでは、エンジニアが最新技術を即座に試せるよう、ガイドラインに沿ったAI利用環境を整備しています。
GitHub Copilot:全開発者が利用可能Gemini / Vertex AI:全社員向けの検証環境を申請により利用可能Claude Code:導入前にセキュリティ・リスク管理のチェックを受けて一部チームで活用中
執筆時点の利用環境
GitHub Copilot(VS Code / Agent Auto Mode)- Model: Claude 4.5 Sonnet etc...
Gemini CLI(WSL Ubuntu 24.04 / Interactive Mode)- Model: Gemini 2.5 (Auto)
登場人物紹介
| 役割 | 対象ツール | 特徴 |
|---|---|---|
| 新人 | Gemini CLI (以下、Gemini) |
期待の大型新人。 馬力はあるが、文脈を読むのが少し苦手。 |
| 先輩 | GitHub Copilot (以下、Copilot) |
困ったときに頼れる。 効率を求めすぎて「以下略」を多用する、ちょっとドライな先輩。 |
| リーダー | 私 (筆者) |
「エージェントを組み合わせれば最強じゃん?」というノリで、ろくにルールも決めず丸投げをした結果... |
プロローグ:最強のチーム結成!?
月の中旬にも関わらずCopilotのプレミアムリクエストの利用率が90%を超えて焦り始めるリーダー。
「Geminiに基本作業をさせて、Copilotはレビューしてもらう程度に留めれば、精度も上がるし最強の開発チームができるのでは?」という浅はかな思いつきから物語は始まる。
1. 業務開始:すれ違う新人と先輩
リーダー: Geminiくん、◯◯に対して修正が必要か調査して、必要なら修正案とテスト方法をセットで設計書にまとめておいて。
Geminiくん: 任せてください!実装イメージは完璧です。早速作成しました!
初回版の設計書(テスト部分のサンプル)
create_mock_aws() {
local mock_dir="$1"
local test_case="$2"
mkdir -p "${mock_dir}"
cat > "${mock_dir}/aws" <<'MOCK_EOF'
#!/bin/bash
# Mock AWS CLI for testing
aws sso login
aws sts get-caller-identity
aws s3 ls s3://test-bucket
aws s3 copy
MOCK_EOF
export TEST_CASE="${test_case}"
}
リーダー:Copilotさん、レビューして設計書に追記しておいて。
Copilotさん: 修正箇所はここだけです。
Copilot先輩の指摘内容
# 修正前
cat > "${mock_dir}/aws" <<'MOCK_EOF'
#!/bin/bash
# ...
MOCK_EOF
export TEST_CASE="${test_case}"
# 修正後
cat > "${mock_dir}/aws" <<MOCK_EOF
#!/bin/bash
export TEST_CASE="${test_case}"
# ...
MOCK_EOF
リーダー :Geminiくん、追記したCopilotさんの指示をもとに反映しておいてね。
Geminiくん: 了解です!このまま置き換えればいいんですね。楽勝です!
Gemini新人の修正結果
create_mock_aws() {
local mock_dir="$1"
local test_case="$2"
mkdir -p "${mock_dir}"
cat > "${mock_dir}/aws" <<MOCK_EOF
#!/bin/bash
export TEST_CASE="${test_case}"
# Mock AWS CLI for testing
# ...
MOCK_EOF
リーダー: えっ、ちょっと待って、大事なロジックが消えてるんだけど!?
何が問題だったのか?
Copilotの善意: 変更のない箇所を# ...と省略して回答した。Geminiの直訳: それを「文脈上の省略」と判断できず、「既存コードを# ...というコメントに置換せよ」という指示だと解釈して実行。- 結果: 大切なロジックが上書きされ、コメント行だけが残る「ロジックの完全消失」が発生。
2. AIによるデグレードの連鎖
- 消えたコードを復元しようとするも、
Geminiは「Copilotの省略された指示」をもとに動くため、復元どころかさらにコードを削ぎ落としていく。 - 「もういいから修正前に戻して」と依頼したら、何度もリトライを繰り返したうえで
Geminiの限界を超えてフリーズ。 - 気づけば、元の設計書は原型をとどめず「
Copilotの修正指示の差分だけが反映された設計書」が出来上がり。
3. 結末:リーダーの土下座
結局、ボロボロになった設計書を抱えてCopilot先輩に泣きつくリーダー。
「最初から私に全部やらせればよかったじゃないですか」と言いながらも、元の設計書への復元と修正までやってくれたCopilot先輩。
当初の「プレミアムリクエスト節約」作戦は見事に失敗。 結局、余計な作業を増やしただけでした。
4. 後日談:さらなる落とし穴
設計書どおりに修正した結果、動作しないばかりか、そもそも修正自体が不要だったという結末に至りました。
まとめ(KPT振り返り)
| 項目 | 内容 | 詳細 |
|---|---|---|
| Keep | 2つのAIエージェントを かけ合わせて使うのはあり |
・1つが止まってもリカバリが効きやすい。 ・相互補完的な使い方ができる。 |
| Problem | 本編を参照 (設計書の消失・無限ループ) |
原因はgitコマンドに不慣れなリーダーが、コミットログが煩雑になり、管理不能な状態に陥ることを懸念したため。 |
| Try1 | バックアップと証跡目的でgit commitは頻繁に行う |
push前ならログ整理は容易なため、恐れずコミットすべき。▼活用コマンド例 ・ git rebase (履歴の書き換え)・ git reset (コミットの取り消し)・ git commit --amend (直前の修正) |
| Try2 | トークン節約よりも 「完全なコード出力」を優先させる |
・結果的にリトライの方がトークンを浪費する。 ・ InstructionsやPromptに明記する。▼Prompt例 ALWAYS output the full, self-contained code block. |
最後に
個人的には、生成AIの急激な進化により
「理解に時間がかかるから」と避けてきた技術にチャレンジできる
夢のような状況にあると思います。
今回のTryはあくまで「対症療法」であり、根本的な予防には限界があります。
そこで本質的な解決を目指し、現在は以下の技術的なアプローチに挑戦中です。
こちらの成果も記事にまとめたいと宣言しつつ、締めとさせていただきます。
最後までお読みいただきありがとうございました。
Instructions(GEMINI.md)に暴走を止め、漏れを防ぐルールを追加。- AIエージェントごとにルールを書くのは避けたいのでAI共通ルールの検討
- AI向けドキュメントは英語で書く
- トークン節約と精度向上のため
Agent Skillsなどを活用して習熟度が低い技術をAIにサポートしてもらい勉強に活用する※1- プロジェクトに合わせて調整でいいと思うが個人にあわせてカスタマイズできるのが理想
※1 補足:Agent Skillsの状況(2026.02現在)
本記事で利用したエージェントも相次いで同様の仕様(SKILL.mdなど)に対応を発表しています。
- GitHub Copilot
- GitHub Copilot now supports Agent Skills - GitHub Changelog
.claude/skillsディレクトリがある場合、Copilotもそれを自動的に読み込む相互運用性が追加されています。- Gemini CLI
- Creating Agent Skills | Gemini CLI Documentation
~/.gemini/skillsやプロジェクト直下の.gemini/skillsにSKILL.mdを配置することで、カスタムコマンドとして認識されるようになりました。
参考
コミット戦略と履歴の整理
- Git - 歴史の書き換え (Rewriting History) - git-scm.com
- 「試行錯誤は細かくコミットし、最後はrebase/squashで綺麗にする」という現代的なGitワークフローの基本が解説されています。
- Git - 歴史の書き換え (Rewriting History) - git-scm.com
AIエージェントの活用・プロンプト技術
- Youtube - Master GitHub Copilot Custom Instructions
- CopilotのカスタムインストラクションやAgent Skillsについて、Microsoft MVPが詳しく解説しています。
- Claude をスキルで拡張する (Agent Skills) - Claude Code Docs
- Claude Codeの公式ドキュメント。Agent Skillsの作成方法やベストプラクティスが網羅されています。
- Youtube - Master GitHub Copilot Custom Instructions
📢 求む!「最強のInstructions」
記事を読みながら「その程度の制御で消耗しているのか...」「うちならこう解決している」とうずうずしている熟練の使い手の方。
ぜひX(Twitter)等で、あなたが育てた「最強のInstructions / 運用ルール」を教えてください。 全力で参考にさせていただきます!
JMDCでは、ヘルスケア領域の課題解決に一緒に取り組んでいただける方を積極採用中です!フロントエンド / バックエンド / データベースエンジニア等、様々なポジションで募集をしています。詳細は下記の募集一覧からご確認ください。
まずはカジュアルにJMDCメンバーと話してみたい/経験が活かせそうなポジションの話を聞いてみたい等ございましたら、下記よりエントリーいただけますと幸いです。
★最新記事のお知らせはぜひ X(Twitter)、またはBlueskyをご覧ください!