🎨

デザイントークンのW3Cコミュニティグループと仕様ドラフト、関連ツールの利用について

2023/03/28に公開

今回はデザイントークンのコミュニティグループ、仕様ドラフトの動きと、その中で説明されているデザイントークンの役割に焦点を当てて紹介します。そしてデザイントークンをより効果的に活用するための便利なツールについても紹介します。

Design Tokens Community Group

デザイントークンは色やスペースなどデザインと実装においてそれ以上分解できない核のような存在です。このデザイントークンを利用するために仕様策定をするコミュニティがDesign Tokens Community Groupです。

Design Tokens Community GroupはW3CのCommunity Groupに2020年頃に設立されました。W3CのCommunity Groupはオープンに議論をしていくことを目的とし、W3C COMMUNITY CONTRIBUTOR LICENSE AGREEMENTに同意した人であれば参加が可能です。このDesign Tokens Community Groupはデザイントークンの仕様についてさまざまな人が議論する場として設けられています。

W3Cのコミュニティグループ
https://www.w3.org/community/design-tokens/

GitHub
https://github.com/design-tokens/community-group

Webサイト
https://www.designtokens.org/

このDesign Tokens Community Groupの活動メンバーにはGoogle,Salesforce,Atlassianをはじめ、FigmaやSketchなどのツールに関わる人たちが含まれています。

Design Tokens Community Groupの活動意義や範囲については次のリンクで参照できます。

https://github.com/design-tokens/community-group/blob/main/CHARTER.md

主に次の3つについて活動していくことを定めています。

  • Enabling sharing color palettes or themes between multiple design tools
  • Allowing design system tooling to share a common language with other parts of the design process
  • Lowering the bar for design and development teams to deploy design tokens in their workflows

*翻訳

  • 複数のデザインツール間でカラーパレットやテーマの共有が可能にする
  • デザインシステム・ツールがデザインプロセスの他の部分と共通言語を共有できるようにする
  • デザインチームや開発チームがワークフローにデザイントークンを導入するハードルを下げること

デザイントークンはいろんな部分で参照されるので、デザインツールや実装間でも共有できるようにしたいという意図があります。先述した活動メンバーにツールに関わる人たちが入っているのもこれらが大きな理由になってきます。

Design Tokens Community Groupが策定している仕様ドラフト

Design Tokens Community Groupによって仕様ドラフトが策定されており、現在(2023年3月)も更新され、フィードバックを集めています。

https://tr.designtokens.org/format/

先述したとおり、Design Tokens Community GroupはW3C Community Groupの位置付けなので、HTMLやCSSのような正式なW3C Standardではありません。しかし、ここからフィードバックなどのプロセスを得て、標準化する可能性があり、さまざまなツールがこの仕様に合わせてツールを開発している、もしくは開発を準備しています。

仕様ドラフトでは次のようにデザイントークンを位置付けています。

Design tokens are a methodology for expressing design decisions in a platform-agnostic way so that they can be shared across different disciplines, tools, and technologies. They help establish a common vocabulary across organisations.
*翻訳
デザイントークンは、異なる分野、ツール、技術間で共有できるように、プラットフォームにとらわれない方法でデザインの意思決定を表現するための方法論である。また、組織間で共通の語彙を確立するのに役立ちます。

Design Tokens Community Groupのウェブサイトには用語集があり、次のように書かれています。

The single source of truth to name and store a design decision, distributed so teams can use it across design tools and coding languages.
*翻訳
デザインの決定事項に名前を付けて保存するための単一の真実の情報源で、チームがデザインツールやコーディング言語を超えて使用できるように分散されています。

デザイントークンはデザインや開発、どちらだけのためのものではなく、デザインと開発の両方で使える必要があると述べられています。

デザイントークンがデザインと開発で使えるように

デザイントークンはname/ valueのペアで表現するようになっています。

color-text-primary: #000000;
font-size-heading-level-1: 44px;

参照元:https://tr.designtokens.org/format/#design-token

これらを実現するためにDesign tokenはJSONに準拠したファイルになり、Media typeやFile extensionsの推奨は次のようになります。

そのほかにもColorなどがどのようにデザイントークンのJSONで表現されるべきなのか詳細が載っているので一読してみると面白いです。

