ChatGPTを使った開発の“落とし穴”(実務メモ)
便利だけど“そのまま使う”と事故につながる。
- 機密・著作権の二次利用リスク
- 指示どおりにしか動かない仕様そのまま問題
- 使い方しだいで若手の学習が停滞
を中心に、実例と対策をまとめました。
はじめに
業務でChatGPTを部分的に使いながら、最初は「難しいロジックも一瞬で作れる便利ツール」という印象でした。ところが運用を重ねるほど、見過ごしがちなデメリットが見えてきます。本稿は自分への備忘と、同じ悩みを持つ方の参考用に、注意点を整理したものです。
1. 二次利用(データ流出・権利)リスク
何が起きる?
- 機密コードや仕様書をそのまま貼ると、外部サービス側で保存・学習・再利用される可能性があります(設定や契約形態による)。
- サードパーティのライセンス断片を無自覚に混入させる危険も。
現場での対策
- 企業向け/隔離環境(例:Azure OpenAI、社内プロキシ)で利用し、学習に使われない設定を徹底。
- 入力前に機密マスキング(顧客名・内部ID・鍵・固有ロジックをダミー化)。
- 生成物にはライセンス・セキュリティ・依存関係の自動チェック(SCA/秘密情報検出/コンプライアンスLint)をCIに組み込み。
- 提案コードは必ずリポジトリに手で取り込み、著作権表示を確認。
2. 「プロンプトどおりのコード」がそのまま出る問題
何が起きる?
AIは与えた要件を表面どおりに満たすコードを返すのが得意。
ただし、境界値・例外系・性能・可観測性など“設計の奥行き”は、書かなければ省略されがち。
例:
自動車ナンバー「足立999あ9999」を
「足立」「999」「あ」「9999」に分割したい
→ 指示どおりの正規表現は作れるが、
「足立999あ99998」のような不正/想定外入力で桁落ち・誤判定が発生しうる。
現場での対策(プロンプトの質を上げる)
-
非機能要件を明記:
- 「不正入力・欠損・全半角混在・最大/最小桁・性能1ms/件・ログ/メトリクス必須・i18n考慮」
-
テスト駆動の指示:
- 「正常系/境界値/異常系/ランダム/ファジングを網羅するテストを先に生成してから実装して」
-
入出力で契約:
- 「契約(Contract)を定義→例外・戻り値・エラーコード表を作成→それに準拠」
-
レビュー観点まで要求:
- 「脆弱性と保守性(命名・責務分割)についてレビューコメントを出して」
3. 若手が“伸びにくくなる”問題
何が起きる?
AIに任せるほど、背景理解(設計意図・データ構造・アーキ)を飛ばしがち。
「JUnitでカバレッジ100%のテスト」は生成しやすい一方、境界値・条件網羅・異常系が薄い形骸化テストになりがちです。
育成を止めない運用
-
AI前提の学習タスクを設計:
- 自分で方針メモ(前提・制約・代替案)→
- AIでドラフト生成→
- 差分レビューで“なぜそうなるか”を言語化。
-
テストの品質基準を明文化:
- 命令網羅/判定条件網羅(MC/DCまで必要なら明記)
- 「不正入力リスト」「境界値表」「シャドーデータ」必須。
-
リファクタ課題をあえて残す:
- 責務分割・命名・例外設計などをレビューで指摘→修正タスク化。
-
観点のテスト:
- ログ/トレースの可観測性をテストで検証する習慣を付ける。
すぐ使える“良いプロンプト”雛形
次の仕様で実装ドラフトとテストを生成してください。
- 目的:◯◯(ドメイン背景と制約を書く)
- 入力:例×10(正常/境界/異常、全半角・空・長文・想定外を含む)
- 出力:契約(戻り値/例外/エラーコード/ログ方針)
- 非機能:性能上限、スレッド安全性、i18n、監視(ログ/メトリクス/トレース)
- テスト:正常/境界/異常/プロパティベース/ファジングを網羅。MC/DC準拠の観点も列挙
- セキュリティ:入力検証、ReDoS、インジェクション対策をレビューコメント付きで
最後に「見落としがちなリスク」と「追加で聞くべき質問」を箇条書きで出力
チーム運用ガイド(チェックリスト)
- 取り扱いデータの分類と持ち込みルール(貼付OK/NGの線引き)
- 社内経由の安全なエンドポイントを使用(監査ログ有り)
- 生成物は必ず人間レビュー+CIで静的解析/秘密情報検出
- ライセンス/著作権の確認フロー
- テスト品質基準(境界・条件網羅・異常系)を明文化
- 生成コードの責務分割/命名/ログの最低基準
- プロンプトのテンプレとアンチパターン集
- 若手向けに**“AIなしでやる回”と“AI補助回”**を計画的に混在
まとめ:依存ではなく拡張として使う
AIは実装速度や探索を大きく伸ばす一方、
“設計・検証・責任”まで肩代わりしてはくれません。
- 機密は守る(環境・運用で担保)
- 仕様は深く書く(非機能・テストまで)
- 学習は止めない(レビュー設計と基準)
この3点を押さえれば、事故を減らしながら生産性を上げる運用が可能になると思います。
皆さんの現場での工夫や失敗談も、ぜひ教えてください。