エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【翻訳+意訳・要約】静かに進行するAIコーディング運ゲー化の恐怖

※本記事は、ChatGPT/Gemini/perplexityによる意訳+翻訳、情報ソースを活用し、レイアウト調整したものです。
※元記事を見て、内容がズレていないか査読するようにしています。 ※感想は、オリジナルです。

原文

静かに進行するAIコーディング運ゲー化の恐怖

意訳+要約

AIコーディングの進化は、開発現場に革命をもたらしています。しかし、その裏側には見過ごせない課題も潜んでいます。
AIを使ったコーディングが「運ゲー」化するリスクです。バイブコーディング(自然言語でAIにコード生成を指示する手法)は一見便利ですが、その依存がジュニアエンジニアの成長を阻害し、組織全体の力を弱める可能性があります。

AIに頼った結果発生しうる問題

  • ゴールがあいまいなままAIに頼るため、何度も同じリセマラ(試行錯誤のやり直し)を繰り返してしまう。
  • エラーの理由を自分で考えず、そのままAIに丸投げする。
  • 生成されたコードをただ使って、深く理解しない。

発生しうる弊害

  • 技術的負債の増大や、設計根拠が説明できない状態が増える。
  • 障害発生時に原因究明や対応に時間がかかる。
  • 長期的には内製能力が低下し、外部パートナーに頼るしかなくなる。

対策方法

ジュニアエンジニア

  • AIがいるから基礎は不要という発想は捨て、アルゴリズムやセキュリティなどの地味な基礎力を磨く。
  • 生成されたコードを一行ごとに読み、意味や順序を自分で考える習慣をつける。
  • AIには「依存」するのではなく、「相談」相手としてリスクや他の方法も問いかけてみる。

ミドル・シニアエンジニア

  • 「なぜそうなるのか」を考える時間を持つ。
  • コードレビューでは「なぜこの実装なのか?」を必ず問う。
  • ペアプログラミングで考える習慣を身に付けさせる。
  • AIを効率よく使うために基礎が重要であることを理解させる。

組織として意識すべきこと

  • AIツールの利用状況を定期的に分析し、依存度を可視化する。
  • プロンプトレビューを開発フローに組み込み、より良い使い方や事例を共有する。
  • コード生成だけでなく、学習支援もできるエージェントや仕組みを構築する。

検証

AIコーディングが「運ゲー」になりやすい主な原因

1. 出力のランダム性・再現性のなさ

AIによるコード生成は、確率的な言語モデルに基づいているため、同じ入力でも異なるコードが出力されることがあります。これはAIの「ランダムな応答生成」や、その時点でのモデルや設定に依存するため、意図した通りの出力にならない、つまり「当たり外れ」が大きくなります。

2. バグやセキュリティリスクの混入

AIはしばしばバグや脆弱性を含むコードを生成します。見た目はまともでも動かすと意図しない挙動をしたり、気づきにくいミスやセキュリティホールが混じるため、テスト・レビューしないと「当たりコード」に出会うことが運任せになる危険性があります。

3. 訓練データによる偏り・ノイズ

AIは公開されている様々な品質のコードに基づいて学習していますが、中には悪い実装例や古い情報も含まれています。そのため、生成されるコードの品質にもばらつきが生まれ、「良いコードが出てくるか」は運要素を持ちやすいです。

4. モデルのアップデートや仕様変更

AIツールの内部実装やフィルター、そしてデータベースのアップデートで、昨日まで使えたpromptが突然動かなくなったり、出力傾向が大きく変わることがあります。これも開発者のコントロール外なので「運ゲー」になりがちです。

5. ユーザー側の過信・レビュー不足

AIの出したコードを「正しいはず」と思い込みがちですが、実際には人間の慎重なチェックや補正が不可欠です。これを怠ると、「動くコード」が得られるかどうかは文字通り運任せになります。

参考リンク

The risks of generative AI coding in software development | SecureFlag

Generation Probabilities Are Not Enough: Uncertainty Highlighting in AI Code Completions

The Biggest Dangers of AI-Generated Code

AI-Assisted Coding: The Hype vs. The Hidden Risks - DEV Community

AI Code Generation: The Risks and Benefits of AI in Software

https://cset.georgetown.edu/wp-content/uploads/CSET-Cybersecurity-Risks-of-AI-Generated-Code.pdf

AI利用状況の把握方法

  • 利用ツールの棚卸しと可視化

    • 組織内で現在どんなAIツールやITツールが、どの業務や部門で、どのように使われているかをリストアップします。公式導入ツールだけでなく、現場独自で利用されている“シャドーIT”もヒアリングで把握することが重要です。
    • どのユーザーがどの権限で使っているかや、利用の技術スタック(サーバー、プログラミング言語APIなど)も確認します。
  • ログ・利用履歴の収集/分析

    • AIツール(例: ChatGPT)の利用履歴やチャットログを蓄積・分析します。これにより、利用者ごとの利用頻度や時間帯、部署ごとの利用割合、さらに悪用例のチェックや利用の具体内容まで把握できます。
    • 利用頻度の低下原因や、どのケースで特に有効に利用できているかなどもデータから分析可能です。
  • アンケートやヒアリング調査

    • 各部門や個人に対し、AIの活用状況・活用目的・課題・期待効果などをアンケートやヒアリングで調査し、主観的な現状も補足的に把握します。
  • プライバシー配慮の活用実態分析

    • 利用ログや会話内容を匿名化・集約し、個人情報や機密保持を配慮した形で全体傾向を把握します。AIによる自動クラスタリングなども活用できます。
  • 現状把握から活用推進へ

    • 得られた利用状況データを元に、効果の高い活用事例の横展開や、新たな課題抽出と改善施策につなげることが可能です。

参考リンク

AI導入のための「精密な現状把握」手法公開 - コーレ株式会社 | AIコネクティブカンパニー

ChatGPTとのチャット履歴の分析から社内の利用状況を把握する重要性と手法 | AITC | AI TRANSFORMATION CENTER

AIを活用したデータ分析のすすめ | 見える化エンジンラボ

感想+雑記

生成AIにもリスクがあるのは認識していた。
どうやって付き合っていくかは、レビューを入れるしかないなと、記事を読み、いろいろ調査して感じた。
また、定量的なコードの状態の計測、AIの利用状況の把握は、生成AIと付き合っていくうえで必須だと感じた。

生成AIを使った開発を行う上で、人間をどうやってかかわらせるかが、課題なように感じた。
結局、品質を担保するのは人なんだと思ってる。
生成AIに人をかかわらせるってなると、コードを読む力、プロジェクト構成の把握とかがいままで以上に重要になってくるのではないかと思ってる。

リセマラに例えるのは、秀逸だったなと読んでて感じた。
結局、生成AIは、確率論の話に行き着いてしまう。仕組み自体が確率を利用しているので、そうなるのはしょうがないかなと思う。
0%にするために対策しようにも、外的要因もあるのでコントロール難しいと思う。

記事を読んだり、資料漁ったりしたけど、やっぱり、優秀なエンジニアは能力が増すが、能力の低い人はコードが読めないとミスを連発する可能性が高く一概に生産性が高くなるとはいえないなって再認識した。
また、ある意味、毒に近いなって感じもする。
基礎が重要になってくるので、基礎をないがしろにしていると、最終的に技術力が衰えるって思った。特に企業は生成AIの導入に躍起になって、スキルアップをないがしろにしてると、最終的に技術力落ちるのでは?って感じてる。