Open47

コンポーネント指向とは?走り書き

sakottishfoldsakottishfold

コンポーネントの分け方

sakottishfoldsakottishfold

端的に表すと、そのサイトでしか使えない知識を持っているということ

sakottishfoldsakottishfold

別のサイトでは使えないのでドメイン知識を有していると考えられる

sakottishfoldsakottishfold

ドメイン知識を有していないコンポーネント

sakottishfoldsakottishfold

コンポーネント指向においてデザイナーがもっともデザインに注力すべき箇所

sakottishfoldsakottishfold

前項にも挙げたがドメイン知識を有していないコンポーネントに注力すべき

sakottishfoldsakottishfold

このコンポネートを組み合わせることでドメイン知識を有したコンポーネントを作成する

sakottishfoldsakottishfold

ドメイン知識を有していないコンポーネントを各ページで使い回し、例外を許さないことがデザインを加速させる

sakottishfoldsakottishfold

なにをどの単位でドメイン知識を有していないとするかの設計が肝となる

sakottishfoldsakottishfold

コンポーネント指向における隙間の考え方

sakottishfoldsakottishfold

階層構造となっているコンポーネントにおいて、隙間は
親、またはどちらの持ち物ではない

sakottishfoldsakottishfold

a画面ではボタンにmargin leftが16px必要であったため、ボタンコンポーネントに指定した

b画面ではmarginは必要なかったので、cssをオーバーライドしてmarginを打ち消して使用した

sakottishfoldsakottishfold

最近考えた推しコンポーネントディレクトリ構造

sakottishfoldsakottishfold

最近atomic designのディレクトリ構造が廃れてきている傾向がある気がする

sakottishfoldsakottishfold

atomとmoleculesを分ける意味がない
各階層ごとに名前に意味を持っていないので
プロジェクトごとのルールによってブレが生じるなど

sakottishfoldsakottishfold

ui
atom,molecule
ドメイン知識を有さない独立した単位のコンポーネント
uiライブラリとして機能し、他プロジェクトでも使い回すことができる
ui内部で依存関係を持つことができる

sakottishfoldsakottishfold

domain
organisms
ドメイン知識を有しているコンポーネント
そのサイトのみで使用される
uiにのみ依存することができる
cssで特定のコンポーネントのスタイルを変更するのは不可、fontsize,colorなど

sakottishfoldsakottishfold

page
template,page
1ページを成立させる単位
presentational(表示のみ)とcontainer(ロジック、APIへの依存)に分かれる

sakottishfoldsakottishfold

functional
該当なし
実態、表示を持たないコンポーネント
メタ情報、エラーハンドリングなど

sakottishfoldsakottishfold

まとめ

sakottishfoldsakottishfold

UIのディレクトリの分け方とfigmaのコンポーネントの単位は揃えたほうがいい

sakottishfoldsakottishfold

世の中的にコンポーネントはこうわけるべきだというデファクトはまだない

sakottishfoldsakottishfold

デザイナーエンジニア間で共通認識を持つことが重要