結論から言うと、設計知識の重要性はAI時代になって「むしろ高まっている」 と思います。
ただし、その役割が大きく変わったのがポイントです。
昔は「設計知識=自分が綺麗にコードを書くためのスキル」でした。
今は「設計知識=AIに正しい方向へ導くための指揮・ディレクションスキル」にシフトしています。
なぜ重要度が上がっているのか、3つの視点で整理します。
1. AIは「構造」を与えないと爆速でゴミの山を作る
CopilotやClaudeは個別の関数・クラス・コンポーネントを爆速で作ってくれますが、
プロジェクト全体の構造(アーキテクチャ)を指示しないと、数週間でメンテ不能なカオスになります。
Feature-first / Layered / Clean Architecture / DDD などの「型」を知っているからこそ
「この機能は features/user/profile にまとめて」「ドメイン層だけ純粋に保って」などと具体的に指示できる
指示が曖昧だと、AIは「動くけどどこに何があるかわからない」コードを量産する
(実際に何度も経験済み…修正ラッシュで地獄を見ました)
→ 設計知識がないと、AIへの「制約言語」が貧弱になり、出力の質が劇的に落ちる。
2. DB設計・インフラ設計は「コストとスケール」に直結する
特にクラウド(DynamoDB, Aurora, Redisなど)を使う場合、AIに丸投げすると「動くけど請求額が10倍になる」設計になりがちです。
例:
「ToDoアプリのスコア管理DB作って」と言ったら、AIは普通にRDB風の複数テーブル設計を提案してくる
でもDynamoDBでシングルテーブルデザイン + 適切なGSI/LSIを貼らないと、スケール時に詰む(RCU/WCU爆増、ホットパーティションなど)
→ 「どんなクエリパターンが主になるか」「アクセスパターンを先に洗い出す」知識がないと、
AIに渡す仕様自体が間違ったものになってしまう。
3. デバッグ・レビューの「最後の砦」は人間しかできない
AI生成コードは「仕様通り動く」率は非常に高いですが、
「仕様に書かれていない非機能要件」(race condition、メモリリーク、N+1、セキュリティホール、将来の拡張性など)で死ぬケースが頻発します。
表面上テスト全通でも、本番で死ぬバグ
「これ10年後拡張できる?」を見極められるのは、設計原則・コンピュータサイエンスを理解している人だけ
→ AIは「今動くもの」は得意だけど、「10年耐えられる美しい設計」はまだまだ人間の領域です。
これからの二極化がもう始まってる
- AIに使われるエンジニア:プロンプトが曖昧 → コピペ → 動かない → 詰む
- AIを使いこなすアーキテクト:設計図を引いて、AIに「最適な実装」を指示 → 最短で高品質プロダクト
「仕様を伝えるだけで開発が進む」というのは、
「AIが理解できる精密な設計・仕様言語」を人間が書けるかどうか が鍵になった時代だと思います。
最近の自分の実践で一番効いたのは、
事前にフォルダ構成・アーキテクチャをガチガチに決めておく → AIの出力精度が段違いに上がる
という体験です。これ、設計知識がないと絶対にできない芸当ですよね。