MarkupGenMarkupGen
ドキュメントリソースブログ活用事例比較
ログイン無料で変換する
  1. MarkupGen
  2. /ブログ
  3. /FigmaからCSSへ:実践的な変換ガイド
ブログに戻る

公開日 2026-08-20 · 執筆 MarkupGen チーム

FigmaからCSSへ:実践的な変換ガイド

FigmaからCSSへ:実践的な変換ガイド

簡単な答え: FigmaをプレーンCSSに変換するとは、Auto LayoutをFlexboxに変換し、塗り・spacing・タイポグラフィの各値をユーティリティクラスの近似値ではなく実際の数値として解決したうえで、依存関係のない出力を保つことを意味します。すべてのルールを完全にコントロールしたい場合や、あとから学習・インストール・上書きが必要なフレームワークを使いたくない場合に適した選択肢です。

プレーンCSSをフレームワークより選ぶ理由

MarkupGenが対応するすべての出力形式——プレーンCSS、Tailwind、Bootstrap、Bulma——は、同じソース、つまりFigmaフレームの実際の構造と値から出発します。プレーンCSSは、ファイルとブラウザの間に何も挟まらない、いわば最もシンプルな形式です。

  • クラス命名規則を覚える必要がない。 Tailwindのユーティリティスケールやbootstrapのコンポーネントクラスは強力ですが、それでも習得すべきひとつの体系です。プレーンCSSはCSSさえ知っていれば十分です。
  • フレームワークの重量がない。 未使用クラスをパージしても、フレームワークはビルドステップと、更新し続けるべき依存関係を追加します。プレーンCSSのエクスポートにはそのどちらもありません。
  • すべてのルールをその場で編集できる。 spacingの値を変更するには、ひとつの宣言を編集するだけで済み、目的のピクセル値に対応するユーティリティクラスを探し回る必要はありません。

そのトレードオフこそ、まさにTailwindが解決しようとしているものです。スケールを強制するフレームワークがなければ、誰かが同じ数値を再利用する規律を保たない限り、コードベースが成長するにつれてspacingや色の値に不整合が生じることがあります。単一のランディングページや小規模なサイトであれば、これが問題になることはほとんどありません。多くの貢献者が関わる大規模なプロダクトの場合は、判断する前にVanilla CSS vs Bootstrap vs Tailwindを読んでおく価値があります。

実際に変換が必要なもの

Figmaフレームは一見して分かる以上の構造を持っており、それぞれの要素はCSSの特定の部分に対応します。

Figmaのプロパティ CSS出力
Auto Layoutのdirection(方向) display: flex; flex-direction: row/column
Auto Layoutのgap gap
Auto Layoutのpadding padding
塗りの色 background-color(テキストの場合はcolor)
角の半径 border-radius
エフェクト(シャドウ、ぼかし) box-shadow / filter
テキストスタイル(サイズ、太さ、行の高さ) font-size、font-weight、line-height
リサイズ制約 単一の固定レイアウトではなく、レスポンシブな幅/高さのルール

これらはどれも特別なものではなく、開発者がデザインをピクセル単位で手作業で再現するときに行うのと同じマッピングです。違いは、スクリーンショットを目視で推測するのではなく、フレームの実際の構造と値から行っている点です。

MarkupGenがCSSを生成する仕組み

ワークフローは出力形式にかかわらず同じ4ステップです。MarkupGenプラグインを使ってFigmaからフレームをエクスポートすると、構造・スタイル・画像がまとめて取り込まれます。次にAIが、画像を近似するのではなく、その実際の構造からマークアップを構築します。調整が必要な場合はアプリ内エディタでコンテンツ・フォント・レイアウトを微調整し、最後に最終パッケージをエクスポートします。

プレーンCSSに限って言えば、生成されるスタイルシートはフレームの実際の色とspacingの値を使用し、フレームワークの事前定義されたスケールに丸め込むことはありません——#3B82F6に設定された塗りは、最も近いTailwindのblueではなく、そのままの値として出力されます。Auto LayoutはFlexbox構造に自動的にマッピングされ(プロパティごとの詳しい対応関係はAuto Layout to CSSを参照)、レスポンシブな挙動も、別途手作業のパスを追加するのではなく、フレームのリサイズ制約から生成されます。出力されるHTMLはデフォルトでネストした<div>よりもセマンティックな要素を優先しており、これは保守性だけでなく、アクセシビリティやSEOの観点でも重要です。

