Slide 1

Slide 1 text

2023年版 デザインシステム 技術選定の勘所 大木尊紀 / takanorip Fronend Conference Okinawa 2023

Slide 2

Slide 2 text

自己紹介 大木尊紀 / takanorip Ubie株式会社 デザインエンジニア 元フロントエンドエンジニア、現デザインエンジニア。
 症状検索エンジン ユビーの開発やデザインシステム構築、
 アクセシビリティ改善などに携わっている。
 趣味は筋トレ、料理、ロードバイク、キーボード、特撮。

Slide 3

Slide 3 text

Zennにて好評発売中!

Slide 4

Slide 4 text

目次 0 デザインシステムの構成技術要素 1 Figmaの技術選定 2 デザイントークンの技術選定 3 UIライブラリの技術選定 4 ドキュメントサイトの技術選定

Slide 5

Slide 5 text

デザインシステムの 構成技術要素

Slide 6

Slide 6 text

“「デザインシステム」は一般的に、「デザインの再 現性を高め、一貫した製品体験を効率よく表現するこ と」を目的に導入される「ドキュメントやリソース群 のこと」と説明されます。” 大塚 亜周,稲葉 志奈,金森 悠,samemaru,圓山 伊吹,植田 将基,関口 裕,8chari,後藤 拓 也,小木曽 槙一,桝田 草一. ちいさくはじめるデザインシステム (p.5). Kindle 版. デザインシステムの定義

Slide 7

Slide 7 text

