Enable JavaScript to access protected projects.

大規模デザインシステムの再構築

iOS・Android・Webを横断し、グローバル展開と将来の機能拡張に耐えられるDesign System 4.0へ。

04CASE STUDY
Design System 4.0のプロジェクトビジュアル
Role
Partner Designer
Client
Mercari, Inc.
Platform
Web / iOS / Android
Timeline
2024.03 - 2024.12
01

Overview

日本最大級のフリマサービス「メルカリ」のDesign System 4.0構築に、パートナーデザイナーとして参加しました。

Design Tokenの再設計、Componentの構造の再定義、アクセシビリティ対応の調査と反映、Design Spec・Guidelineの作成を担当しました。

Design System 4.0の概要
02

Challenge

国際展開を控え、Design System 3.0では変化に対応できなくなっていました。

  • 類似パターンとCustom Componentが乱立し、Component構造に一貫性がない
  • すべてのMasterデータとドキュメントが1つのFigmaファイル・1ページに集約され、管理も参照も難しい
  • ドキュメントが不十分で、既存Componentの仕様そのものが把握しきれない

ビジュアルの一貫性は保ったまま、構造・設計思想・運用体制を同時に再設計し、WCAG AA水準のアクセシビリティを実現することが求められました。

Component master dataとドキュメントが同一ページに存在する旧Figmaファイル
04

Approach

Design System Strategy

Design System Component、Blueprint、Custom Componentの関係

Atomic Designを設計指針とし、用途ベースで同列に並んでいたComponentをAtom / Molecule / Organismの3階層に再編しました。ただしAtomic Designは、何をDesign System Componentとして管理すべきかの境界までは示しません。そこで、その外側にBlueprintとCustom Componentという2つのレイヤーをチームで定義しました。

Blueprint

Componentとしては管理しないが、汎用されるUIパターン。FigmaからiOS・Android・Webのコードまでを包括する「設計図」として提供します。

Custom Component

Componentの仕様では対応できず、機能ごとに個別に作られたUI要素。将来的にDesign Systemへ取り込むか、UI仕様の調整によって段階的に減らしていきます。

Design Token

旧Tokenには、アクセシビリティ配慮の不足、一部Tokenの形骸化、Typographyの用途の曖昧さといった課題がありました。アクセシビリティについては、カラーをWCAG AAのコントラスト比を基準に再調整し、文字の最小サイズも定義しました。

Global TokenとSemantic Tokenのレイヤー

Typographyは、サイズ基準のみが定義されていたため、同じ役割のテキストでもComponentごとにサイズがバラバラでした。4.0ではサイズ基準をGlobal Tokenとして残し、用途を示すSemanticレイヤーを追加しました。

Typography Tokenの命名例

命名ルールはエンジニアチームと事前にすり合わせ、以下に統一しました。

platform - category - concept - variant - state

たとえば、WebのButtonラベルのToken名はweb-typography-button-large-boldとなります。

Token名だけで用途と実装先が分かるため、デザインと開発の確認コストを削減しました。

Component Design

私が担当した「Row」系Componentを例に、既存・Custom Componentをどう整理し、拡張可能な構造へ再設計したかを紹介します。

現状リサーチ

既存・Custom Componentの現状リサーチ

頻繁に使われる「Item Object」は、新機能の追加に3.0の仕様が追いつかず、Custom Componentが多数発生していました。

Item Objectの構成例

さらに、見た目は似ていても挙動が異なる「OOXX Row」も多数存在し、Item Objectとレイアウトや挙動が重複していました。

これらを抽象化し、レイアウト軸と挙動軸で整理しました。

レイアウト軸での整理
挙動軸での整理

レイアウト軸と挙動軸で現状を整理

何度も覆った構造

構造は何度も作り直しました。実装途中で技術的に実現できないと分かりデザインを変えたこともあれば、新たなパターンが見つかり、統合し直したこともあります。

こうした変更を繰り返す中で、レイアウト・デザイン・挙動・用途を層として分離し、1つの変更が他の層に波及しない構造に辿り着きました。

一番基盤となるのは、具体的なパーツを持たずレイアウトだけを制御するComponentです。

レイアウトだけを制御するComponent
レイアウトを制御するComponent

その上に、挙動を持たずRow全体のデザインを制御するMolecule「Base Row」を置き、挙動ごとのOrganism(Layer 3)、用途ごとのOrganism(Layer 4)を積み上げました。

Base RowとOrganismのレイヤー構造

3.0のItem Objectは、4.0では以下の構造に再設計されました。

Design System 4.0で再設計されたItem Objectの構造

これにより、既存・Custom Componentを吸収しながら、3プラットフォームで一貫した構造を実現しました。

Document

拡張性を重視した構造だからこそ、使い方を正確に伝えるドキュメントが欠かせませんでした。

Masterデータとドキュメントを分離し、Masterの誤編集を防ぎつつ、必要な情報を探しやすくしました。開発と整合したDesign Specに加え、利用意図や注意点をまとめたDesign Guidelineを併記しました。

ComponentのDesign SpecとDesign Guidelineの例
Design Specの一例(クライアント公開資料より)

Operations

これまでDesign Systemの専任体制がなく、設計ルールや使用可否の判断が属人化していました。今回のプロジェクトを機に、Design Systemチームのレビューを経るルートをチームとして提案し、運用体制の土台を作りました。

Outcome & Reflection

構造・Token・ドキュメント・運用体制を見直し、iOS・Android・Webで一貫したDesign System 4.0を構築しました。

私自身は、Rowの構造を何度も作り直す中で、開発の視点から自分のデザインを問い直すことを学びました。どう実装されるのか、3つのプラットフォームで成立するのか、拡張しても破綻しないのか。設計を決める前に、こうした問いを自分に向けるようになりました。

Mercari Design System 4.0
メルカリの Design System をリニューアルしました

Design System チームの engineering manager をしている vwxyutarooo です。私達はメルカリのアプリ・ウェブ開発に利用している Design System をフルリニューアルしました。

mercari.com