TL;DR: Figma Dev Mode・Code Connect・デザイントークンAPIの3レイヤーを組み合わせることで、デザイン→コード変換の手戻りを大幅に削減できる。本記事では各機能のセットアップ手順・Claude Code MCP連携・よくある失敗パターンを実践的に解説する。
はじめに:デザイン→コード変換の現状課題
デザインとコードの乖離は、多くのチームが抱える慢性的な問題だ。「デザインと実装で微妙にパディングが違う」「コンポーネントのpropsが増えるたびにFigmaにフィードバックし直す」——こうした手戻りに週数時間を費やすエンジニアは少なくない。
2024〜2026年にかけてFigmaのエコシステムは大きく進化した。Figma Dev Mode の正式提供、Code Connect によるコンポーネントマッピング、Figma Variables API を使ったデザイントークン自動出力、そして Figma AI(Make) による直接コード生成——これらを組み合わせれば、手動のhandoffコストを劇的に削減できる。
ただし「どの機能をどのシナリオで使うか」の判断が難しい。本記事では、3つのレイヤーを整理したうえで、シナリオ別の最短ルートを案内する。
3レイヤー構造:Figmaのデザイン→コード変換
本記事で扱う機能を3つのレイヤーに整理する。
┌─────────────────────────────────────────────────────────┐
│ Figma デザイン→コード変換の3レイヤー │
├─────────────────────────────────────────────────────────┤
│ │
│ Layer 1: コード参照 Figma Dev Mode │
│ (デザイン仕様をコード形式で閲覧) │
│ ↓ │
│ Layer 2: コンポーネント Code Connect │
│ マッピング (FigmaコンポーネントID ↔ 実装) │
│ ↓ │
│ Layer 3: デザインシステム Figma Variables API │
│ トークン同期 → CSS変数/design-tokens.json │
│ │
│ [オプション] AI加速 │
│ Figma AI (Make) : プロトタイプ→コード直接生成 │
│ Claude Code MCP : FigmaデータをLLMプロンプトに注入 │
│ │
└─────────────────────────────────────────────────────────┘
各レイヤーは独立して導入できるが、組み合わせることで効果が最大化する。
Figma Dev Mode 2026:HandoffからAIアシストへ
Dev Modeが提供するもの
Figma Dev Mode は、デザインファイルをエンジニアが参照しやすい形で表示する機能だ(公式ドキュメント)。主な機能は以下の通り。
- コードパネル: 選択したフレーム/コンポーネントのCSS・iOS・Androidコードを自動生成
- 寸法・スペーシング: px・rem値のワンクリックコピー
- ステータス管理: Ready for Dev / In Progress / Done などのステータスタグ
- コンポーネントリンク: Code Connectとの統合で実コードへのリンクを表示
Dev ModeはFigma Professional/Organization/Enterpriseプランで利用可能(経験則: 2名以上のチームではOrganizationプランが費用対効果が高い)。
Dev Modeのコード生成と限界
Dev Modeのコード生成機能は「仕様参照の補助」として有用だが、コンポーネントの実装コードをそのまま出力するわけではない 点に注意が必要だ。生成されるのは選択レイヤーのスタイル値であり、Reactコンポーネントのprops構造やロジックは含まれない。
/* Dev Modeが生成するCSS(スタイル値の参照用) */
.button-primary {
display: flex;
padding: 12px 24px;
background-color: #0d99ff;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
}
この限界を補うのがCode Connectだ。
Code Connect:コンポーネントマッピングの設定手順
Code Connect は、FigmaのコンポーネントIDと実装コードを紐付けるオープンソースツールだ(GitHub)。Dev Modeのコードパネルに、自動生成コードではなく実際のコンポーネントの使用例を表示できるようになる。
セットアップ
# インストール
npm install --save-dev @figma/code-connect
# または pnpm
pnpm add -D @figma/code-connect
# Figma CLIでコンポーネント一覧を取得
figma connect create --token <FIGMA_TOKEN> <FIGMA_FILE_URL>
FIGMA_TOKEN はFigmaアカウント設定の「Personal access tokens」から発行する(公式ガイド)。
マッピング定義ファイルの書き方
figma connect create コマンドを実行すると、プロジェクト内のコンポーネントを自動スキャンし、.figma.tsxファイルのひな形が生成される。
// src/components/Button/Button.figma.tsx
import figma from "@figma/code-connect";
import { Button } from "./Button";
figma.connect(Button, "https://www.figma.com/file/ABC123/.../Button?node-id=1-234", {
props: {
// Figmaのpropsと実装のpropsをマッピング
label: figma.string("Label"),
variant: figma.enum("Variant", {
Primary: "primary",
Secondary: "secondary",
Danger: "danger",
}),
disabled: figma.boolean("Disabled"),
size: figma.enum("Size", {
Small: "sm",
Medium: "md",
Large: "lg",
}),
},
example: ({ label, variant, disabled, size }) => (
<Button variant={variant} disabled={disabled} size={size}>
{label}
</Button>
),
});
publishとDev Modeへの反映
マッピング定義ができたら、figma connect publish で Figmaにアップロードする。
# CI/CD に組み込む場合
figma connect publish --token $FIGMA_TOKEN
# ドライランで確認
figma connect publish --token $FIGMA_TOKEN --dry-run
publish後、Figma Dev Modeでコンポーネントを選択すると、自動生成コードの代わりに実際のコンポーネント使用例が表示される。CI/CDに組み込み、デザイン更新時に自動publishするのがベストプラクティスだ(公式値: publishは通常1〜5秒で完了)。
デザイントークンの受け渡し:Figma Variables → CSS変数
Figma Variables APIでトークンをJSON出力
FigmaのVariablesは、カラー・スペーシング・タイポグラフィなどのデザイントークンをFigmaファイル内で管理する機能だ(Variables API ドキュメント)。REST APIでJSON形式のトークンを取得できる。
# Figma Variables APIでトークン取得
curl -H "X-Figma-Token: $FIGMA_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/variables/local"
レスポンスには変数の名前・値・モード(ライト/ダーク等)が含まれる。
style-dictionaryでCSS変数に変換
取得したJSONをそのまま使うのではなく、style-dictionary でCSS変数・JS定数・iOS Swift等の形式に変換するのが一般的だ。
// style-dictionary.config.js
const StyleDictionary = require("style-dictionary");
module.exports = StyleDictionary.extend({
source: ["tokens/figma-variables.json"],
platforms: {
css: {
transformGroup: "css",
buildPath: "src/styles/",
files: [
{
destination: "tokens.css",
format: "css/variables",
options: {
outputReferences: true,
},
},
],
},
js: {
transformGroup: "js",
buildPath: "src/",
files: [
{
destination: "tokens.js",
format: "javascript/module",
},
],
},
},
});
# トークン変換実行
npx style-dictionary build
生成されたCSS変数は以下のような形式になる。
/* src/styles/tokens.css(自動生成) */
:root {
--color-primary-500: #0d99ff;
--color-neutral-100: #f5f5f5;
--spacing-4: 16px;
--spacing-8: 32px;
--font-size-base: 16px;
--radius-md: 8px;
}
このパイプライン(Figma Variables → API → style-dictionary → CSS変数)をCI/CDに組み込むことで、デザイン変更が自動的にコードへ反映される。デザインシステムの詳細についてはAIとデザインシステムの共創も参照してほしい。
Figma AI機能の活用:MakeとFirst Draftの使いどころ
Figma AI(2025年〜)は、テキスト指示からUIを生成する機能群だ(Figma Config 2025ブログ)。
- First Draft: テキスト説明からワイヤーフレームを生成。プロトタイピング初期段階で有用
- Make: FigmaデザインからHTMLプロトタイプを直接生成。React変換には調整が必要
ただし、Figma AIが生成するコードはプロトタイプ品質であり、本番コードベースへの直接統合は難しい。以下の使い分けを推奨する。
| シナリオ | 推奨ツール |
|---|---|
| 既存コンポーネントの使用例参照 | Code Connect |
| デザイントークンの自動同期 | Variables API + style-dictionary |
| 新規プロトタイプのHTMLスケッチ | Figma Make |
| 本番Reactコードの生成支援 | Claude Code + MCP |
Claude Code との連携:MCPでデザインデータをプロンプトに渡す
Figma MCP Serverの仕組み
Figma MCP Server は、FigmaのデザインデータをModel Context Protocol(MCP)経由でLLMに渡すブリッジだ。Claude Codeと組み合わせることで、デザインを参照しながらコードを生成できる。
Claude Codeでの設定方法はClaude Code MCP連携の実践ガイドで詳しく解説しているが、Figma連携の要点を以下に示す。
// .claude/mcp_settings.json への追記例
{
"mcpServers": {
"figma": {
"command": "npx",
"args": ["@figma/mcp-server"],
"env": {
"FIGMA_TOKEN": "${FIGMA_TOKEN}"
}
}
}
}
MCPでできること・できないこと
MCPを通じてClaude Codeは以下の操作が可能になる。
- Figmaファイルのコンポーネント一覧取得
- 特定コンポーネントのデザイントークン・プロパティ取得
- Code Connectマッピングの参照
- スクリーンショットの取得(視覚的コンテキスト)
一方、以下はMCP経由ではできない(または要注意)。
- Figmaファイルへの書き込み(設定によっては可)
- 大規模ファイルの全件取得(パフォーマンス問題)
Claude CodeにFigmaのコンポーネント仕様を渡すプロンプト例は以下の通り。
Figma MCPで Button コンポーネント(node-id: 1-234)の仕様を取得し、
以下の要件で React コンポーネントを実装してください:
- TypeScript
- Tailwind CSS でスタイリング
- 既存の design-tokens.css の CSS変数を使用
- アクセシビリティ対応(aria-label, disabled状態)
AIツール比較についてはClaude Code vs Codex:AIコーディングツールの選び方も参考になる。
やりがちな失敗パターンと対策
失敗1: コンポーネントIDのURL形式ミス
Code ConnectのマッピングファイルにFigmaのURLを記載する際、node-id の形式がURLエンコードされている場合がある。
# エラーになりやすいURL(URLエンコード済み)
https://www.figma.com/file/ABC123/.../Button?node-id=1%3A234
# Code Connectでは「-」区切りで指定する
https://www.figma.com/file/ABC123/.../Button?node-id=1-234
対策: figma connect create コマンドを使えばURLを自動解決してくれる。手動記載は避ける。
失敗2: Figma Variablesのモード未対応
ライト/ダークモードを持つデザインシステムでVariables APIを使うと、モードごとに別々のJSON出力が必要になる。モードを意識せずに変換すると、ダークモードのトークンが上書きされる。
// モードを考慮したスクリプト例
async function exportTokensByMode(fileKey, token) {
const res = await fetch(
`https://api.figma.com/v1/files/${fileKey}/variables/local`,
{ headers: { "X-Figma-Token": token } }
);
const { meta } = await res.json();
// モードごとに分けて出力
const modes = Object.values(meta.variableCollections).flatMap(
(col) => col.modes
);
for (const mode of modes) {
// mode.name("Light"/"Dark")ごとに出力ファイルを分ける
await writeTokensForMode(meta, mode);
}
}
対策: モードを明示的に分けてCSS変数を生成し、[data-theme="dark"] 等のセレクタで切り替える設計にする。
失敗3: トークン名の命名規則不一致
Figma側のVariables名(例: Color/Primary/500)とstyle-dictionary出力(例: color-primary-500)の命名規則が一致しないと、コンポーネント実装時に混乱が生じる。
対策: 命名規則を token-category-variant-scale で統一し、Figma Variables名もこの規則に揃える(公式値: style-dictionaryはスラッシュ/を自動的にハイフン-に変換する)。
失敗4: Code Connectのpublish忘れ
マッピングファイルを更新してもpublishしないと、Dev Modeに反映されない。ローカルでの変更を反映し忘れたまま放置すると、デザイナーが誤ったコード例を参照するリスクがある。
対策: GitHubActionsやCI/CDにpublishステップを組み込む。
# .github/workflows/figma-code-connect.yml
name: Figma Code Connect Publish
on:
push:
branches: [main]
paths: ["src/**/*.figma.tsx"]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pnpm install
- run: pnpm figma connect publish --token ${{ secrets.FIGMA_TOKEN }}
AIペアプログラミングのワークフロー改善についてはAIペアプログラミングのパターン集も参照してほしい。
ツール選択ガイド:シナリオ別の最短ルート
コンポーネント有無・デザイントークン管理状況で最短ルートを選択する。
| シナリオ | コンポーネント実装 | トークン管理 | 推奨アプローチ |
|---|---|---|---|
| A | 既存あり | Figma Variables | Code Connect + Variables API |
| B | 既存あり | なし/CSS直書き | Code Connect のみ |
| C | 新規実装 | Figma Variables | Variables API → style-dictionary → Claude Code MCP |
| D | 新規実装 | なし | Figma Make → 手動Reactへ移植 |
シナリオA(推奨) が最も自動化度が高い。既存のReactコンポーネントライブラリにCode Connectを追加し、Figma VariablesをCSS変数として同期するパイプラインを構築すれば、デザイン変更がほぼ自動でコードに反映される。
シナリオAの実装フロー:
Figma デザイン更新
↓ Variables変更
Figma Variables API (自動取得)
↓ CI定期実行
style-dictionary (CSS変数生成)
↓ PRで差分確認
フロントエンドコードに反映
Figma コンポーネント更新
↓ figma.tsx修正 + push
Code Connect publish (CI自動)
↓
Dev Modeのコード例更新
FAQ
Q1: Figma Dev ModeはFigma無料プランでも使えますか?
Dev ModeはFigma Professional以上のプランが必要です(2026年現在)。ただしビューアー(閲覧専用)での限定的な利用は無料プランでも可能な場合があります。詳細はFigma公式料金ページをご確認ください。
Q2: Code ConnectはVue.jsに対応していますか?
2025年時点でVue対応はプレビュー段階です(公式GitHub)。React・HTML・SwiftUI・Composeは正式対応済みです。
Q3: Figma Variables APIで取得したトークンをそのままコードで使えますか?
APIレスポンスはFigma独自のJSON形式であるため、style-dictionaryなどのツールで変換が必要です。W3C Design Tokens仕様への変換プラグインも存在します。
Q4: Claude CodeからFigmaのデザインを直接参照するにはどうすれば?
Figma MCP Serverを設定することでClaude CodeがFigmaファイルを読み取れます。設定手順はClaude Code MCP連携の実践ガイドをご参照ください。
Q5: Figma AIが生成したコードを本番環境で使えますか?
Figma Make(AI生成)のコードはHTMLプロトタイプ品質であり、本番環境への直接適用は推奨されません。コンポーネント設計・アクセシビリティ・パフォーマンス最適化の観点から、Claude CodeなどのAIコーディングアシスタントを使った実装を推奨します。
まとめ:3レイヤーを組み合わせた最短ルート
本記事で紹介した3レイヤーの要点を整理する。
| レイヤー | ツール | 主な効果 |
|---|---|---|
| Layer 1 | Figma Dev Mode | コード仕様の可視化・参照コスト削減 |
| Layer 2 | Code Connect | 実コンポーネントとデザインの1:1マッピング |
| Layer 3 | Variables API + style-dictionary | デザイントークンの自動同期 |
導入の優先順位は Layer 2(Code Connect)→ Layer 3(トークン同期)→ Layer 1(Dev Mode活用) の順が実務上の効果を早く実感できる(経験則)。
Code Connectだけでも「デザイナーと実装者が異なるコード例を見る」問題はほぼ解消される。まず小さく始めてPDCAを回してほしい。
関連記事:
- AIとデザインシステムの共創 — Storybook + Chromaticによる品質ゲート設計
- Claude Code MCP連携の実践ガイド — MCPサーバー設定の詳細
- AIペアプログラミングのパターン集 — 実装ワークフロー改善