最近のアップデートはデザイントークンでfont-weightNumber、pxやremの単位を定義するDimensionなどが追加されており、各種ツールもこれらに沿ったフォーマットのアップデートが想定されます。

デザイントークンの関連ツール

デザイントークンの仕様ドラフト周りを把握すると関連ツールについても理解が深まります。ここからはデザイントークンを便利に扱うことができる関連ツールを紹介します。筆者がFigmaを普段使っているのでFigmaが中心です。

Tokens Studio for Figma(Figma Tokens)

https://tokens.studio/

Tokens StudioはFigmaのプラグインです。Figma上でデザイントークンをいじる際に便利な機能を提供してくれています。

Tokens Studioの画面

このプラグインはGUIでデザイントークンを管理し、最終的にはDesign Tokens Community Groupのドラフト仕様に近いJSONを吐き出すまでの役割を果たしてくれます。また、GitHubの同期も可能なので、FigmaからJSONを吐き出し、GitHubへPRの作成を行うこともできます。有料プランに入らずともかなり便利なものになっています。

Tokens StudioがJSONを吐き出してGitHubへ同期する図

詳しい使用方法は、次の記事が参考になると思います。
https://zenn.dev/mi_/articles/453f7594120c9a

GitHubの同期やGUIでの管理が便利なポイントですが、プラグインを管理する必要があり、関わる人全員のFigmaにインストールされている必要があります。しかし手書きやFigma APIでも最終的な成果物がTokens Studioが吐き出すようなJSONであれば、開発に使用する形式することは可能です。

次のようにTokens Studioはドラフト仕様の追加に追いついていない点もあります。

https://github.com/tokens-studio/figma-plugin/issues/1748
https://github.com/tokens-studio/figma-plugin/issues/1199
https://github.com/tokens-studio/figma-plugin/issues/1295
https://github.com/tokens-studio/figma-plugin/issues/1746

最終的に吐き出されるJSONはドラフト仕様を参照しているので、このJSONさえあればツールを移行できるのが安心ポイントです。

Style Dictionary

https://amzn.github.io/style-dictionary/#/

Style DictionaryはデザイントークンのJSONを読み込んでSass、CSS、iOSやAndroidなどの各プラットフォーム使えるような形式にしてくれるものです。実はまだ次のようにDesign Tokens Community Groupのドラフト仕様に準拠したJSONの読み込みと吐き出しに対応していません。v4で追加が検討されており、今後ドラフト仕様に合わせた読み込みと吐き出しに対応されることが予想されます。Tokens Studioが吐き出すJSONは一定のものを読み込めるので、もし不具合にあたったら思い出す程度でよいです。

https://github.com/amzn/style-dictionary/issues/643#issuecomment-874924942
https://github.com/amzn/style-dictionary/issues/643#issuecomment-1372724754
https://github.com/amzn/style-dictionary/issues/848

Style Dictionaryの扱いについてはこちらの記事が参考になると思います。
https://zenn.dev/ubie_dev/articles/7a6413af237eae?redirected=1#style-dictionary

Storybookプラグイン

https://github.com/UX-and-I/storybook-design-token

デザイントークンのCSSを読み込んでStorybookに一覧化してくれるプラグインです。

こちらでも仕様ドラフトどおりのJSONを読み込み、Storybookで表示するIssueがあります。
https://github.com/UX-and-I/storybook-design-token/issues/74

そのほか

https://www.supernova.io/

https://specifyapp.com/

上記のような有料ツールもあります。Figmaと連携して、デザイントークンの一覧、ドキュメント、Style Dictionaryのように各プラットフォームへの変換を担ってくれるようです。
有料なのでまだ使用したことがないので、使用したことある人の話を聞いてみたいです...。

まとめ

Design Tokens Community Groupによるドラフト仕様の策定は進んでいるが、まだ周辺ツールの動きは完全に追従されていません。しかし、デザイントークンを使用してツールを利用する際に覚えておくと、さまざまな情報を拾うことができ、今後ドラフト仕様が標準仕様になることで、さらにツールが登場することもあると思うので、デザイントークンを扱う際に覚えておくといいと思います。
また、Figma APIや手動でデザイントークンのJSONを用意するときも、ドラフト仕様に近いものになっていると、ツールを使用するときにスムーズに移行できる未来がくると思うので、覚えておくといいでしょう。

Discussion