デザインハンドオフは、2016 年頃から人間の開発者向けに解決済みの問題です。Zeplin、InVision Inspect、Avocode、Figma 自身の Dev Mode — これらはすべて同じことをします。開発者がノードをクリックしてプロパティを読み取れる Web インターフェースを提供します。
そのワークフローは、「開発者」が AI エージェントになった途端に完全に機能しなくなります。
この記事では、その理由、エージェントが実際に必要なもの、そして近似的なコードではなく正確なコードを生成するハンドオフワークフローの構築方法を説明します。解決策は figmascope です。Figma ファイルから直接構造化されたコンテキストバンドルをエクスポートするブラウザベースのツールです。ステップバイステップのワークフローについては、Figma から Claude Code へまたは Figma から Cursor へをご覧ください。
デザインハンドオフの前提
2023 年以前に作られたすべてのハンドオフツールは同じ暗黙の前提を持っています。もう一方の端には人間がいて、クリックして回り、値を読み取り、判断を下すということです。ツールの仕事は、開発者がデザイナーに常にコンテキストスイッチングしなくて済むほど明確に情報を表示することです。
この前提はこれらのツールの UX 全体に組み込まれています。
- 値はパネルに表示されますが、ファイルにエクスポートされません
- コードスニペットは選択ごとにオンデマンドで生成されますが、ファイル全体には対応しません
- 開発者はクリックによってデザインをナビゲートしますが、データ構造のクエリではありません
- 注釈は自然言語で書かれますが、機械可読フォーマットではありません
これは間違っていません。人間の開発者ワークフローには正しいです。ただ、エージェントには間違ったインターフェースです。
エージェントがデザインから実際に必要なもの
デザインタスクを受け取る AI エージェントには以下が必要です。
- 何かをする前に読むスペック — 制約、スコープ、トークン命名規則、バージョン注記。パネルにカーソルを合わせると示唆されるのではなく、明示的に書き出されたもの。
- 型付きトークン辞書 — 生の hex 値とピクセル数ではなく、名前付きで型付きのトークンとその値。エージェントは
#d96a3aがcolor.accentであることを知る必要があります。正しい Tailwind クラス名または CSS カスタムプロパティを生成するために。 - フルスクリーンレイアウトツリー — すべてのノードの階層、レイアウト関係、サイズ、トークン参照。オンデマンドで 1 つずつではなく、メモリ内に完全なツリーが必要です。
- 集約された文字列 — すべてのテキストコンテンツが正規化され、リソースキーが付いています。個別のノードに散在しているのではなく。
- 視覚的グラウンドトゥルース — エージェントが出力と比較できる参照レンダリング。2× でのデザインのスクリーンショット。
- コンポーネント名 — 生成されたコードが使用すべき正規の識別子。発明された名前ではなく。
従来のハンドオフツールはこれらのいずれも、エージェントが使用できる形で提供しません。figmascope アプリはこれらすべてを 1 つの zip で生成します — Figma URL を貼り付けてバンドルを取得します。アップロードなし、バックエンドなし。トークンフォーマットの詳細は AI エージェント向けデザイントークンエクスポートを参照してください。
スクリーンショットが失敗する理由
人々が最初に試みるクイックワークアラウンド:Figma から PNG をエクスポートし、「このスクリーンを実装してください」というプロンプトと一緒にエージェントに渡します。エージェントはコードを生成します。時には近く見えることもあります。しかし:
- スペーシング値は推測されます。エージェントは「約 16px のギャップ」を見て 14px または 20px を生成します。
- カラーは記述されますが抽出されません。「暖かいオレンジ」は
#D96A3Aではなく#E67A40になります。 - タイポグラフィは推測されます。フォントウェイトと行間が近似されます。
- コンポーネント名は発明されます。デザインが
ProfileTileと呼んでいるものをUserCardと呼ぶでしょう。 - 文字列は OCR されることもあれば、言い換えられることもあります。コピーが書き直されます。
これらのエラーはそれぞれ小さいです。合わせると、エージェントの使用による時間節約のほとんどを無効にするほどの手動修正が必要なコンポーネントになります。
例を交えた詳細な分析については why screenshots fail for AI codegen をご覧ください。
スクリーンショットはエージェントにデザインがどのように見えるかを伝えます。構造化コンテキストはデザインが何であるかを伝えます。
従来のハンドオフツールの評価
Zeplin
Zeplin の主要インターフェースは開発者がノードごとにデザインをインスペクトする Web アプリです。ファイルからカラーとタイポグラフィを集約する「Styleguide」機能があります — これがトークンエクスポートに最も近いものです。機械可読なレイアウトツリーはエクスポートしません。「Connected Components」機能は Storybook コンポーネントと Figma フレームをリンクしますが、ドキュメントには便利でもエージェントが新しいコードを生成するのに役立ちません。
Figma Dev Mode
ハンドオフに対する Figma のネイティブな回答です。コードパネルは選択されたノードから CSS を生成し、セットアップ時に Variable 名を表示します。人間の開発者向けに設計されています。ファイルレベルのエクスポートをサポートせず、レイアウトツリーを生成せず、コードスニペットは CSS のみです(フレームワーク非依存のトークンではありません)。Dev Mode シートが必要です。
Avocode
Avocode は Abstract に買収され、2022 年に廃止されました。「デザインハンドオフツール」の検索結果にまだ表示され、比較トラフィックを誘導するため言及します。現在は利用できません。
Locofy、Builder.io、Anima
これらのツールは Figma デザインから直接フレームワークコード(React、Next.js、HTML)を生成しようとします。問題空間に近いです — 出力がプロパティパネルではなくコードである必要があることを理解しています。しかしエージェントに与えるコンテキストではなく、デプロイするコードを生成します。その違いは重要です。ツール自体がコードを生成している場合、「Settings スクリーンを実装してください。すでに構築した UserAvatar コンポーネントを再利用して」と依頼できません。構造化されたコンテキストを与えた Claude Code や Cursor にはそう依頼できます。
詳細な比較については figmascope vs Locofy と figmascope vs Builder.io を参照してください。
エージェント対応ハンドオフとはどのようなものか
エージェント対応ハンドオフには、従来のハンドオフと区別する 3 つのプロパティがあります。
1. UI ではなくファイルアーティファクトである
ハンドオフアーティファクトは、コードと並んでリポジトリに存在するバージョン管理されたファイル(またはファイルセット)です。ログインが必要な共有リンクではありません。Web アプリのパネルでもありません。JSON、PNG、Markdown ファイルを含む design/ ディレクトリです。
これにはいくつかの結果があります。
- バージョン管理されます。デザインスプリント間のトークン変更を
git diffできます。 - オフラインで使用できます。エージェントはコード生成時に API を呼び出す必要がありません。
- 再現可能です。同じ Figma ファイル + figmascope バージョンが同じバンドルを生成します。
2. レンダリングされたテキストではなく型付きデータを使用する
tokens.json のデザイントークンは型付きです — $type: "color"、$type: "dimension" — Markdown テーブルの文字列だけではありません。screens/*.json のレイアウト IR には明示的なノード種類(stack、overlay、absolute、leaf)と $ref 記法を使ったトークン参照があります。strings.json の文字列にはドット記法のキーがあります。人間が読めるラベルだけではありません。
型付きデータはエージェントがプログラム的に推論できることを意味します。「background.$ref == color.surface のすべてのノードは同じ背景色を使用している」、「同じ背景に見えるすべてのノード」ではなく。
3. エージェントが最初に読むスペックドキュメントを含む
CONTEXT.md はデザイナーとエージェントの間の契約です。以下を説明します。
- スコープ内のフレームとスコープ外のフレーム
- 使用中のトークン命名規則
- サンプル —「
background: { $ref: 'color.surface' }のノードは Tailwind ではbg-surfaceを使用すべき」 - 既知の異常 — auto-layout がなく figmascope が子要素の位置からレイアウトを推論したフレーム
- 使用された figmascope のバージョンとエクスポートタイムスタンプ
従来のハンドオフには相当するものがありません。Dev Mode にはフレームごとの「開発者メモ」フィールドがありますが、構造なしにデザイナーが臨機応変に書いたものです。CONTEXT.md はファイルの実際の内容から一貫して生成されます。
ハンドオフワークフローのステップバイステップ
- デザイナーがフレームを準備完了とマーク — Figma でデザイナーは実装の準備ができたフレームにフラグを立てます(命名規則、「ready」ラベル、チームが使用するもの何でも)。
- 開発者が figmascope を実行 — figmascope.dev でファイル URL と PAT を貼り付け、エクスポートをクリックし、zip をダウンロードします。
- design/ に展開 —
unzip figmascope-<fileKey>.zip -d design/ - design/ をリポジトリにコミット — バンドルがハンドオフアーティファクトです。PR にはデザインバンドルと実装の両方が含まれます。
- エージェントが実装 — Claude Code または Cursor を
design/CONTEXT.mdと関連スクリーン JSON に向けます。エージェントはバンドルのトークン値、コンポーネント名、文字列を使ったコードを生成します。 - レビューと反復 — 開発者は
screens/*.pngと照合してレビューし、ギャップを記録し、プロンプトを改善します。
デザインが変わったら、ステップ 2 から繰り返します。_meta.json のタイムスタンプは、バンドルが最後に生成された時刻と Figma ファイルが最後に変更された時刻を教えてくれます — シンプルな鮮度チェックです。
{
"figmascopeVersion": "1.0.0",
"fileKey": "ABC123",
"exportedAt": "2026-05-11T09:14:00Z",
"figmaLastModified": "2026-05-10T18:30:00Z",
"frameCount": 8,
"warnings": [
{
"code": "layout-mode-none-inferred",
"message": "Frame 'Modal' has no auto-layout; child positions inferred from absolute coordinates.",
"nodeId": "2:34"
}
]
}
変わらないもの
エージェント対応ハンドオフはデザインレビューを置き換えません。エージェントは構造化コンテキストから実装しますが、人間が出力を検証します。インタラクション状態、アニメーション、レスポンシブ動作、アクセシビリティ — これらは静的なデザインデータだけからエージェントが近似できても保証できない判断が必要です。
構造化コンテキストはデザイナーと開発者の会話も置き換えません。トークンの名前が曖昧だったり、コンポーネントが静的フレームが示す以上に複数ブレークポイントにわたって異なる動作をする場合、それは会話が必要です。CONTEXT.md はファイルに何があるかをキャプチャしますが、ファイルが扱わないケースについてデザイナーが意図したことは推論しません。
変わること:安定したデザインからの静的スクリーンレイアウトの実装が、数時間の手動プロセスからプロンプトとレビューのワークフローになります。エージェントが機械的な翻訳を処理し、開発者が判断を処理します。
チェックリスト:デザインハンドオフはエージェント対応か?
- デザイントークンが機械可読 JSON ファイルにエクスポートされている(Figma Variables パネルや Notion ページだけではなく)
- トークンに hex 値やピクセル数だけでなくセマンティックな名前がある
- 各スクリーンのレイアウト階層がスクリーンショットだけでなく構造化データファイルとして利用可能
- UI 文字列が安定したリソースキーと共に集約されている
- コンポーネント名がデザインファイルとコードベースの間で正規かつ一貫している
- エージェントが実装前に読めるスペックドキュメントが存在する
- ハンドオフアーティファクトがコードと並んでバージョン管理されている
これらのほとんどが欠けている場合、エージェントは良いコンテキストを持って一から始めるよりも多くの修正が必要なコードを生成します。figmascope が生成するバンドルは 1 回のエクスポートでこれらすべてを満たします。各チェックリスト項目のケーススタディと詳細については figmascope ブログを、Dev Mode およびプラグインとの直接比較については Figma インスペクターの代替をご覧ください。