Figmaの変数をCSSカスタムプロパティに変換する

Figmaの変数(色、タイポグラフィ、spacing、角の半径、エフェクト)は、デザインファイルの中でデザインシステムに最も近い存在であり、概念的にはCSSカスタムプロパティ——スタイルシート内のすべてのルールから参照できる、--name: valueのペアからなる:rootブロック——に対応します。前述の通り、MarkupGenの現在のCSS出力は、この:root変数層を自動的に生成するのではなく、各プロパティを要素ごとの具体的な値として解決します。そのため、このマッピングを構築するのは手作業のステップになります。とはいえ、パターンさえ理解すれば機械的な作業です。

Figmaの変数 値の例 CSSカスタムプロパティ
color/primary #3B82F6 --color-primary: #3B82F6;
color/text-muted #6B7280 --color-text-muted: #6B7280;
spacing/md 16px --spacing-md: 16px;
radius/lg 12px --radius-lg: 12px;
shadow/card 0 4px 12px rgba(0,0,0,.08) --shadow-card: 0 4px 12px rgba(0,0,0,.08);
font/heading 24px / 600 / 1.2 --font-heading-size: 24px; --font-heading-weight: 600; --font-heading-line: 1.2;

守っておく価値のある命名規則があります。並行する別の命名体系を新たに考案するのではなく、Figmaの変数自身のグループ/名前の構造をそのまま踏襲すること(color/primary → --color-primary)です。そうすればデザインが進化していっても、両者を照らし合わせやすい状態を保てます。変数がカスタムプロパティとして存在するようになったら、エクスポートされたCSSの中で、生成された具体的な値をvar(--color-primary)のような参照に置き換えていきます。

この手法に頼る前に知っておく価値のある2つの制約があります。まず、すべてのFigma変数がひとつのCSSプロパティにきれいに対応するわけではありません——デザインの異なる箇所でボーダーの色とテキストの色の両方に使われている変数があったとしても、その用途が本質的に異なるのであれば、コード上でも紐づけたままにすべきとは限りません。また、レスポンシブな変数(ブレイクポイントごとに変化するspacingの値など)は、関連する各メディアクエリの中で再宣言する必要があります。単一の:rootカスタムプロパティは、一度にひとつの値しか保持できないためです——Figmaのブレイクポイントごとのフレームは、CSSのカスケードに基づくレスポンシブな上書きへ自動的には変換されません。

公開前に生成されたCSSをレビューする

  • 値のズレを確認する。 一貫性を強制するユーティリティスケールがないため、padding: 15pxと別の場所のpadding: 16pxのような、本来同じ数値であるべき類似値がないかスキャンしましょう。
  • フレームのデフォルトサイズだけでなく、実際のブレークポイントでレスポンシブな挙動を確認する。ひとつのスクリーンショットを信頼するのではなく、ブラウザの幅を実際にリサイズして確認しましょう。
  • クラス/セレクタ名を確認する。 プロジェクトに独自の命名規則(BEM、CSS Modulesなど)がある場合は、マージ前に調整しましょう。
  • アプリ内エディタを使う。 エクスポート後のコードを直接手で編集するのではなく、コンテンツやレイアウトの調整はアプリ内エディタで行い、再エクスポートすることでズレが生じないようにしましょう。

各エクスポートには自動でAI品質スコアも付与され、ライブプレビューを元のデザインと比較します。手動レビューの前に、公開できる状態かどうかを素早く判断する目安になります。

よくある質問

CSS出力はCSSカスタムプロパティ(変数)を使いますか? 出力は、変数駆動のテーマレイヤーではなく、要素ごとに標準的で直接編集可能なルールを重視しています。プロジェクトでカスタムプロパティの仕組みを使っている場合は、生成された値を手作業でそこに組み込むことを想定しておいてください。

