Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンポーネント設計のすゝめ__ベストプラクティスを学ぶLunch_LT_.pdf

MJ
October 03, 2023

 コンポーネント設計のすゝめ__ベストプラクティスを学ぶLunch_LT_.pdf

MJ

October 03, 2023
Tweet

Other Decks in Programming

Transcript

  1. Copyright © aumo, Inc. All Rights Reserved. • サービスを跨いだ使い回しを想定したコンポーネント設計ではな かった

    • コンポーネント毎に固有値を持つような設計のため、類似した コンポーネントをサービス毎に用意する状況 最初は1ジャンルのサービス展開であったため...
  2. Copyright © aumo, Inc. All Rights Reserved. • Moleculesなのか?Organismsなのか?どのレベルに当ては めるべきか迷う

    • 状態管理はどこでするべきか? • プロパティで値渡しのバケツリレーになりがち • marginはどのレベルで定義するべきか などなど... Atomic Design※で遭遇しがちな問題に直面
  3. Copyright © aumo, Inc. All Rights Reserved. コンポーネント毎に責務の範囲を明確化 レベル Atomic

    Design ディレクトリ 責務 1 Atoms(原子) ~components/atoms ・最小UIコンポーネント 2 Molecules(分子) ~components/molecules ・Atomsを組合せたUIコンポーネント 3 Organisms(有機体) ~components/organisms ・複数のAtoms、Moleculesを持つUIコンポーネント ・ビジネスロジック ・状態管理(Dispatch/Render) 4 Template(テンプレート) ~layouts ・下位レベルのコンポーネントを組み合わせた UIフレーム 5 Page(ページ) ~pages ・アプリケーションのルート ・router関連の処理 ・認証認可 ・状態管理(Dispatch) Atomic Designに合わせて責務を区切る
 

  4. Copyright © aumo, Inc. All Rights Reserved. 最小単位のUIコンポーネント
 
 1.

    Atoms(原子) ▼ポイント
 ・プロパティで上位レベルから値を埋め込むため、データは基本的に利用しない
 ・外枠にmarginを持たせない

  5. Copyright © aumo, Inc. All Rights Reserved. Atomsを組み合わせたコンポーネント
 2. Molecules(分子)

    ▼ポイント
 ・プロパティでOrganismsから値を埋め込むため、データは基本的に利用しない
 ・外枠にmarginを持たせない

  6. Copyright © aumo, Inc. All Rights Reserved. 複数のAtomsとMoleculesを組み合わせたコンポーネント
 3. Organisms(有機体)

    ▼ポイント
 ・状態管理、Storeから下位レベルのコンポーネントに埋め込む値を渡す
 ・外枠にmarginを持たせない

  7. Copyright © aumo, Inc. All Rights Reserved. 下位レベルのコンポーネントを組み合わせたUIフレーム
 4. Template(テンプレート)

    ▼ポイント
 ・レイアウトを定義するのに特化、データの受け渡しは行わない

  8. Copyright © aumo, Inc. All Rights Reserved. アプリケーションのルート
 5. Page(ページ)

    ▼ポイント
 ・APIから必要な情報を取得し、Storeにcommitする

  9. Copyright © aumo, Inc. All Rights Reserved. • コンポーネントが再利用しやすい状態になる •

    重複コードの排除による開発効率、保守性向上 • 状態管理がカオス状態になることを避けることによる開発効 率、保守性向上 • 誰がコードレビューしても指摘のブレがなくなる コンポーネント毎に責務の範囲を明確化することで