広告

私はもうコードから始めない

Dev.to / 2026/3/31

💬 オピニオンSignals & Early TrendsIdeas & Deep AnalysisTools & Practical Usage

要点

  • 著者は、ソフトウェア開発におけるAIの最大の効果は、コードを要求する前に、AIを使って自然言語で要件を設計・明確化することにあると主張している。
  • 彼らは、開発の後半でズレが生じないように、システムの境界、スコープ、用語、前提といった「真のレバレッジ」の問題を早期に解決することを強調している。
  • ワークフローは段階的で、まずチャット(多くの場合音声)でシステムを議論し形にする。次に、安定した案を、目標、非目標、語彙、インターフェース、ロードマップを網羅するMarkdownドキュメントへと変換する。
  • リポジトリに触れる前に、アーキテクチャと制約を設計することを推奨しており、実装を「発明」ではなく「実行」にし、プロンプトから得られるコードの品質を高める。
  • 既存のコードベースであっても、関連する部分を早い段階でチャットに持ち込み、何が同じままで何が変わるのか、境界がどこで弱いのかを特定する。AIを単なるコード案内役ではなく、変更を形作るパートナーとして活用する。

AIを使って最初にソフトウェアを設計する方法

多くの開発者は、AIにコードへまっすぐ飛び込んでほしいと思っています。

私は違います。

どんなツールに対しても、何かを実装するよう頼む前に、まず言葉で問題を解きほぐします。AIをコーディング支援として使う前に、設計パートナーとして使います。この切り替えは、特定のモデルやツールよりも、私の成果に大きな影響を与えています。

私のツールセット

自宅と職場で私の環境は変わりますが、パターンは同じです:

Home Work
ChatGPT Plus Gemini Pro
GitHub Copilot GitHub Copilot
Codex N/A
Claude Code Claude Code

これらのツールは互換ではありません。作業の段階に応じて、使い分けます。まず議論し、次に実装します。

真のレバレッジはコードの前にある

ほとんどのAI支援開発は、遅すぎる段階から始まります。

人々は、コードの中にすでに入ってからAIを持ち込み、AIがすべてをうまく判断してくれることを期待します。しかし難しいのはたいてい、もっと前の段階です。アイデアがまだ曖昧で、境界が定義されていないときです。

私はコードを求める前に、次の点を明確にしたいです:

  • 私が解決している問題
  • システムの境界
  • 一貫した用語
  • スコープに含めるものと後回しにするもの
  • 暗黙のままだとズレを生む前提

それを最初に解ければ、後工程はすべて良くなります。

私のワークフロー

1. まずはチャットから始める

私はChatGPTから始めます。通常はボイスを使います。

これにより、アイデア、制約、エッジケース、命名、構造を素早く行き来できます。この段階ではコードは求めません。システムを形作っています。

2. ドキュメントに落とし込む

アイデアが固まったら、それをMarkdownに変換します:

  • ビジョン
  • 語彙
  • 目的と非目的
  • システム概要
  • インターフェース
  • ロードマップ

コード生成が目的ではありません。目的は明確さです。

3. 実装の前に設計する

私はリポジトリに急ぎ込んだりしません。

実装が「発明」ではなく「実行」になるほど、アーキテクチャ、用語、制約を明確にしたいのです。より良い設計は、より良いプロンプトにつながり、より良いコードにつながります。

既存のコードでも重要だ

これは新規(グリーンフィールド)の作業だけの話ではありません。

もし既存のコードベースがあるなら、関連部分をまとめて圧縮(zip)し、それを早い段階でChatGPTに持ち込みます。そうすることで、議論のための土台ができます:

  • 変わらないもの
  • 変わるもの
  • 境界が弱い場所

コードのナビゲーションとしては完璧ではありませんが、実装の前に変更の形を作るうえでは非常に効果的です。

なぜこれがうまくいくのか

最大のメリットは、ズレ(ドリフト)が減ることです。

設計がすでに定義されているので、毎回のプロンプトで全部を説明し直す必要がありません。私は焦点を絞った指示を出せます:

これらの制約を使って機能Xを実装してください。スコープを広げないでください。用語を保持してください。

これは、モデルにゼロからすべてを推測させるよりもはるかに信頼性があります。

ツールの捉え方

私はツールを2つのカテゴリに分けます:

  • 議論用ツール(ChatGPT、Gemini):アイデアを探る、設計を磨く、成果物を作る
  • 実装用ツール(Copilot、Codex、Claude Code):定義された設計に基づいて実行する

ほとんどのフラストレーションは、間違った段階で間違ったツールを使うことから生まれます。

コードに移行すると何が変わるか

実装を始める頃には、システムはすでに定義されています。

つまり通常は次のようになります:

  • ズレが少ない
  • 修正が少ない
  • 一貫性が高い

モデルは、私が何を求めているのかを当て推量する必要がなくなります。計画に基づいて実行するだけです。

まとめ

私のワークフローはシンプルです:

  1. アイデアを会話で詰める
  2. それを設計ドキュメントにする
  3. 必要に応じて既存のコードを持ち込む
  4. それらの成果物を「唯一の正」として使う
  5. そして実装する

AIは単なるコード生成器ではありません。

うまく使えば、それは設計の増幅器です。

そして最初の段階で設計がどれだけ明確かによって、コードの質はだいたい良くなります。

Designs Amplifier

広告