Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンポーネント設計のすゝめ__ベストプラクティスを学ぶLunch_LT_.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
MJ
October 03, 2023
Programming
1.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンポーネント設計のすゝめ__ベストプラクティスを学ぶLunch_LT_.pdf
MJ
October 03, 2023
Other Decks in Programming
See All in Programming
霧の中の代数的エフェクト
funnyycat
1
400
自作OSでスライド発表する
uyuki234
1
3.8k
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
100
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
170
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
780
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.6k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.9k
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.3k
act1-costs.pdf
sumedhbala
0
230
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
110
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
どこまでゆるくて許されるのか
tk3fftk
0
500
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
So, you think you're a good person
axbom
PRO
2
2.1k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
It's Worth the Effort
3n
188
29k
Product Roadmaps are Hard
iamctodd
55
12k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The SEO identity crisis: Don't let AI make you average
varn
0
510
The SEO Collaboration Effect
kristinabergwall1
1
510
Accessibility Awareness
sabderemane
1
160
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Transcript
Copyright © aumo, Inc. All Rights Reserved. コンポーネント毎に責務の範囲を明確にしたら開発 速度、保守性が向上して幸せになった話 アウモ株式会社
村田 翔 2023.10.04 コンポーネント設計のすゝめ 〜ベストプラクティスを学ぶLunch LT〜
Copyright © aumo, Inc. All Rights Reserved. • Atomic Design
• Nuxt.js 今回のキーワード
Copyright © aumo, Inc. All Rights Reserved. aumoについて
Copyright © aumo, Inc. All Rights Reserved. おでかけ情報サービスの「施設検索サービス」 → 5ジャンルをドメイン区切りで展開、1つのコンテナで稼働させている構成
今回の対象
Copyright © aumo, Inc. All Rights Reserved. 課題
Copyright © aumo, Inc. All Rights Reserved. • サービスを跨いだ使い回しを想定したコンポーネント設計ではな かった
• コンポーネント毎に固有値を持つような設計のため、類似した コンポーネントをサービス毎に用意する状況 最初は1ジャンルのサービス展開であったため...
Copyright © aumo, Inc. All Rights Reserved. • Moleculesなのか?Organismsなのか?どのレベルに当ては めるべきか迷う
• 状態管理はどこでするべきか? • プロパティで値渡しのバケツリレーになりがち • marginはどのレベルで定義するべきか などなど... Atomic Design※で遭遇しがちな問題に直面
Copyright © aumo, Inc. All Rights Reserved. Brad Frost氏が発案。構成要素を「Atoms(原子)、Molecules(分子)、Organisms(有機体)、 Template(テンプレート)、Page(ページ)」の階層に分けた設計手法。
※Atomic Designとは
Copyright © aumo, Inc. All Rights Reserved. 対応策
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に合わせて責務を区切る
Copyright © aumo, Inc. All Rights Reserved. 最小単位のUIコンポーネント 1.
Atoms(原子) ▼ポイント ・プロパティで上位レベルから値を埋め込むため、データは基本的に利用しない ・外枠にmarginを持たせない
Copyright © aumo, Inc. All Rights Reserved. Atomsを組み合わせたコンポーネント 2. Molecules(分子)
▼ポイント ・プロパティでOrganismsから値を埋め込むため、データは基本的に利用しない ・外枠にmarginを持たせない
Copyright © aumo, Inc. All Rights Reserved. 複数のAtomsとMoleculesを組み合わせたコンポーネント 3. Organisms(有機体)
▼ポイント ・状態管理、Storeから下位レベルのコンポーネントに埋め込む値を渡す ・外枠にmarginを持たせない
Copyright © aumo, Inc. All Rights Reserved. 下位レベルのコンポーネントを組み合わせたUIフレーム 4. Template(テンプレート)
▼ポイント ・レイアウトを定義するのに特化、データの受け渡しは行わない
Copyright © aumo, Inc. All Rights Reserved. アプリケーションのルート 5. Page(ページ)
▼ポイント ・APIから必要な情報を取得し、Storeにcommitする
Copyright © aumo, Inc. All Rights Reserved. まとめ
Copyright © aumo, Inc. All Rights Reserved. • コンポーネントが再利用しやすい状態になる •
重複コードの排除による開発効率、保守性向上 • 状態管理がカオス状態になることを避けることによる開発効 率、保守性向上 • 誰がコードレビューしても指摘のブレがなくなる コンポーネント毎に責務の範囲を明確化することで
Copyright © aumo, Inc. All Rights Reserved. ご清聴ありがとうございました テックブログで取組発信中