概要
デザイン界隈でよく聞くAtomicDesignですが、
普段エンジニアの僕はReactのコンポーネント設計時にAtomicDesignに出会いました。
ReactやCSS(SCSS)側でも、AtomiDesignを採用しているのですが、
Sketchでも徐々にAtomicDesignを採用しています。
AtomicDesignは賛否両論あると思いますが、
賛成派の意見でAtomicDesignでのシンボル切り分けについて書きます。
AtomicDesignとは
AtomicDesignとは、様々なパーツを合体させて、繰り返し可能なエレメントやテンプレートが作成できるシステムを構築することをいいます。
AtomicDesignのメリット
Sketch/CSS/React全てで言える事だと思いますが、以下の様なメリットがあります。
- 保守性の高いUIを作る事ができる。
- デザイン仕様の変更に強くなる。
- コンポーネントの再利用性が高まる。(無駄な作業軽減)
- コンポーネントの粒度を論理的に説明できる。
- コンポーネントの粒度を決定する基準が個人の感覚に依存しにくくなる。
Sketchのシンボル設計
よくあるパターンですが、弊社では以下の切り分けでシンボルを設計しています
デバイスの名称 / レベル / コンポーネントの種類 / コンポーネントの名称 (または属しているコンポーネントの名称) _ 状態
デバイス名称
デバイス毎の切り分けです。
名称 | 用途 |
---|---|
pc | PC |
mobile | モバイル |
common | PCもモバイルも共通 |
レベルとコンポーネント
lv1
ATOMSです。
それ以上分割のできないシンボルたちの集まりです。
名称 | 用途 |
---|---|
icon | アイコン |
txt | テキスト |
fill | 塗り(色) |
img | 画像 |
lv2
MOLECULESです。
ATOMSを組み合わせて作っています。
主にボタンが多いです。
名称 | 用途 |
---|---|
btn | ボタン類 |
form | フォーム類 (インプット・ラジオ・チェックボックス) |
lv3
ORGANISMSです。
lv1とlv2を組み合わせてできる、ブロックやリストです。
名称 | 用途 |
---|---|
list | リスト |
block | ブロック |
header | ヘッダー |
footer | フッター |
aside | アサイド |
nav | ナビデーション |
card | カード |
lv4
TEMPLATESです。
lv3が組み合わさってできたコンポーネント ※シンボル化は基本しない
(lowレベルのワイヤー)
lv5
PAGESです。
より具体的な姿となったTEMPLATES ※シンボル化は基本しない
(highレベルのワイヤー)
状態
クリックした状態などのイメージです。
コンポーネント名に_区切りで記載します。
名称 | 用途 |
---|---|
hover | ホバー状態 |
selected | 選択されている状態 |
click | クリック状態 |
small | 小サイズ |
big | 大サイズ |
red, green, blue etc... | テキストや背景色 |
例
- パソコン画面のカードのタイトルテキスト
pc/lv1/txt/card_title
- モバイル画面のアサイドの項目のボタン
mobile/lv2/btn/aside_item
- 検索フォームのボタンをホバーした時
pc/lv2/btn/searchform_hover
- PC画面のヘッダー
pc/lv3/header
最後に
SketchでのAtomicDesignは発展途上ですが、
React側ではリファクタリングも進み可読性も上がり、
AtomicDesignを導入した事でかなり柔軟にUIの変更が可能になりました。
今後もAtomicDesignを意識して、保守性の高いUIを設計したいと思います。