CSS @function でデザインシステムをネイティブ化 — 受託で進めるトークン設計 2026 | GH Media
URLがコピーされました

CSS @function でデザインシステムをネイティブ化 — 受託で進めるトークン設計 2026

URLがコピーされました
CSS @function でデザインシステムをネイティブ化 — 受託で進めるトークン設計 2026

CSS-Tricks が Almanac に @function(2026-06-03 に RSS 掲載)を追加し、CSS の @function 規則が解説の対象になりました。@function --name(--arg) { result: ...; } という構文で、「引数を取り、内部にロジックを含み、値を返す」再利用可能なカスタム関数を、Sass などのビルド時プリプロセッサや JS に頼らず、ネイティブ CSS だけで定義できるようになったことが要点です。@property で型付きのカスタムプロパティをトークンとして定義し、clamp()if() と組み合わせれば、デザイントークンの計算・テーマ切替・レスポンシブな値の決定を、ブラウザのカスケードの中で宣言的に完結させられます。

受託 Web 制作の現場では、「デザインシステムのトークンや色・余白の計算ロジックを Sass の関数や JS のテーマランタイムに閉じ込め、ビルドパイプラインと密結合させた結果、トークンを1つ変えるたびに再ビルドと依存追従が必要になり、保守が重くなる」という事故が繰り返されてきました。受託で Web 制作を支える立場では、これは 「Sass を捨てられるか」ではなく、「どのトークンをネイティブ CSS に寄せ、どの計算を Sass に残し、未対応ブラウザのフォールバックまで含めて宣言的に引き渡せるか」を設計に組み込む課題だと捉えています。これまで AIレディなデザインシステムを受託で整える(GH Media) で扱った トークン設計の考え方モダンCSSのネイティブ機能を受託で使う(GH Media) で扱った ネイティブ CSS の取り込み方針と接続して、本記事では 「デザインシステムのCSSネイティブ化支援」受託パッケージとして整理します。

なぜ「いま」デザインシステムをCSSネイティブに寄せるのか

観点Sass / JS でのトークン管理(従来)ネイティブ CSS @function / @property(2026)
実行タイミングビルド時に値が固定ランタイムにカスケードで決定
依存プリプロセッサ / テーマ JS が必要追加ツール不要
テーマ切替クラス差し替え + 再計算カスタムプロパティの上書きで即時
計算ロジックSass 関数 / JS に閉じる@function で CSS に宣言
型の保証規約頼みで型は不明@propertysyntax を型付け
保守パイプラインと密結合ブラウザ標準で陳腐化しにくい

つまり 「Sass や JS でトークンを計算する」ことと「保守しやすく依存の少ないデザインシステムを届ける」ことは別物であり、受託でも 「計算を CSS に寄せ、トークンを型付けし、フォールバックを設計して引き渡す」ことが品質の前提になりつつあります。これにより 「ビルド依存を減らした構成」を成果物として保証できます。ただし後述の通り、Sass を全部捨てるのではなく、残すべき箇所は残す切り分けが肝心です。

@function でできること

① 引数を取る関数を定義する

@function --name(--arg) { result: ...; } の形で、引数を受け取って計算結果を返すカスタム関数を定義できます。result 記述子に返したい値を書き、呼び出し側では通常の関数のように --name(値) と書きます。Sass の @function に相当する役割を、ビルドを介さずネイティブ CSS で担えるのがポイントです。

② @property による型付きトークン

@property でカスタムプロパティに syntax(型)・inheritsinitial-value を宣言すると、トークンが「ただの文字列」ではなく型を持った値になります。<color><length> として宣言しておけば、不正な値が混ざってもプロパティ全体を巻き込んで壊さず、アニメーションや補間も型に沿って安定します。トークン基盤の土台として有効です。

③ clamp / if との組合せ