レイアウトはデフォルトでレスポンシブですか? はい。ブレークポイントは、あとから追加されるのではなく、フレームのAuto Layoutのリサイズ制約から生成されます。個別のモバイル/デスクトップレイアウトでこれがどう機能するかは、Figmaのレスポンシブデザイン:Mobile・Desktopレイアウトの仕組みを参照してください。

Tailwind出力とはどう違いますか? 元になるソースデータは同じですが、行き着く先が異なります。Tailwind出力は値を最も近いユーティリティクラスに解決します(スケール外の値には任意値のフォールバックを使用)。プレーンCSS出力は、デザインの正確な値を標準的な宣言としてそのまま保持します。プロジェクトがすでにユーティリティフレームワークを標準にしているかどうかで選んでください。

自分のデザインで試してみる

プレーンCSSのエクスポートとフレームワークベースのエクスポートのどちらを選ぶか迷っている場合、最も早い見分け方は、同じデザインで両方を実際に見比べてみることです。MarkupGenを無料で試すか、Figma→HTML変換ガイドで全体像を確認してください。まず概要だけ知りたい方は、Figma to CSSコンバーターのページをご覧ください。

試す: Figma to CSS

関連記事

Figma to HTML vs React vs Tailwind:どれを選ぶべきかブログ

Figma to HTML vs React vs Tailwind:どれを選ぶべきか

MarkupGenで最も多く聞かれる3つの出力形式に関する意思決定ガイド——FigmaをいつHTML/CSSに書き出すべきか、いつReactに書き出すべきか、そしてTailwindが実際どこに当てはまるのか。

続きを読む
Figma to Code:React・Vue・CSSフレームワーク対応まとめブログ

Figma to Code:React・Vue・CSSフレームワーク対応まとめ

MarkupGenはFigmaのデザインをReactやVue 3コンポーネント(Svelte・Angularにも対応)、またはTailwindやBootstrapなどのHTML/CSSに変換できます。

続きを読む
公開前にAI生成HTMLを評価する方法ブログ

公開前にAI生成HTMLを評価する方法

「見た目が正しい」を超えて、AIによるFigma-to-code出力を判断するための再現可能なチェックリスト——視覚的な忠実度、セマンティクス、レスポンシブ性、アクセシビリティ、そして重量。

続きを読む
Figma-to-HTML出力はSEOに対応しているか:確認すべきポイントブログ

Figma-to-HTML出力はSEOに対応しているか:確認すべきポイント

変換されたHTMLは、デザインと見た目が同一でもSEOを損なうことがある。Figma-to-codeのエクスポートを公開する前に確認すべきチェックリスト。

続きを読む
Figmaからアクセシブルなhtmlへ:実践ガイドブログ

Figmaからアクセシブルなhtmlへ:実践ガイド

Figma→HTMLのワークフローでアクセシビリティに実際に必要なこと——セマンティックマークアップ、見出し、ARIA、フォーム、コントラスト、キーボード操作について解説します。

続きを読む
FigmaのデザイントークンからTailwindへ:色・タイポグラフィ・spacingブログ

FigmaのデザイントークンからTailwindへ:色・タイポグラフィ・spacing

トークンからユーティリティへのマッピングは、Figmaファイル自体の一貫性次第でしか機能しない。値がTailwindのスケールから外れたときに実際に何が起きるかを解説。

続きを読む
比較

MarkupGen vs. Builder.io:単独の変換ツールか、プラットフォームのプラグインか

Builder.ioのVisual Copilotは、より大きなCMSプラットフォームの中でFigmaを既存のコードベースにマッピングします。MarkupGenは単独のFigma-to-HTML/CSS変換ツールです。そのトレードオフを解説します。

続きを読む
マーケティングチームのためのMarkupGen活用事例

マーケティングチームのためのMarkupGen

デザイナーがFigmaで作ったキャンペーンのランディングページを、開発チケットを起票せずスプリントを待たずに公開しましょう。

続きを読む

次のFigmaデザインを数分でコードに変換しましょう

無料で始めて、どんなFigmaファイルからでもきれいなHTML、CSS、Reactを書き出せます。

無料で変換する
MarkupGenMarkupGen© 2025 MarkupGen. 無断転載を禁じます。
ブログ活用事例比較リソース
会社概要ドキュメントプライバシー利用規約お問い合わせ