概要
https://speakerdeck.com/kishida/yapc-ai-and-programming
詳細内容
## AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
https://speakerdeck.com/kishida/yapc-ai-and-programming
**Original Title**: AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
岸田氏は、大規模言語モデルの仕組みと進化を解説し、AIの計算や学習の限界、コンテキスト処理の弱点を明確にした上で、非機能要件やプログラムの最適化において人間がプログラミング知識を学び続ける重要性を強調している。
**Content Type**: Opinion & Commentary
**Language**: ja
**Scores**: Signal:4/5 | Depth:4/5 | Unique:4/5 | Practical:4/5 | Anti-Hype:5/5
**Main Journal**: 84/100 | **Annex Potential**: 85/100 | **Overall**: 84/100
**Topics**: [[LLMの仕組みと進化, AIの限界と弱点, プログラミングの非機能要件, プログラムの最適化, 人間とAIの協働]]
本プレゼンテーションは、YAPC::Fukuoka 2025での登壇資料であり、AIの進化と限界、そしてプログラミングにおける人間の役割について深く考察している。
まず、LLMの基礎としてTransformerの仕組みと、GPT-3(スケーリング則)、GPT-3.5(RLHFとチャット対応)、GPT-4(MoE、Function Calling)、およびReasoningやAgentによる推論の並列化といったその進化を詳細に解説する。特に、AIの計算がアルゴリズムではなくヒューリスティックの積み重ねによって確率的に答えを導き出すこと、そして学習が「ユニットテストが書けるもの」において特に進みやすいという特性を指摘。これにより、答えが明確に定義できる問題ではAIが賢くなる一方で、ユーザビリティ、API設計、セキュリティ、メンテナンス性といった「ユニットテストが書きにくい非機能要件」はAIの苦手分野であると結論付けている。
次に、AIの主な弱点として「コンテキスト処理能力」と「知らないことが多い」点を挙げる。長大なコンテキストに対応できないこと(Attentionの計算量がO(n^2)であるため、長コンテキスト対応には限界がある)、そして「コンテキストの汚れ」に弱い(無関係な情報が混ざることで性能が劣化する)という問題点を指摘。さらに、AIはプログラムの動きを知らず、完成品しか見ていないため、プログラムの成長や大規模な構造を理解できないことも弱点としている。これは、ソースファイルや解説から学習するが、それらがどのように変化し、機能するかについては知識がないことを意味する。
こうしたAIの弱点を踏まえ、著者はプログラミングにおいて人間が学ぶべきことの重要性を強調する。プログラムの機能、性能、使いやすさ、安全性といった要件を満たし、機能の追加変更や破壊防止、変更の明確化を実現するために必要な言語機能(逐次実行、関数、構造体、抽象データ型、インタフェース、継承、メモリ管理、例外処理、並列処理)を概説。
最後に、プログラムの最適化について、処理の重複排除(値の使い回し、キャッシュ、スコープの最小化)、記述の重複排除(関数活用、多態活用)、変更発生源の集約(単一責任の原則)、依存の適正化といった原則を具体例を交えて説明。AIは機能実装は得意だが、非機能要件やプログラムの根本的な最適化には人間の深い洞察と知識が不可欠であると主張し、プログラマーがこれらの知識を学び続けることの重要性を強く訴えかけている。