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
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
Performance Engineering for Everyone
elenatanasoiu
0
210
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
220
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.5k
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.5k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
2
730
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
260
Agentic UI
manfredsteyer
PRO
0
190
ふつうのFeature Flag実践入門
irof
8
4.2k
Contextとはなにか
chiroruxx
1
370
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
120
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Facilitating Awesome Meetings
lara
57
7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Visualization
eitanlees
152
17k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Typedesign – Prime Four
hannesfritz
42
3.1k
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. ご清聴ありがとうございました テックブログで取組発信中