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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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主導のプログラミング学習アプリを作ってみた
econanringo
0
160
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
400
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
360
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
34
16k
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
0
440
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
250
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
770
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
AWSに止められる覚悟してますか?
morizo_1984
2
530
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
1
260
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
10k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Building the Perfect Custom Keyboard
takai
2
900
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
ラッコキーワード サービス紹介資料
rakko
1
5.3M
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
450
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. ご清聴ありがとうございました テックブログで取組発信中