2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChatGPTを使用した開発作業の危険性について

Last updated at Posted at 2025-11-04

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前提の学習タスクを設計

    1. 自分で方針メモ(前提・制約・代替案)→
    2. AIでドラフト生成→
    3. 差分レビューで“なぜそうなるか”を言語化。
  • テストの品質基準を明文化

    • 命令網羅/判定条件網羅(MC/DCまで必要なら明記)
    • 「不正入力リスト」「境界値表」「シャドーデータ」必須。
  • リファクタ課題をあえて残す

    • 責務分割・命名・例外設計などをレビューで指摘→修正タスク化
  • 観点のテスト

    • ログ/トレースの可観測性をテストで検証する習慣を付ける。

すぐ使える“良いプロンプト”雛形

次の仕様で実装ドラフトとテストを生成してください。
- 目的:◯◯(ドメイン背景と制約を書く)
- 入力:例×10(正常/境界/異常、全半角・空・長文・想定外を含む)
- 出力:契約(戻り値/例外/エラーコード/ログ方針)
- 非機能:性能上限、スレッド安全性、i18n、監視(ログ/メトリクス/トレース)
- テスト:正常/境界/異常/プロパティベース/ファジングを網羅。MC/DC準拠の観点も列挙
- セキュリティ:入力検証、ReDoS、インジェクション対策をレビューコメント付きで
最後に「見落としがちなリスク」と「追加で聞くべき質問」を箇条書きで出力

チーム運用ガイド(チェックリスト)

  • 取り扱いデータの分類持ち込みルール(貼付OK/NGの線引き)
  • 社内経由の安全なエンドポイントを使用(監査ログ有り)
  • 生成物は必ず人間レビュー+CIで静的解析/秘密情報検出
  • ライセンス/著作権の確認フロー
  • テスト品質基準(境界・条件網羅・異常系)を明文化
  • 生成コードの責務分割/命名/ログの最低基準
  • プロンプトのテンプレとアンチパターン集
  • 若手向けに**“AIなしでやる回”“AI補助回”**を計画的に混在

まとめ:依存ではなく拡張として使う

AIは実装速度探索を大きく伸ばす一方、
“設計・検証・責任”まで肩代わりしてはくれません。

  • 機密は守る(環境・運用で担保)
  • 仕様は深く書く(非機能・テストまで)
  • 学習は止めない(レビュー設計と基準)

この3点を押さえれば、事故を減らしながら生産性を上げる運用が可能になると思います。
皆さんの現場での工夫や失敗談も、ぜひ教えてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?