@functionresult の中で clamp() を使えばレスポンシブな値を、if() を使えば条件分岐したトークンを返せます。下の例は、引数で受け取った最小・最大から流体的なサイズを返す関数と、テーマ用の型付きトークン定義です。

/* 型付きトークン(@property) */
@property --brand-accent {
  syntax: '<color>';
  inherits: true;
  initial-value: #1a73e8;
}

/* 引数を取り、clamp で流体サイズを返す関数 */
@function --fluid(--min, --max) {
  result: clamp(var(--min), 4vw, var(--max));
}

.card-title {
  /* 関数を呼び出してフォントサイズを決定 */
  font-size: --fluid(1rem, 2rem);
  color: var(--brand-accent);
}

受託で提供する「デザインシステムのCSSネイティブ化支援」5フェーズ

フェーズ 1: 棚卸し・診断(1 週間)

  • 既存のデザイントークン(色・余白・タイポ・角丸など)の洗い出し
  • Sass 関数 / JS テーマランタイムの依存と計算ロジックの把握
  • 対応ブラウザ要件・テーマ切替要件の確認
  • 成果物: トークン棚卸し表 + ネイティブ化可否レポート

フェーズ 2: 設計(1 週間)

  • @function / @property に寄せるトークンと Sass に残す計算の切り分け
  • フォールバック方針(未対応ブラウザの挙動)の決定
  • トークン命名規約とテーマ切替方式の設計
  • 成果物: 実装方針書 + フォールバック設計書

フェーズ 3: 実装(1〜3 週間)

  • 型付きトークン(@property)とカスタム関数(@function)の実装
  • テーマ切替・レスポンシブ値・条件分岐トークンの実装
  • 未対応ブラウザ向けフォールバックの実装
  • 成果物: 実装済みトークン基盤 + 実装標準ドキュメント

フェーズ 4: 検証・引き渡し(1 週間)

  • 主要ブラウザ・未対応ブラウザでの表示・テーマ切替検証
  • トークン変更時の影響範囲とリグレッションの確認
  • 成果物: 検証レポート + 保守手順書

フェーズ 5: 継続保守(継続)

  • ブラウザ対応状況の定点観測
  • フォールバックの段階的撤去判断
  • 新規トークン・新規テーマの追加実装

受託向け実装標準セット

用途推奨避ける
トークン定義@property で型付き型なしの素のカスタムプロパティ乱用
計算ロジック@function + clamp() / if()JS ランタイムでの再計算
テーマ切替カスタムプロパティの上書きクラス全差し替え + 再ビルド
残す Sassループ / mixin / 大量生成無理にネイティブへ移植
フォールバック機能検出 + 静的な代替値未対応ブラウザ放置
命名規約に沿ったトークン名場当たり的な命名

どの案件に必要か / 不要か

必要な案件優先度が低い案件
複数テーマ / ダークモードを持つ長期運用サイトテーマが単一の静的サイト
トークン変更が頻繁なプロダクトデザインがほぼ固定
ビルド依存を減らしたいパイプラインに不満がない
デザインシステムを横展開したい小規模で再利用が少ない
Sass の肥大化に疲れている既存構成で問題が出ていない

受託契約に書く6つの条項

条項内容顧客が確認すべきこと
対象範囲ネイティブ化するトークンの種類色/余白/タイポの境界
対応ブラウザ保証する範囲フォールバックの程度
フォールバック未対応時の挙動劣化の許容度
Sass の扱い残す箇所と移行する箇所ビルド構成の変更
引き渡しトークン標準 / 保守手順保守体制
継続保守対応状況の監視運用費用

価格モデル — デザインシステムCSSネイティブ化パッケージ

プラン金額対象内容
診断25 万円〜1 サイト棚卸し + ネイティブ化可否レポート
標準実装90 万円〜中規模主要トークンの型付け + 関数化 + フォールバック
本格対応180 万円〜大規模+ 全テーマの再設計 + リグレッション検証
Lite 保守3 万円〜 / 月小規模対応状況監視 + 軽微修正
Standard 保守12 万円〜 / 月中規模+ フォールバック撤去判断 + 新規トークン実装

