AIが平文の指示を解釈し、UXフローを設計し、UIやコードを生成し、フィードバックで反復して動作する機能や画面を届ける仕組みを解説します。

「書かれた指示」とは、あなたが作ってほしいことを説明するために既に使っている言葉—AI(とチーム)が実行できる形で書かれたものです。
実務では、完璧な文章が目的ではありません。重要なのは明確な意図(何を達成したいか)と明確な境界(何が許されるか/許されないか)です。こうしておけばシステムが推測する必要が減ります。
形式は問いません。例:
重要なのはテキストが成果と制約を記述していることです。両方あれば、AIはビジネスルールを勝手に作らずにスクリーン、フロー、実装の詳細を提案できます。
動作する機能はモック以上のものです。通常含まれるのは:
例として「保存された住所」は単なるページではなく、一覧・追加/編集といった複数画面、必須項目・既定住所などのルール、API呼び出しや状態更新の配線を含みます。
多くのチームはシンプルなサイクルに落ち着きます:
記述 → 生成 → レビュー → 改善
あなたが仕様を記述すると、AIがUI/UXと実装を提案し、あなたは正確性やプロダクトとしての適合性をレビューして、結果が意図したものになるまで仕様を洗練します。
Koder.aiのようなvibe-codingプラットフォームを使うと、このループはさらに短くなります。チャットで機能を説明してアプリ変更を生成し、ターゲットを絞ったフォローアップで素早く反復し、必要ならロールバックもできます。
AIは画面のドラフト、フローの提案、コード生成を加速できますが、人がやることは依然として残ります:
AIはテキストを最初(と二回目)のドラフトに変える加速装置です。最終結果の責任は人間が負います。
AIはフォーマットに寛容ですが、明確さには厳格です。1段落、箇条書き、PRDの抜粋、または一連のユーザーストーリーからでも動作しますが、意図と制約が明示されている必要があります。
最も有用な出発点は通常次の要素を含みます:
これらはAIに何を作るかと「良い」の基準を伝え、やり取りを減らします。
要件が欠けていると、AIはデフォルトで補完しますが、それが事業ルールに合わないことがあります。以下は明示するべきです:
曖昧:「チェックアウト画面を追加してシンプルにして」
具体:「ログイン済みユーザー向けのチェックアウトフローを追加。ステップ:住所 → 配送 → 支払い → 確認。カード + Apple Pay をサポート。ユーザーは最大3件の住所を保存可能。支払い前に税と送料を表示。支払い失敗時はカートを保持し再試行オプションを表示。成功条件:注文作成、領収メール送信、在庫を減算。」
明確な入力はAIにスクリーン、文言、バリデーション、ロジックを実務的な制約に沿って生成させます。その結果、想定と異なる前提が減り、設計変更の回数が減り、初案から実際にレビュー・テスト・出荷できるプロダクトに至る時間が短くなります。
AIが画面やコードを生成する前に、あなたの意味するところを把握する必要があります。これはプロダクトマネージャーが仕様を読むように、目標、関係者、正しい機能にするためのルールを抽出するプロセスです。
多くの仕様は次の共通要素を含みます:
これらが明確なら、AIは文章を構造化された理解に翻訳できます。後続のステップでフロー、画面、データ、ロジックに変換されます。
AIは一般的なプロダクトパターンを認識し、日常的な言い回しを実装要素にマップします。例:
このマッピングにより、曖昧な名詞をデザイナーやエンジニアが使う具体的なビルディングブロックに変換できます。
良い仕様でもギャップは残ります。AIは不足を指摘し、次のような確認質問を提案できます:
回答が得られないまま進めたい場合、AIは妥当なデフォルト(標準的なパスワードルールやよくあるダッシュボードウィジェットなど)を選べます。ただし仮定は明示してレビュー用に一覧にするべきです。仮定が可視化されていれば、人が確認・修正してからリリースできます。
意図が明確になったら、次は書かれた仕様を実際に作れる形—つまり「機能計画」に落とし込みます。まだコードを求める段階ではなく、構造を作る段階です。
良い計画は文章を画面、ナビゲーション、ユーザージャーニーに翻訳することから始まります。
例:「ユーザーがアイテムをウィッシュリストに保存して後で見る」は通常、(1) 商品詳細の操作、(2) ウィッシュリスト画面、(3) メインナビからの到達手段を意味します。
AIに画面を列挙させ、ハッピーパスと一般的な迂回(未ログイン、アイテムが削除された、空のリスト)を説明させてください。
次にAIに機能をタスクに分割させます:
ここで仕様の曖昧さが露出します。例えば「同じアイテムを二度保存する場合」を仕様が言及していなければ、計画の段階でその質問が浮上します。
受け入れ基準はわかりやすい言葉で書いてください。例:
AIに項目を必須とあると良いにラベル付けさせてください(例:「ウィッシュリストを共有する」はあると良い)。これにより仕様が知らず知らずに拡大するのを防げます。
機能計画が整ったら、AIはテキストから具体的な「画面マップ」と初期のUIドラフトを作成できます。初回でピクセルパーフェクトを目指す必要はなく、共通認識を作るための検査可能なモデルを目標にします。
まずハッピーパスを短い物語として描写します:ユーザーは何を求め、どこから始め、何をタップし、成功はどう見えるか。そこからAIは最小限の画面セット(各画面に何が必要か)を提案できます。
次に一般的な代替パスも求めてください:「未ログインなら?」「結果がないなら?」「途中でやめたら?」といった質問です。これによりデモだけで動くUIを避けられます。
説明にレイアウトのヒント(例:「ヘッダーに検索、結果リストにフィルタ、主要CTAは下部」)が含まれるなら、AIは次のような構造化ドラフトを出せます:
良いプロンプトはコンテンツ優先度(例:「価格と在庫を説明より上に表示」)、インタラクションルール(例:「フィルタはセッションを跨いで保持」)、制約(例:「モバイル優先;片手操作を想定」)を含みます。
動くプロダクトには「通常時」以上の設計が必要です。AIに実装する状態を列挙・定義させてください:
これらの状態決定は開発工数とユーザー信頼に直接影響します。
AIは再利用可能なコンポーネントとルール(タイプスケール、間隔トークン、ボタンスタイル、フォームパターン)を提案して一貫性を強制できます。
既にコンポーネントがある場合は内部ガイド(例:/design-system)にリンクしてAIにそれを再利用させ、新しいパターンを勝手に作らないようにしてください。
次に「アプリが何をするか」を「アプリが何を保存するか」と「何を許容するか」に翻訳します。ここで仕様は具体的なデータモデルとビジネスルールになります。
AIはまず文章中の“名詞”を抽出し、それらをエンティティとして扱います。例:「ユーザーはプロジェクトを作成しタスクを追加でき、マネージャーが工数を承認する」は User, Project, Task, TimeEntry のようなエンティティを示唆します。
各エンティティについてAIは必要なフィールドを提案し(欠けている箇所を指摘します):
また暗黙のエッジケース(例:「アクティブなサブスクリプションはアカウントにつき1つのみ」)や計算検証(例:「注文合計は明細の合計に等しい」)なども指摘させてください。
良い出力はルールを読みやすく保持します。例:
最後にレコードが時間経過でどう変わるかをマップします:作成、更新、削除、そして削除の代わりにソフトデリートを行うか。AIは監査トレイル(誰がいつ何を変更したか)や履歴/バージョン管理が必要かも提案できます。
ここで「最初の動作するドラフト」のコードを生成できます:ユーザーがクリックするUIと、それを正しく振る舞わせるロジックです。
Koder.aiを使っている場合、通常はチャット駆動の仕様からフルスタックの実装(Web、バックエンド、DB)を生成し、必要ならソースコードをエクスポートして従来のワークフローに移行できます。
「名前、オーナー、可視性を持つ『プロジェクト作成』画面を追加する」のような仕様から、AIはスキャフォールドできます:
再利用可能なビルディングブロック(例:Create と Edit で共有する <ProjectForm />)も生成してコードの一貫性を保てます。
サーバー側ではAIが機能に対する基本的な「契約」を下書きします:
重要なのはUIが送るものをそのまま保存するのではなく、仕様のルールに結びついたバックエンドロジックを作ることです。
AIはUIを既存のAPIクライアント(fetch/Axios/React Query など)に接続し、適切なキャッシュとリトライも組み込みます。フィールドレベルのバリデーションエラーやネットワーク障害に対するユーザーフレンドリーなエラーハンドリングも生成すべきです。
// Example: submit handler with loading + error state
async function onSubmit(values) {
setStatus({ loading: true, error: null });
try {
await api.post('/api/projects', values);
router.push('/projects');
} catch (e) {
setStatus({ loading: false, error: 'Could not create project. Try again.' });
}
}
(上のコードブロックはそのまま保持してください)
生成されたコードが有用なのは既存の規約に従うときです:命名が明確、フォルダ構成が予測可能、小さな関数、共有ユーティリティ(バリデータ、APIクライアント、権限ヘルパー)を使うこと。
スタイルガイドや好みのパターンがある場合は明示的に参照し、/engineering/frontend や /engineering/api-guidelines などの内部ドキュメントをリンクしてください。
この時点で画面、UIコンポーネント、データ形、ビジネスルールがあります。"繋ぐ"作業はこれらを実際に連携させることです:ボタンがアクションを起こし、アクションがバックエンドを呼び、レスポンスがUIを更新し、権限が見えるものを決定します。
AIは仕様に従って画面をルート(URLやアプリパス)で接続したり、主要アクション後の遷移を定義したり、ページ間で適切なコンテキストを渡すことができます。
例:「保存後に一覧へ戻り新規アイテムをハイライトする」は具体的なフローになります—フォーム送信→成功を待つ→一覧へ遷移→トースト表示と新しい行にフォーカス。
仕様にはしばしば「Adminは編集できる、Viewerは読み取りのみ」といった記述があります。これを実装するには複数箇所で強制する必要があります:
AIは一貫したチェックをアプリ全体に生成できるため、「見た目はロックされているがエンドポイントは動く」といった不整合のリスクを減らせます。
多くの機能は設定(APIベースURL、分析キー、機能フラグ、ストレージバケット)に依存します。AIはdev/staging/prod向けに別の設定を準備しつつ、シークレットをコードベースに含めないようにできます。
典型的な出力例:
.envテンプレート(安全なプレースホルダ)目標は「クリック → リクエスト → レスポンス → UI更新」のフルループです。AIは不足している接着コード(読み込み状態、エラーハンドリング、リトライ)や簡単なチェック(「Saveをクリックしたら期待するペイロードが送信される」「成功でUIとキャッシュが更新される」「エラーはユーザーに分かる表示になる」)を生成できます。
ここで機能はモックから実際に振る舞うプロダクトへと変わります。
機能が「動く」ようになったら、実際のユーザー(と現実の混乱)と同じやり方でテストします。AIは受け入れ基準から具体的なチェックケースを作り、デバッグの単純作業を高速化します。
仕様に「ユーザーはパスワードをリセットでき、確認メッセージを見る」とあるなら、AIはその文言にマッチするテストケースを複数レベルで提案できます:
コツはAIに正確な受け入れ基準と最小限の文脈(機能名、主要画面、既存のテスト慣行)を与えることです。
仕様は通常ハッピーパスを説明します。AIはサポートチケットにつながる「もしも」のシナリオをブレインストーミングするのに役立ちます:
すべてをすぐに実装する必要はありませんが、プロダクトのリスクレベルに応じてどれを優先するか決めるべきです。
テストが失敗したら、開発者が通常確認するもの(失敗アサーション、関連ログ、スタックトレース、再現手順)をAIに渡してください。AIは:
ただしAIの提案は仮説として扱い、テストの再実行とUIでの挙動確認で確かめてください。
短いレビューサイクル用にチェックリストを用意してください:
AI生成の初稿は「反応できる」程度であり「出荷準備ができている」ことは稀です。反復では仕様を厳密にし、エッジケースを補い、小さなレビュー可能な変更で信頼性を高めます。
良いループは:生成 → レビュー → 特定の変更依頼 → 何が変わったか比較 → 繰り返し、です。
全アプリを再プロンプトするのではなく、ターゲットを絞った更新を目指してください。AIに1つの部分(画面、コンポーネント、バリデーション、クエリ)だけを修正させ、差分や明示的な「前/後」を返してもらうとよいです。これにより他を壊していないか確認しやすくなります。
ワークフローが許すなら、小さなコミットにして同僚のプルリクと同様に差分をスキャンし、アプリを実行して挙動を検証してください。
Koder.aiのようなプラットフォームでは、まず計画モードでスコープとフローに合意し、その後狭いスライスで生成→反復し、スナップショット/ロールバックを活用すると安全です。
曖昧な依頼(「もっと良くして」や「フローを直して」)は曖昧な結果を生みます。強い変更依頼は次を含みます:
可能なら受け入れ基準を付けてください:「必要なフィールドが有効になるまで『支払う』ボタンは無効」「配送国が変わったら税を即時再計算」など。
AIの出力はあなたが所有するコードです。更新時には何が変わったか、なぜ変えたか、何をテストするべきかを短く添えさせてください。
AIがリファクタを勧める場合は意図の説明と潜在的リスク(例:「検証タイミングが変わる」「APIレスポンス処理が変わる」)を求めてください。
反復を終える基準を明確にします:
この時点で仕様を凍結し出荷し、次の反復を新しいスコープの変更として計画します。
AIは書かれた仕様を驚くほど完全な機能に変えられますが、判断の代替にはなりません。特にユーザーデータ、決済、権限に関わる部分は人間が必ずレビューしてください。
プロンプトに貼り付けたものは保存・レビューされる可能性があると仮定してください。以下は含めないでください:
現実味が必要なら匿名化してください:名前をプレースホルダに置換、IDをスクランブルし、パターン("1万人、3つの役割")で説明する等。
AIはベースラインのセキュリティチェック生成に有用ですが、必ず検証してください:
プロンプトを投げる前に含めるべき項目:
ドラフトプロトタイプができたら素早くレビューをスケジュールしてください:ロードマップと比較し、今出荷するものと後回しにするものを決め、変更を文書化します。
ドラフトをプランに変える手助けが必要なら /pricing を確認するか、関連記事を /blog で参照してください。チャット駆動開発を試す場合は、Koder.aiがこのワークフロー向けに設計されています:書かれた仕様を動くWeb/バックエンド/モバイル機能に変え、素早く反復し、準備ができたらソースコードをエクスポートできます。
「書かれた指示」とは、**意図(何を達成したいか)と境界(許可されること・されないこと)**を明確に示したテキストのことです。Slackの短いメッセージ、PRDの抜粋、ユーザーストーリー、受け入れ基準、エッジケースの一覧など、形式よりも明確さが重要です。
「動作する」機能は見た目だけでなく、通常以下を含みます:
モックは外観を示すに過ぎません。動作する機能はエンドツーエンドで正しく振る舞います。
多くのチームが使う典型的なループ:
素早いドラフトが速度を生み、厳密なレビューと反復が品質を担保します。
AIは仕様が不十分だと推測で補完します。重要な挙動をAIに推測させたくない場合、必ず以下を含めてください:
これらを事前に入れることで手戻りが減り、業務ルールと異なる「合理的なデフォルト」を避けられます。
開始時に役立つ四つの要素:
これらはAIに方向性と品質基準を与え、単なるアイデアではなく検証可能な成果を得やすくします。
曖昧な要求を具体化するには、以下を定義します:
これらの具体性が画面、ルール、API挙動に直接翻訳されます。
コード生成の前にAIに機能プランを出させてください:
これにより、仕様不在の箇所が早期に露呈し、変更コストが低いうちに補えます。
本番向けにするには、各主要画面の状態を明示してください:
多くの実運用の不具合やUX問題はハッピーパス外の状態不足から生じます。
AIはテキスト中の“名詞”を抽出してエンティティを作り、以下を提案します:
さらに、レコードのライフサイクル(作成/更新/ソフトデリート)や監査ログの必要性も示させてください。
AI出力はドラフトとして扱い、ガードレールを設けてください:
AIは反復を加速しますが、正しさ・セキュリティ・品質の最終責任は人間にあります。