7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DrawIO ワイヤーフレームを「共通言語」にしたら、AIエージェントとのUI開発が劇的にスムーズになった

7
Posted at

AIエージェントにUIを実装させるとき、テキストだけで意図を伝えるのは難しい。DrawIOでワイヤーフレームを描き、それを設計の Single Source of Truth にしたところ、人間のイメージとAIの出力のズレが大幅に減り、開発速度が上がった。


はじめに

AIコーディングエージェントの進化により、「要件を伝えればコードが出てくる」時代が現実になりつつある。ロジック部分は比較的うまくいく。しかし UI の実装 となると、途端に認識のズレが発生する。

「サイドバーの右にメール一覧を配置して、選択したメールの詳細を右ペインに表示して」——この一文から人間が思い描くレイアウトと、AIが生成するレイアウトは、驚くほど一致しない。

この記事では、個人プロジェクト SmartAM(AI ネイティブなデスクトップメーラー)の開発を通じて見つけた、DrawIO ワイヤーフレームをハブにした AI エージェント駆動 UI 開発 のアプローチを紹介する。


課題:テキストだけでUIを伝える限界

AIエージェントにUIを作らせるとき、典型的にはこうなる:

  1. テキストで要件を書く(「3カラムレイアウトで…」)
  2. AIがコードを生成する
  3. 実行してみると 思ってたのと違う
  4. 修正指示を出す(「もっと左寄せにして…」「ここにボタンを追加して…」)
  5. 2-4 を何度も繰り返す

この繰り返しが発生する根本原因は、人間の頭の中にある視覚的なイメージを、テキストだけでは正確に伝えられない ことにある。UIを相手に伝える、また理解することには、開発者とAIの双方に課題が存在する。

開発者側の課題: デザイナーでない限り、デザインを言語化するボキャブラリーが少ない。頭に思い描いたレイアウト、色彩、質感、アニメーションを正確に言語化することは難しい。

AI側の課題: AIはあくまで言語モデルであり、実際にデザインを視覚しているわけではない。たとえ同じ画像を読み込んだとしても、人間と言語モデルでは情報を受け取るフォーマットや、咀嚼するメカニズムが異なる。

具体的には、以下のような情報がテキストだけでは伝わりにくい:

  • レイアウトの曖昧さ: 「サイドバー」の幅は?「メイン領域」の比率は?
  • 要素の関係性: どのボタンがどのパネルに属するのか
  • 状態の表現: モーダルが開いたとき、背景はどうなるのか
  • 画面遷移: 設定画面のタブ構成は?各タブに何があるのか

テキストベースの要件定義書だけでは、これらを網羅的かつ正確に伝えるのは困難だ。


アプローチ:DrawIO を「共通言語」にする

解決策はシンプルだった。DrawIO でワイヤーフレームを描き、それをプロジェクトに含める

SmartAM では screens.drawio という 24 ページのワイヤーフレームを作成し、全画面・全状態を設計した。これにより、UIについてAIと共通認識を構築する作業が劇的に楽になる。

なぜ DrawIO なのか

  • テキストベース(XML): .drawio ファイルは XML なので Git 管理できる
  • AIが読める: AIエージェントは .drawio の XML を解析し、画面構成を正確に理解できる
  • 人間も読める: GUI エディタで視覚的に確認・編集できる
  • ページ機能: 1ファイルで複数画面を管理できる

プロジェクト構成

SmartAM/
├── screens.drawio          # UIワイヤーフレーム(24ページ)← 視覚的な設計
├── ai-native-mailer.md     # 要件定義書 ← テキストベースの設計
├── CLAUDE.md               # AIアシスタント向けコンテキスト
└── app/
    ├── src/                 # フロントエンド(SvelteKit)
    └── src-tauri/src/       # バックエンド(Rust/Tauri v2)

ポイントは、テキストの要件定義書視覚的なワイヤーフレーム の両方を用意し、「何を作るか」と「どう見えるか」を分離したこと。


実践ワークフロー

実際の開発フローは以下の通り:

1. 要件定義書を書く

このプログラムが何をするのかを言語化する。ワイヤーフレームだけでは伝わらない情報をテキストで定義する:

  • 各機能の振る舞い(「ボタンを押したらAPIを呼び、結果をパネルに表示」)
  • データフロー(「メール一覧はIMAPから取得し、ローカルにキャッシュ」)
  • 技術スタック(「フロントエンドは SvelteKit、バックエンドは Rust/Tauri v2」)

2. 設計書を書く

要件を実現するための機能を設計する。ここで、どんな画面に、どんなボタンが必要なのかを決める。

3. DrawIO でワイヤーフレームを描く

設計書をもとに、全画面・全状態のワイヤーフレームを DrawIO で作成する。Figma のような高精度なデザインは不要。重要なのは:

  • 画面のレイアウト構成(カラム分割、ヘッダー/フッター)
  • UI要素の配置と種類(ボタン、リスト、入力欄)
  • 画面間の遷移関係
  • 各状態のバリエーション(モーダル表示時、ローディング時など)