デザインシステムの想定構成 ドキュメントサイト C デザイン原7 C スタイルガイ( C プレビュー機# C etc... デザイントークン UIコンポーネント CSS Figma library群

Slide 8

Slide 8 text

僕のデザインシステム設計思想 1 デザインデータが雑でも意図したUIが実装される 2 できるだけ標準化された機能・仕様に則る 3 運用・更新まで考えてシステムに組み込む 3 ドキュメントサイトもデザインシステムの一部

Slide 9

Slide 9 text

デザインシステムにおいて大事なこと デザインシステムの目的を明確にする 「デザインシステム」といっても、組織やプロダクトが違えば必要なシステムも違ってくる。 誰かのマネをするとか正解を突き詰めるとかではなく、自分たちが必要としているシステム像 を明確にすることが良い技術選定につながる。

Slide 10

Slide 10 text

Figmaの技術選定

Slide 11

Slide 11 text

Figmaの活用の仕方 デザイナー向けの パーツを提供する デザイントークンの Single Sourceとして Figmaを活用する Figma CSS TypeScript iOS Tailwind CSS

Slide 12

Slide 12 text

なんでFigmaをデザイントークンのSingle Sourceにするの? 見た目と値をセットで管理が吉 JSONファイルをSingle Sourceにする方法もあるが、カラーコードや数字が並んでいるだ けではその値がデザイン的に正しいのかどうか判別しにくい

Slide 13

Slide 13 text

Variables or Styles 結論:Styles > Variables Variablesはまだ機能的に未熟なので、積極的に使う必要はない。 APIがEnterpriseプランでないと使えない、タイポグラフィが管理できない、など。
 特にAPI経由でデータを取得できないというのが運用において致命的。
 Numberを保存できる、テーマを管理できるなどのメリットはあるので、機能が拡充したら乗 り換えを検討しても良いかも。

Slide 14

Slide 14 text

Token Studio or not 特段必要ない Variablesの機能が拡充されていくはずなので、将来的に乗り換えることを考えるとToken Studio(または類似のトークン管理プラグイン)を導入するメリットは薄い。 費用対効果が明確に説明できるなら導入を検討するのもあり。

Slide 15

Slide 15 text

Plugins, Widgetsの技術選定 目先の便利さに惑わされない 特定のプラグインを業務のコアな部分に組み込んでしまうと作業が複雑化し、業務効率の悪化 や属人化が起きてしまう可能性がある。それが許容できるなら組み込んでも良い。
 (例:Token Studioの使い方がわからないので〇〇さんにお願いしよう) 乗り換え時のコストについても考えておく必要がある。共通の仕様があるわけではないので、 プラグインから別の同じようなプラグインに乗り換えるのはとても大変なことが多い。

Slide 16

Slide 16 text

Plugins, Widgetsの技術選定 GitHubとの連携はAPI経由で API経由にすることでCI/CDに組み込んだり自動化したりできる。プラグイン経由だと煩雑に なるので、継続して運用していくことが難しくなる可能性が高い。(特にデザイナーやエンジ ニアの多い組織。) 乗り換え時のコストについても考えておく必要がある。共通の仕様があるわけではないので、 プラグインから別の同じようなプラグインに乗り換えるのはとても大変なことが多い。 https://www.figma.com/developers/api

Slide 17

Slide 17 text

デザイントークンの 技術選定

Slide 18

Slide 18 text

Style Dictionary デザイントークンビルドシステムの デファクトスタンダード Amazon製デザイントークンビルドツール。JSONファイルから各種プラットフォーム向けの 設定ファイルを生成できる。
 マルチプラットフォームを想定してないデザインシステムでも、これを使うと取り回しやすく なるので、導入を強く推奨する。UbieではこれでCSS、JS、型情報などなどを生成してる。 https://amzn.github.io/style-dictionary/#/

Slide 19

Slide 19 text

Design Tokens Community Group “The Design Tokens Community Group's goal is to provide standards upon which products and design tools can rely for sharing stylistic pieces of a design system at scale.” Design Tokens Community Group デザイントークンに関するツールを選定するときは、このコミュニティで議論されている仕様 (Design Tokens Format Module)に準拠しているものを選ぶ。 正式なW3C Standardではないけど、業界標準のようなものになっていく可能性が高い。 前述のStyle Dictionaryはこの仕様に準拠している。

Slide 20

Slide 20 text

Tailwind CSS 導入は覚悟を持って デザイントークンを実装に組み込む良い手段だが、もし導入するならデザインシステムを Tailwind CSS中心に振り切って設計する覚悟が必要。(他の CSS in JS ようなものを導入 するときも同じ。) Style DictionaryからTailwind CSSのテーマを出力するのは少し工夫が必要。
 Style Dictionary Tailwind CSS Transformerというライブラリもある。
 https://github.com/nado1001/style-dictionary-tailwindcss-transformer

Slide 21

Slide 21 text

Panda CSS Chakra製 Zero Runtime CSS 最近注目しているZero Runtime CSSツール。型安全でプリミティブなCSSを生成するなど のメリットがある。Design Tokens Format Moduleとの相性はこちらのほうが良いかも?
 https://panda-css.com/docs/theming/tokens 詳しいことはこちらの記事でも解説されてる。
 https://zenn.dev/cybozu_frontend/articles/panda-is-coming

Slide 22

Slide 22 text

Panda CSS

Slide 23

Slide 23 text

Ubieでやってること Zennに記事を公開してるので詳しくはこちらで
 https://zenn.dev/ubie_dev/articles/7a6413af237eae

Slide 24

Slide 24 text

UIコンポーネントの 技術選定

Slide 25

Slide 25 text

車輪の再発明を避けて運用を楽にする UI開発で求められる機能はほとんど同じ。
 Stylelessなコンポーネントを活用することで開発工数を大きく減らせる。 またUIコンポーネントのアクセシビリティ担保も容易になる。 StylelessなUIコンポーネントライブラリを活用

Slide 26

Slide 26 text

Headless UI p Tailwind CSSを開発元が同A p ReactとVueの実装があ0 p Tailwind CSSかclassName経由で
 スタイリンB p 収録コンポーネントが少な p 個人的にはあまりおすすめできない Ark UI p Chakra UIのチームが開発してい0 p コンポーネントの数は豊} p アクセシビリティ対応もされてい0 p 複数のフレームワークに対応するために Zag.jsというステート管理ツールを使用して おり、ファイルサイズが大きくなりが” p React、Vue、Solidに対n p https://ark-ui.com/ Radix UI p Work OSが開 C p Reactにの み対n p アクセシビリティもいい 感A p コンポーネントの 種類も豊 富で使い 勝手も p themeというst yleありのコンポーネント も
 用 意されてい0 p https://www.radi x-ui.com/primiti ves StylelessなUIライブラリの活用

Slide 27

Slide 27 text

番外編:Kuma UI 次世代CSS最適化ツール UIコンポーネントライブラリだが、CSS in JSとしての側面が強め。
 Hybrid CSS in JSでコンポーネントのパフォーマンスを最適化してくれる。
 https://www.kuma-ui.com/ 用意されているコンポーネントの種類は多くないので、前述のUIコンポーネントライブラリと 併用するかたちになりそう。 App RouterのServer Componentsに対応しているのは嬉しいポイント。

