Claude Code to Figmaでデザインシステムはどこまで保持される?検証してみた

Claude Code to Figmaでデザインシステムはどこまで保持される?検証してみた

2026.03.03

私を含め受託開発のデザイナーは、要件定義の段階でUIを作り画面フローを整理して開発に入ることが多いと思います。
開発が進むと仕様変更や文言修正が入り、いつの間にか「最新版はFigma?実装?」が曖昧になりがちです。
実装側が最新になっているならその状態をできるだけ正確にFigmaへ戻してデザインデータを最新化させたい……そんな時がありますよね。

Figmaが公開した「Claude Code to Figma」ならコードを正としてFigmaを更新する運用が現実になるかもしれません。

https://www.figma.com/blog/introducing-claude-code-to-figma/

今回は 『Figmaで作ったMaterial 3のUIを、Claude CodeでReact + MUIに実装し、Claude Code to FigmaでFigmaに戻す』 という検証をしました。
狙いは「AIを挟んだ往復でデザインシステム(構造/トークン/余白ルール)はどこまで保持されるのか?」を実務に近い手順で確認することです。

検証したこと

見た目の崩れだけではなく「設計情報が戻るか」を中心に見ていきます。

  • コンポーネント構造が戻るか
  • Variables参照が残るか
  • Auto Layoutが運用できる形で残るか
  • 影や状態表現が保持されるか
  • レイヤー名などの命名規則が残るか

検証環境

  • Figma Desktop App v126.1.2
  • Claude Code v1.0.44
  • モデル claude-sonnet-4-6
  • React v19.2.4
  • @mui/material v7.3.8
  • @emotion/react v11.14.0

Figmaの準備

Material 3 Design Kitを使用しUIを作成しました。
2つ以上配置しているコンポーネントは、StyleやStateを変えています。

画面構成

  1. App Bar
  2. Text
  3. Horizontal card
  4. List item
  5. Stacked card
  6. Bottom Navigation固定

Figmaの画面構成 ProductListScreen(レイヤー名が見える状態)

Material 3 Design Kitに内包されているColorやSpacing/Radiusを個別にVariablesに登録し、余白が固定値や角丸のトークンとして参照されるかを確認できるようにしました。

実装側の条件

MUIのテーマ機能を使って色・角丸・余白をトークンとしてまとめて管理する前提で実装します。
力技で見た目を寄せると検証にならないため、テーマ機能で触ってよいのは palette / shape.borderRadius / spacing のみとしました。
components.*.styleOverrides は使いません。

また、AIに実装を頼むと画面下部の要素(BottomNavigationなど)が省略されることがあったため、プロンプトは「省略なし+順番指定」に指示をしています。

theme(テーマ)とは

MUIで「アプリ全体の見た目ルール(色・余白・角丸など)」をまとめた設定のことです。
createTheme で作り、ThemeProvider でアプリ全体に適用します。

プロンプト

VSCode上のClaude Codeで以下を指示しました。

React + MUIで、次のFigmaを参考に「ProductListScreen」1画面を実装してください(既存実装のリファクタでもOK)。
Figma:
https://www.figma.com/design/……………………………………
対象フレーム: ProductListScreen
条件(themeでトークン化):
- createTheme + ThemeProvider を使って theme を定義・適用する
- themeで設定してよいのは次の3つだけ
  1) palette(primary/secondary/background/text/divider など)
  2) shape.borderRadius(例: 12)
  3) spacing(基準は 4px。spacing(4)=16px、spacing(3)=12px、spacing(20)=80px が成立するように)
- components の styleOverrides は使わない
- 画面下まで、Figmaにある要素を省略せずに実装する
実装するUI(上から順に):
1) AppBar(タイトル: "Label")
2) 説明テキスト3行(Overline / Label text / Supporting line text)
3) Horizontal card 2枚(A/B)
4) List item 2つ(片方はSwitch)
5) Stacked card 2枚(横スクロール)
6) BottomNavigation固定(タブ3つ、showLabelsで常時ラベル表示)
実装:
- src/theme.js を作成
- src/main.jsx で ThemeProvider + CssBaseline を適用
- src/ProductListScreen.jsx を作成/修正
- src/App.jsx で ProductListScreen を表示
- 変更/作成ファイル一覧と、各ファイルの内容を提示してください

Claude Code to Figma

  • MCP経由で generate_figma_design を実行し、Web(localhost)の画面をFigmaに取り込みました。
  • 「Send to Figma」をクリックすることで、Figmaにインプットされます。
  • 今回の環境では、Figma MCPツールが読み取り専用になっており既存フレームの複製やVariablesの値編集、既存ノードの色・プロパティ変更といった編集を直接できませんでした。
    結果としてClaude Code to Figmaは generate_figma_design(Webキャプチャ)に寄る形になります。

CodetoFigma Webスクリーン Send to Figma : Entire screenが出ている状態

開いているFigmaファイルにキャプチャ結果のフレームが追加されていれば、取り込みは成功です。

Claude Code to Figmaで出力したUI

取り込み後のフレーム(設計情報が簡略化される)

検証結果

見た目の大枠(AppBar / Card / List / BottomNavigation)は揃うが、設計情報の保持は難しい という結果でした。

観点 結果 根拠
コンポーネント構造 できていない Mui*Root / Styled(div) / Container など実装由来の構造として生成され、M3のコンポーネント(Design Kitのインスタンス)として復元されない
Variables参照 できていない Fill/StrokeがHEX固定値になり、Variables参照になっていない
Auto Layout 一部できた ボタンにはAuto Layoutが付くが、画面全体・カードなどはFrame(固定配置)が主体で混在する
影と状態 できていない カードを選択してもEffectsが空で、Elevationが設計要素として保持されない
命名 できていない Horizontal card_A/B 等の命名が保持されず、Containerが連続され追跡が難しい

まとめ

  • Claude Code to Figma経由で、実装結果をFigmaに反映できました。
  • Figmaのデザインデータがなくコードのみが用意されている場合とても便利です。
  • Material 3の設計情報(コンポーネント構造、Variables参照、命名)を保持したまま往復するのは難しく、Auto Layoutも部分的に残る形になりました。
  • デザインシステムを維持して往復する用途では、1度の指示では再現が難しく追加の指示やプロンプトの調整が必要だと感じました。

ハマりメモ

今回の検証でちょっとハマってしまったので備忘のために書いておきます。

  • generate_figma_design は疎通確認のつもりで叩くとリクエストが大きくなりがちなので、編集は一切禁止と指示します。
  • mcp.json はプロジェクト内の .vscode/mcp.json にあり、Figma MCPの接続先は type: "http" / url: "http://127.0.0.1:3845/mcp" になっていた(= ローカルのFigma MCPサーバーを参照している)
  • VSCode側でサーバー状態が Running になり、Discovered 6 tools / 3 prompts と出れば、少なくとも「VSCode → Figma MCP」の疎通は成立している目安になる。
  • http://127.0.0.1:3845/mcp をブラウザで直接開くと Invalid sessionId が返ることがあるが、これは失敗とは限らない(MCPはブラウザではなく、VSCodeなどのクライアントがセッション付きで呼ぶ前提のため)

破綻はありますが、こんなに簡単にAIを通じてFigmaとコードを行き来できるようになりとても驚いています。
今回の検証ではClaude Code to Figmaの理解とプロンプトスキルが足りないことを実感しました。
引き続きClaude CodeとFigmaについて勉強していきます。

最後までお読みいただきありがとうございました。

この記事をシェアする

FacebookHatena blogX

関連記事