ワイヤーフレームレベルで十分。色やフォントサイズは後から調整できる。

4. AIエージェントに読ませてMVP実装

AIエージェントへの指示は極めてシンプルになる:

「screens.drawio の Page 5 のレイアウトを実装して。詳細は ai-native-mailer.md のメール詳細画面セクションを参照。」

AIは DrawIO の XML からレイアウト構造を読み取り、要件定義書から振る舞いを理解し、コードを生成する。

5. MVPを触りながら微調整

生成されたUIを実際に触り、ワイヤーフレームとのズレや使い勝手の問題を見つける。微調整時には、まず DrawIO を人間が編集し、レイアウト変更の共通認識を作ってから コードに反映させる。

ワイヤーフレームという「正解」があるので、修正指示も具体的になる:

「ワイヤーフレームではAIパネルはメール詳細の下に配置されているが、生成されたコードでは右に配置されている。修正して。」


なぜ効果的だったのか

1. 認識のすり合わせコストが激減

テキストだけの場合、「サイドバー」「メインエリア」「詳細パネル」といった言葉の解釈が人間とAIで異なることがある。ワイヤーフレームがあれば、同じ図を見て話しているので、解釈のブレがなくなる。

また、DrawIO 内で画面番号を振ることで、「〇〇をしている画面」などの抽象的な表現ではなく、「画面2を調整したから確認して」のように、コミュニケーションを省力化できる。

2. 画面の「全体像」を共有できる

テキストで画面を説明すると、どうしても部分的な記述になる。ワイヤーフレームなら、画面全体の構成が一目で分かる。AIは全体のコンテキストを把握した上で、個々のコンポーネントを実装できる。

これはレビュー時にも有効で、全画面のデータを DrawIO として持つことで、全体の整合性レビューが容易になる。「画面1に追加したボタンがあるので、画面9にもこの設定項目がないとおかしい」といった、場当たり的な実装で生まれる不整合を発見しやすい。

3. 状態遷移を明示できる

UIには多くの状態がある。SmartAM の場合:

  • メール未選択時 / 選択時
  • AI処理中(ローディング)/ 完了時
  • 設定画面の各タブ
  • メール作成モーダル(新規 / 返信 / 転送)

これらを DrawIO の別ページとして用意しておくことで、AIは各状態のUIを正確に実装できた。

4. イテレーションが速い

ワイヤーフレームの修正は、コードの修正より圧倒的に速い。UIの方向性を DrawIO 上で固めてからコードに落とすことで、手戻りが減る。


Tips

ワイヤーフレームは「構造」に集中する

色、フォント、アイコンの詳細は後回しでいい。AIエージェントに伝えるべきは レイアウト構造要素の配置 。見た目(アニメーションなど)の調整はコード上で行う方が効率的。

1ページ1状態を徹底する

「メール一覧画面」と「メール詳細画面」を1ページに詰め込まない。状態ごとにページを分けることで、AIへの指示が明確になる。

AIアシスタント向けのコンテキストファイルを用意する

SmartAM では CLAUDE.md というファイルに、プロジェクト構造・コーディング規約・設計方針をまとめた。AIエージェントが最初に読むファイルとして機能し、ワイヤーフレームや要件定義書の読み方のガイドにもなる。

DrawIO のレビューもAIに任せる

ワイヤーフレームと実装コードの整合性チェックもAIエージェントに依頼できる。「screens.drawio の Page 3 と現在の実装を比較して、差分を報告して」のような指示が有効。


まとめ

AIエージェントとのUI開発で最も難しいのは、人間の頭の中にある視覚的なイメージを正確に伝えること だ。

DrawIO ワイヤーフレームをプロジェクトに含め、設計の Single Source of Truth として運用することで、この課題を大幅に軽減できた。

人間のイメージ → DrawIO ワイヤーフレーム → AIエージェントの理解 → コード

この流れを作ることで、テキストだけでは埋められなかった認識のギャップが埋まり、開発のイテレーション速度が上がった。

AIコーディングエージェントの能力が上がるほど、「何を作るか」を正確に伝える技術の重要性も増す。DrawIO のようなシンプルなツールが、その橋渡しとして驚くほど効果的に機能する。


宣伝

この記事で題材にした SmartAM は、AI をネイティブに統合したデスクトップメールクライアントです。

メールの要約、返信文の自動生成、翻訳、カレンダー登録をワンクリックで実行できます。AI はボタンを押した時だけ動作するので、トークンを無駄に消費しません。

  • 📬 Gmail OAuth 2.0 認証 / 複数アカウント対応
  • 🤖 要約・返信下書き・翻訳・カレンダー登録を AI でワンクリック対応
  • ⌨ 便利なキーボードショートカット
  • 🎨 Ollama / OpenAI / Anthropic / Gemini / AWS Bedrock 対応

技術スタックは SvelteKit + Rust(Tauri v2)。DrawIO ワイヤーフレーム駆動で開発しました。

👉 GitHub - ryoupr/SmartAM

興味があればぜひ触ってみてください。Star いただけると励みになります ⭐

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?