Slide 28

Slide 28 text

ビルドツールの技術選定 tsupがおすすめ esbuildをラップしてライブラリ向けの設定をいい感じにやってくれるやつ。
 同じようなものにviteもあるが、viteはよりアプリケーション開発向け。 https://tsup.egoist.dev/

Slide 29

Slide 29 text

番外編:デザインシステムのリポジトリ設計 小さく始める場合はツールごとにリポジトリを作る方がおすすめ。
 小さく始める場合はデザインシステムの全体像や将来像が掴めていない場合が多いので、とり あえずできるものからやっていくのが良い。 大きいデザインシステムを作る想定ならモノレポにすると良い。
 セットアップは大変だが、モノレポで管理するほうがpackage同士の連携やリリース管理が しやすいメリットがある。

Slide 30

Slide 30 text

VRTの技術選定 Chromatic ‡ UIテスト統合マネジメントサービj ‡ VRTをはじめ様々なUIテスト機能を提供してくれ‚ ‡ セットアップが簡% ‡ Freeプランだと5000スナップショット/` ‡ 多そうに見えるが、ビルドごとにスナップショットが作られるので
 あっという間に消費してしまP ‡ TurboSnapという最適化ツールを使う必要があ‚ ‡ 有料プランはけっこう高p ‡ https://www.chromatic.com/ reg-suit + Storycap ‡ VRTのOSSツーÊ ‡ StorybookのStoryを活用してVRTでき‚ ‡ VRT以外の機能はなp ‡ セットアップがすこし大Ÿ ‡ 画像のホスティングを自前で管理する必要がある、な“ ‡ https://github.com/reg-viz/reg-suiÎ ‡ https://github.com/reg-viz/storycap

Slide 31

Slide 31 text

Chromaticの必要性 確かにとても便利だが、月150ドル+従量課金で使うほどのメリットあるかは疑問。
 Freeプラン内で利用できるなら、選択肢の1つにはなりそう。

Slide 32

Slide 32 text

番外編:Lintは厳しく 妥協を輸出しないためのLint UIコンポーネント側で厳しくチェックすることで、コンポーネント利用者が意識しなくても
 実装品質を高めることができる。 厳しさをコンポーネントに隔離することで全体の生産性と品質を向上させる。

Slide 33

Slide 33 text

ドキュメントサイトの 技術選定

Slide 34

Slide 34 text

ドキュメントサイトどうする? 重要なのは読まれる・使われるドキュメントを作ること Notion x 一番手軽に構築できY x FigmaのPreviewを載せれY x 実装との接続ができなb x 自由度が低b x 読みにくい Zeroheight x デザインシステム用のドキュメントを書くこ とに特化しているため、機能が豊i x 実装との接続が少し面• x 別途コストがかかY x 自由度は中くらい ️自前で構築する ¾ 自由度が高À ¾ ¾ 要求に合ったドキュメントサイトを
 構築できY ¾ 自動化など運用の工夫がしやすい 初期コストが高À

Slide 35

Slide 35 text

Astroはいいぞ U 高速なWebサイトを作ることに特化している' U ReactやVueのコンポーネントも使えるので、デザインシステムのUIコンポーネントを組 み込むこともできる' U Interactiveな機能も盛り込むことができる。

Slide 36

Slide 36 text

ドキュメントが継続して書かれるようにする ドキュメントを書くハードルを潰す ドキュメンが更新されなくなるとドキュメントサイトは死ぬ i ドキュメント更新まで含めたワークフローを設計す… o LintとかTestでで怒ってもらうとかケツをたたく人を設置するm i Scaffdogなどのscaffoldingツールを活用す… i 誰が書くか(エンジニアが書くのかデザイナーが書くのか)明確にす… i ChatGPTを活用して書く

Slide 37

Slide 37 text

まとめ

Slide 38

Slide 38 text

技術選定に正解はない。 デザインシステムの目的を明確にして 悔いのない意思決定を!

Slide 39

Slide 39 text

Ubieでは フロントエンドエンジニアを 絶賛採用中です!

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

人類の健康を 大きく飛躍させる プロダクトを一緒に 作りましょう! カジュアル面談は こちらから↓

Slide 42

Slide 42 text

ご静聴 ありがとうございました!