$30 off During Our Annual Pro Sale. View Details »

デザインからアプリ実装まで一貫したデザインシステムを構築するベストプラクティス

Shuzo Takahashi
September 13, 2024

 デザインからアプリ実装まで一貫したデザインシステムを構築するベストプラクティス

DroidKaigi 2024 での発表資料

Shuzo Takahashi

September 13, 2024
Tweet

Other Decks in Design

Transcript

  1. LINEヤフー Media Company, Yahoo! JAPAN Media Services Group しゅーぞー Shuzo

    Takahashi デザインからアプリ実装まで 一貫したデザインシステムを 構築するベストプラクティス
  2. FigmaとComposeの実装 Figma Componentsとは g 再利用するパーツは「Components」で作成す“ g 元のComponentsを変更すると、各instanceに反映 され“ g 動的に変化する部分はプロパティにす“

    g 例:タイトルや日付のテキスト、ラベルの可視性な 6 g 内包するパーツを置き換えることもできる (Instance Swap)
  3. FigmaとComposeの実装 方針 Componentsの実装方針 ‚ Componentsの単位でComposable関数を作s ‚ Figmaの命名と関数の命名を揃えr ‚ 再利用できるように特定ユースケースに依存しなR ‚

    UiStateを引数で渡さない、中で参照しなR ‚ プロパティをComposable関数の引数にすr ‚ 基本的にはプリミティブな型になr ‚ Instance SwapはComposable関数オブジェクトを 引数に取ることで表現する
  4. FigmaとComposeの実装 Figma Variants ’ 一つのComponentsでUIのパターンを表現できn ’ 同じ役割のUIコンポーネントだが、ヴィジュアルその ものが大きく変わる場合(=同一のUIの構造ではない) に使‚ ’

    次のケースではVariantsではなB ’ 画面サイズによるレスポンシブな変化はレイアウト の構造で表現すn ’ 構造が変わらない動的な変化はPropertyで表現する
  5. FigmaとComposeの実装 方針 LineHeightには注意 „ Androidには上下に余分な余白が付いてくるので、無効 にすs „ platformStyle = PlatformTextStyle(includeFontPadding

    = falseu „ 今後このプロパティは無くなs „ Androidでは見切れるサイズを設定出来なW „ 0.9.em などを指定しても反映されなW „ 文字サイズギリギリや見切れを前提とする LineHeightの指定はデザインデータで行わないルー ルにする必要がある
  6. FigmaとComposeの実装 UI実装の自動生成について h FigmaのDevModeではComposeでの実装が確認でき  h 以前はLineHeightやVariableが正しく表示出来ない などの課題があったが改善されてきてい h サイズが固定値で表示されてしまうので注意が必要

    h Googleの提供する「Relay」につい¹ h FigmaとAndroid Studioのプラグインを導入するこ とで、Composeのコードを自動生成でき h DevModeに比べると比較的正確に生成されるが、 既存のデザインシステム設計の差異などを考慮が必 要で一定の運用コストがある
  7. デザイントークンの運用 事例 課題があった以前の運用 以前の運用 デザイナー 色を定義 Color Style デザイナー 色や命名を転記

    ドキュメント (手動で書く) エンジニア ドキュメントを見て実装 color.xml カオス極まれな状態 ‍ 実装とデザインデータとドキュメントで定義値がズレて何が正しいのかわからない ルールの認知が不十分でエンジニアがテキトーに命名しちゃう デザインのファイルごとに独自の色が定義されまくってて、同じようなのが重複しまくり ダークテーマ対応時にツラミが爆発...
  8. デザイントークンの運用 方針 定義→実装に反映を自動化 デザイナーが色を定義 (VDライブラリを更新) Variables (共通ライブラリ) Jsonで取得 REST API

    それぞれの形式に変換 Style Dictionary 実装で使うライブラリが更新 SDK android iOS iOS React ÄÀ FigmaでVariableにトークンを追加/変更す¤ ŸÀ VariableからJSONを取得して、StyleDictionaryのフォーマットに成形するˆ ™À StyleDictionaryでKotlinコードを生成したら、デザイントークンSDKのRepositoryにcommitするˆ §À SDKが更新されるので、アプリ側で取り込む。
  9. M3について 注意 Material3を採用する場合の注意点 採用する場合はデザイナーやビジネスサイドと認識を揃える g Mateiral3は「デザインシステム」であり、既にデザインシステムを構築している場合は競合が発生するの で注ƒ g ヴィジュアルや表現の幅に大きく影響するため、ブランディングの面でも考慮が必€ g

    また、iOSなどの他のプラットフォームとの一貫性の面でも考慮が必要なため、デザイナーが主体となって 検討したほうがトラブルが少ない 完全に依存関係を断ち切るのは難しい g プラットフォームの標準となっているため、依存関係を完全に断ち切るのは難しâ g UIコンポーネントだけを限定的に使用する場合、モジュール内で隠蔽したり、M3のトークンの参照をしな いなどルールの周知が必要
  10. エンジニアとデザイナーの連携 事例 実装で表現しきれない 実装し始めたところで↓が判明しi v OSの提供する標準コンポーネントのカスタマイズでは対応が難し‡ v 既存の画面実装はXMLとComposeがミックスしており、連動には考慮が必要 その結果..U v

    デザイナーに実装が難しい旨を伝えて、Figmaの大幅な修正(手戻り)が発生しi v エンジニアが頑張って対応したところ、複雑な実装になって負債化 アプリの品質を損ねてしまったり、リードタイムが伸びる要因