要件定義で「何を作るのか」を決めたら、次に必要になるのが基本設計です。
基本設計とは、システム全体をどのような構成で作り、どの機能をどこに持たせ、データをどのように扱うのかを決める工程です。
AI時代の基本設計で重要なのは、AIにコードを書かせる前に「システムの形」を人間が整理しておくことです。
AIはコードを書くことは得意ですが、システム全体の責務や構造が曖昧なままだと、場当たり的な実装になりやすくなります。
そのため、基本設計では「画面」「API」「データベース」「処理の責任範囲」「非機能要件」を分けて考えることが大切です。
システム構成を決める
まず考えるべきなのは、システム全体の構成です。
たとえば、Webアプリであれば、一般的にはフロントエンド、バックエンド、データベースのように役割を分けます。
フロントエンドは、ユーザーが操作する画面を担当します。バックエンドは、画面からのリクエストを受け取り、必要な処理を実行します。データベースは、ユーザー情報や投稿内容、設定情報などを保存します。
システム構成を決める目的は、「どこに何を任せるか」を明確にすることです。
ここが曖昧なままだと、画面側に本来バックエンドで行うべき処理を書いてしまったり、データベースに保存すべき情報を一時的な状態だけで扱ってしまったりします。
AIに実装を依頼する場合も、「Reactで画面を作って」「FastAPIでAPIを作って」「SQLiteに保存して」といったように、構成を明確に伝えることで、出力されるコードの品質が大きく変わります。
API設計を考える
API設計では、フロントエンドとバックエンドがどのようにやり取りするかを決めます。
たとえば、メモアプリであれば、「メモ一覧を取得する」「メモを作成する」「メモを更新する」「メモを削除する」といったAPIが必要になります。
このとき大切なのは、APIを単なる処理の入口として考えるのではなく、システムの機能単位として整理することです。
APIは、画面と処理をつなぐ約束です。
APIの名前、受け取るデータ、返すデータ、エラー時の挙動を決めておくことで、フロントエンドとバックエンドを分けて開発しやすくなります。
AIにコードを書かせる場合でも、API設計があると指示が具体的になります。
逆に、API設計がないまま実装を進めると、似たようなAPIが増えたり、画面ごとにバラバラなデータ形式になったりします。
DB設計を考える
DB設計では、どのようなデータを、どのような形で保存するかを決めます。
たとえば、ユーザー、記事、コメント、カテゴリ、購入履歴など、システムで扱う情報をテーブルとして整理します。
DB設計で重要なのは、単に保存する項目を並べることではありません。
DB設計は、システムが長く使われるほど重要になります。
最初は小さなアプリでも、あとから検索機能、履歴機能、権限管理、分析機能などを追加したくなることがあります。
そのとき、データの持ち方が整理されていないと、機能追加のたびに大きな修正が必要になります。
AIはテーブル定義を作ることもできますが、「何を保存すべきか」「どのデータを分けるべきか」「どのデータ同士が関係するか」は、人間が設計として考える必要があります。
責務分離を意識する
基本設計で特に重要なのが、責務分離です。
責務分離とは、それぞれの処理が担当する役割を分けることです。
たとえば、画面表示の処理、入力チェックの処理、データ保存の処理、外部APIと通信する処理をすべて同じ場所に書くと、コードはすぐに複雑になります。
責務分離ができているシステムは、AIにも修正させやすくなります。
なぜなら、「このファイルは画面表示を担当する」「この関数はデータ取得を担当する」「このサービスは業務ロジックを担当する」と役割が明確になるからです。
AIに修正を依頼するときも、「このAPIの処理だけ変更して」「DB保存部分は変えずにバリデーションだけ追加して」といった指示が出しやすくなります。
責務が分かれていないコードでは、AIが一部を修正したつもりでも、別の機能に影響を与えてしまう可能性があります。
非機能設計も忘れてはいけない
基本設計では、機能だけでなく非機能設計も考える必要があります。
非機能設計とは、システムの使いやすさ、速さ、安全性、保守性、拡張性などに関する設計です。
たとえば、次のような観点があります。
- 画面の表示速度は十分か
- 大量のデータを扱っても問題ないか
- ログイン情報や個人情報を安全に扱えるか
- エラーが起きたときに原因を追いやすいか
- あとから機能を追加しやすい構成になっているか
AI時代でも、非機能設計を軽視すると、動くけれど使いにくいシステムになります。
AIは「動くコード」を素早く作れます。しかし、速さ、安全性、運用しやすさまで自動で最適化してくれるとは限りません。
だからこそ、基本設計の段階で「どの程度の性能が必要か」「どの情報を守る必要があるか」「エラー時にどう対応するか」を考えておくことが重要です。
AIに任せる前に設計を言語化する
AI時代の開発では、設計を文章として整理する力がより重要になります。
なぜなら、AIは人間が与えた指示をもとにコードを書くからです。
システム構成、API、DB、責務分離、非機能要件が曖昧なままだと、AIへの指示も曖昧になります。
良い設計は、良いAI指示の土台になります。
たとえば、「ユーザー管理機能を作って」と依頼するよりも、「ユーザー登録、ログイン、プロフィール更新をAPIで分け、パスワードはハッシュ化して保存し、画面側では入力チェックを行う」と伝えた方が、AIはより正確にコードを作れます。
つまり、AI時代の基本設計は、開発者だけの資料ではありません。
AIに正しく実装させるための指示書でもあります。


コメント