顧客側 ROI 試算(複数テーマを持つサイト想定)

項目Sass / JS でのトークン管理CSS ネイティブで実装差分
テーマ切替再ビルド / 再計算が必要プロパティ上書きで即時反映の高速化
トークン変更影響範囲が読みにくい型と関数で局所化変更コストの削減
ビルド依存プリプロセッサに密結合依存を縮小パイプラインの簡素化
保守工数継続的に発生大幅圧縮運用コストの低減
年間効果依存削減 + 保守工数圧縮

診断(25 万円〜)だけでも、「いまのデザインシステムが、どこまでネイティブ CSS に寄せられて、どこは Sass に残すべきか」を可視化できること自体に価値があります。ビルドと密結合したトークン基盤の保守コストは、たいてい数年かけてじわじわ効いてきます。

ハマりやすい5つの落とし穴

落とし穴 1: ブラウザ未対応のフォールバックを設計しない

@function 未対応ブラウザでトークンが解決されず、レイアウトが崩れます。機能検出と静的な代替値を先に用意します。

落とし穴 2: Sass を残すべき箇所まで剥がす

ループや mixin での大量生成まで無理にネイティブへ移すと、かえって冗長になります。得意分野で住み分け、残す Sass は残す判断をします。

落とし穴 3: トークンの命名規約が不在

@property@function を増やしても、命名がバラつくと再利用されません。命名規約を先に定義してから実装します。

落とし穴 4: @property の構文ミスで無効化

syntax の指定や initial-value の型不一致があると、宣言ごと無視されて初期値に戻ります。syntax の文字列と初期値の型を必ず突き合わせます。

落とし穴 5: 過度な抽象化で可読性が低下する

関数を関数で包む多段の抽象化は、読み手が追えなくなります。抽象は一段に抑え、命名で意図を表すことを優先します。

90日アクションプラン

アクション
Week 1トークンの棚卸し + Sass / JS 依存の把握
Week 2ネイティブ化可否の判定 + 命名規約・フォールバック方針決定
Week 3〜5型付きトークン・関数・テーマ切替の実装
Week 6主要 / 未対応ブラウザでの検証 + 手順整備
Week 7〜13対応状況ウォッチ + フォールバックの段階撤去

まとめ — 「ビルドで計算する」から「CSSに寄せて引き渡す」へ

@function が実用域に入ったことは、デザインシステムのトークン設計を「Sass や JS でビルド時に計算する」から「ネイティブ CSS で宣言的に組む」へと押し進めます。受託で Web 制作を支える立場では、計算を CSS に寄せ、トークンを @property で型付けし、フォールバックを設計して引き渡す 「デザインシステムのCSSネイティブ化支援」が、ビルド依存と保守コストを減らした成果物を届ける主力サービスです。色の決定をアクセシブルに保つ観点まで含めて見直すなら CSSのcontrast-colorでアクセシブルな配色(GH Media) を併読してください。

弊社では診断 / 標準実装 / 本格対応 / Lite / Standard の各段階で本パッケージを提供しています。「Sass の肥大化を整理したい」「テーマ切替を軽くしたい」「トークンをネイティブ CSS に寄せて保守を楽にしたい」というご相談は お問い合わせフォーム からお気軽にどうぞ。

Sources

無料ダウンロード

Web制作 費用・発注・集客 完全ガイド【2026年版】

費用相場・制作会社の選び方・集客戦略まで、中小企業のWeb担当者が知っておくべき全知識をPDFにまとめました。

メルマガにも登録されます。いつでも解除可能です。

URLがコピーされました

グリームハブ株式会社は、変化の激しい時代において、アイデアを形にし、人がもっと自由に、もっと創造的に生きられる世界を目指しています。

記事を書いた人

鈴木 翔

鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

関連記事