Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
コンポーネント設計のすゝめ__ベストプラクティスを学ぶLunch_LT_.pdf
Search
MJ
October 03, 2023
Programming
2k
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
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5k
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8.3k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
160
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
150
Agents on Rails - Rails at Scale 2026
irinanazarova
0
210
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
300
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
360
Heart of Swift Concurrency
koher
0
970
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
17
15k
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
510
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
180
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
320
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
420
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
My Coaching Mixtape
mlcsv
0
320
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Become a Pro
speakerdeck
PRO
31
6.3k
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. ご清聴ありがとうございました テックブログで取組発信中