SlideShare a Scribd company logo
Submit Search
Upload
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
Report
Share
gree_tech
gree_tech
Follow
•
1 like
•
1,098 views
1
of
24
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
•
1 like
•
1,098 views
Report
Share
Download Now
Download to read offline
Engineering
GREE Tech Conference 2021 で発表された資料です。 https://techcon.gree.jp/2021/session/ShortSession-1
Read more
gree_tech
gree_tech
Follow
Recommended
フロー効率性とリソース効率性について #xpjug by
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
106.1K views
•
62 slides
はじめての datadog by
はじめての datadog
Naoya Nakazawa
26.6K views
•
35 slides
エンジニアの個人ブランディングと技術組織 by
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
23.3K views
•
40 slides
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ by
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
54.7K views
•
243 slides
世界一わかりやすいClean Architecture by
世界一わかりやすいClean Architecture
Atsushi Nakamura
47.1K views
•
77 slides
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online by
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Google Cloud Platform - Japan
5.3K views
•
62 slides
More Related Content
What's hot
イマドキ!ユースケース別に見るAWS IoT への接続パターン by
イマドキ!ユースケース別に見るAWS IoT への接続パターン
seiichi arai
2.2K views
•
117 slides
ソフトウェア設計の学び方を考える by
ソフトウェア設計の学び方を考える
増田 亨
25.1K views
•
39 slides
Python 3.9からの新定番zoneinfoを使いこなそう by
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
6.9K views
•
42 slides
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI by
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
Yuki Okada
22.2K views
•
49 slides
ドメイン駆動設計という設計スタイル by
ドメイン駆動設計という設計スタイル
増田 亨
17.4K views
•
63 slides
マイクロにしすぎた結果がこれだよ! by
マイクロにしすぎた結果がこれだよ!
mosa siru
132.6K views
•
32 slides
What's hot
(20)
イマドキ!ユースケース別に見るAWS IoT への接続パターン by seiichi arai
イマドキ!ユースケース別に見るAWS IoT への接続パターン
seiichi arai
•
2.2K views
ソフトウェア設計の学び方を考える by 増田 亨
ソフトウェア設計の学び方を考える
増田 亨
•
25.1K views
Python 3.9からの新定番zoneinfoを使いこなそう by Ryuji Tsutsui
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
•
6.9K views
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI by Yuki Okada
エンジニア組織づくり5年。見えてきた関西Web界隈のええとこ、あかんとこ - Developers Summit 2019 KANSAI
Yuki Okada
•
22.2K views
ドメイン駆動設計という設計スタイル by 増田 亨
ドメイン駆動設計という設計スタイル
増田 亨
•
17.4K views
マイクロにしすぎた結果がこれだよ! by mosa siru
マイクロにしすぎた結果がこれだよ!
mosa siru
•
132.6K views
45分間で「ユーザー中心のものづくり」ができるまで詰め込む by Yoshiki Hayama
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
Yoshiki Hayama
•
50.6K views
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回 by Yoshiki Hayama
プロトタイピングとユーザビリティテストで「UXデザイン」を練りあげよう! | UXデザイン基礎セミナー 第4回
Yoshiki Hayama
•
8.1K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 by Koichiro Matsuoka
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
•
88K views
ドメイン駆動設計のための Spring の上手な使い方 by 増田 亨
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
•
138K views
マイクロサービス 4つの分割アプローチ by 増田 亨
マイクロサービス 4つの分割アプローチ
増田 亨
•
41.4K views
ドメイン駆動設計のためのオブジェクト指向入門 by 増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
•
48K views
ドメイン駆動設計に15年取り組んでわかったこと by 増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
•
10.2K views
「顧客の声を聞かない」とはどういうことか by Yoshiki Hayama
「顧客の声を聞かない」とはどういうことか
Yoshiki Hayama
•
135.3K views
⼤企業で実現するイマドキの内製開発 by NTT Communications Technology Development
⼤企業で実現するイマドキの内製開発
NTT Communications Technology Development
•
134.1K views
イベント・ソーシングを知る by Shuhei Fujita
イベント・ソーシングを知る
Shuhei Fujita
•
30.9K views
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例 by Yahoo!デベロッパーネットワーク
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
•
42.1K views
心理的安全性を 0から80ぐらいに上げた話 by Yusuke Hisatsu
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
•
102.1K views
開発速度が速い #とは(LayerX社内資料) by mosa siru
開発速度が速い #とは(LayerX社内資料)
mosa siru
•
61.4K views
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割 by Recruit Lifestyle Co., Ltd.
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
•
15.1K views
Similar to 「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
The Twelve-Factor (A|M)pp with C# by
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
569 views
•
56 slides
NuxtJS + SSRで作ったGREE Tech Conference 2020 by
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
826 views
•
44 slides
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用 by
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
996 views
•
39 slides
Windows AzureでWebサーバーを再発明してみる by
Windows AzureでWebサーバーを再発明してみる
Sunao Tomita
2.1K views
•
18 slides
id=nagano nseg 合同新年会 LT資料 by
id=nagano nseg 合同新年会 LT資料
Masashi Takahashi
426 views
•
11 slides
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~ by
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
法林浩之
648 views
•
79 slides
Similar to 「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
(20)
The Twelve-Factor (A|M)pp with C# by Yuta Matsumura
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
•
569 views
NuxtJS + SSRで作ったGREE Tech Conference 2020 by gree_tech
NuxtJS + SSRで作ったGREE Tech Conference 2020
gree_tech
•
826 views
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用 by de:code 2017
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
de:code 2017
•
996 views
Windows AzureでWebサーバーを再発明してみる by Sunao Tomita
Windows AzureでWebサーバーを再発明してみる
Sunao Tomita
•
2.1K views
id=nagano nseg 合同新年会 LT資料 by Masashi Takahashi
id=nagano nseg 合同新年会 LT資料
Masashi Takahashi
•
426 views
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~ by 法林浩之
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
法林浩之
•
648 views
AWSで動画共有サイトを作成して全社に公開 by ToruKubota4
AWSで動画共有サイトを作成して全社に公開
ToruKubota4
•
467 views
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法 by 典子 松本
一度使うとレンタルサーバーに戻れない!?便利機能を使ってみよう!Web制作でのMicrosoft Azure活用方法
典子 松本
•
4.1K views
Webデザイナー視点で使ってみたMicrosoft Azureの話 by 典子 松本
Webデザイナー視点で使ってみたMicrosoft Azureの話
典子 松本
•
3.3K views
ドメイン駆動設計とは何か 【入門編】 by 増田 亨
ドメイン駆動設計とは何か 【入門編】
増田 亨
•
13.3K views
.NET の過去、現在、そして未来 by Akira Inoue
.NET の過去、現在、そして未来
Akira Inoue
•
1.6K views
初心者向けデバイスドライバ講座 (2) by Study Group by SciencePark Corp.
初心者向けデバイスドライバ講座 (2)
Study Group by SciencePark Corp.
•
490 views
世界を変えるクラウドサインの取り組み by Yoshinori OHTA
世界を変えるクラウドサインの取り組み
Yoshinori OHTA
•
1.6K views
デ部会 プロトタイプ by Nobuhiko Futagami
デ部会 プロトタイプ
Nobuhiko Futagami
•
130 views
Intalio japan special cloud workshop by Daisuke Sugai
Intalio japan special cloud workshop
Daisuke Sugai
•
725 views
制作者にとってのWeb解析 by Makoto Shimizu
制作者にとってのWeb解析
Makoto Shimizu
•
1.1K views
Eclipse PDT + MakeGoodによるPHPコードのテスト by Atsuhiro Kubo
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
•
876 views
エンジニアと"協同"してサービスをつくる by Ishikawa Yuya
エンジニアと"協同"してサービスをつくる
Ishikawa Yuya
•
232 views
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ by 一希 大田
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
一希 大田
•
524 views
Application development with c#, .net 6, blazor web assembly, asp.net web api... by Shotaro Suzuki
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
•
354 views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
725 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
229 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.9K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
347 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
681 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
725 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
681 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
595 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech
•
626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験
gree_tech
•
593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み
gree_tech
•
304 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
571 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジー
gree_tech
•
432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
691 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
395 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
751 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方- by gree_tech
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech
•
445 views
Recently uploaded
robotics42.pptx by
robotics42.pptx
Natsutani Minoru
166 views
•
18 slides
how query cost affects search behavior translated in JP by
how query cost affects search behavior translated in JP
Tobioka Ken
9 views
•
16 slides
3Dプリンタでロボット作るよ#1_黎明編 by
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
19 views
•
7 slides
lt.pptx by
lt.pptx
tomochamarika
50 views
•
13 slides
AIで始めるRustプログラミング #SolDevHub by
AIで始めるRustプログラミング #SolDevHub
K Kinzal
20 views
•
25 slides
SSH超入門 by
SSH超入門
Toru Miyahara
48 views
•
21 slides
Recently uploaded
(7)
robotics42.pptx by Natsutani Minoru
robotics42.pptx
Natsutani Minoru
•
166 views
how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JP
Tobioka Ken
•
9 views
3Dプリンタでロボット作るよ#1_黎明編 by Yoshihiro Shibata
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
•
19 views
lt.pptx by tomochamarika
lt.pptx
tomochamarika
•
50 views
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHub
K Kinzal
•
20 views
SSH超入門 by Toru Miyahara
SSH超入門
Toru Miyahara
•
48 views
図解で理解するvetKD by ryoo toku
図解で理解するvetKD
ryoo toku
•
84 views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
1.
「Atomic Design ×
Nuxt.js」 コンポーネント毎に責務の範囲を 明確にしたら幸せになった話 アウモ株式会社 エンジニアマネージャー 村田 翔
2.
• 名前 • 村田
翔(むらた じょう) • GREE Tech Conference2020でも登壇してます • 担当 • サーバーサイドエンジニア • フロントエンド、インフラも少し触ります • aumo歴 • もうそろそろ丸4年 • aumoエンジニアとしては2番目に古いメンバー 自己紹介 2 アウモテックブログで取組発信中 ↓
3.
3 Atomic Design使っていますか?
4.
利用したことあるUIコンポーネント設計 を教えてください ⓘ Start presenting
to display the poll results on this slide.
5.
5 Web施設サイト4ドメインにAtomic Design適用 1つのNuxt.jsのレポジトリで4ドメイン出し分け → Atomic
Designを採用することにより、効率的にUIのトンマナを統一しつつ開発進行
6.
6 Brad Frost氏が発案。構成要素を「Atoms(原子)、Molecules(分子)、Organisms(有機 体)、Template(テンプレート)、Page(ページ)」の階層に分けた設計手法。 Atomic Designとは
7.
7 なぜAtomic Designなのか?
8.
8 Nuxt.jsのディレクトリ構成に合う (components / layouts
/ pages)
9.
9 UIコンポーネントの共通化
10.
10 UIコンポーネントの共通化により • 複数サイトでUIに一貫性を持たせる • デザイン及び開発の効率化を目指すため
11.
11 だがしかしだな...
12.
12 Atomic Designで遭遇しがちな問題 • Moleculesなのか?Organismsなのか? どのレベルに当てはめるべきか迷う •
状態管理はどこでするべきか? • プロパティで値渡しのバケツリレーになりがち • marginはどのレベルで定義するべきか などなど...
13.
13 そこで今回の本題
14.
14 コンポーネント毎に責務の範囲を明確にする話
15.
15 Web施設サイトで実際に適用している構成 コンポーネントとディレクトリと責務の組み合わせ レベル Atomic Design
ディレクトリ 責務 1 Atoms(原子) ~components/atoms ・最小UIコンポーネント 2 Molecules(分子) ~components/molecules ・Atomsを組合せたUIコンポーネント 3 Organisms(有機体) ~components/organisms ・複数のAtoms、Moleculesを持つUIコンポーネント ・Storeとのやり取り(Dispatch/Render) ・ビジネスロジック 4 Template(テンプレート) ~layouts ・下位レベルのコンポーネントを組み合わせたUIフレーム 5 Page(ページ) ~pages ・アプリケーションのルート ・router関連の処理 ・認証認可 ・Storeとのやり取り(Dispatchのみ)
16.
16 最小単位のUIコンポーネント 1. Atoms(原子) ▼ポイント ・プロパティで上位レベルから値を埋め込むため、データは基本的に利用しない ・外枠にmarginを持たせない
17.
17 Atomsを組み合わせたコンポーネント 2. Molecules(分子) ▼ポイント ・プロパティでOrganismsから値を埋め込むため、データは基本的に利用しない ・外枠にmarginを持たせない
18.
18 複数のAtomsとMoleculesを組み合わせたコンポーネント 3. Organisms(有機体) ▼ポイント ・Storeからgetterでデータを取得し、下位レベルのコンポーネントに埋め込む値を渡す ・外枠にmarginを持たせない
19.
19 下位レベルのコンポーネントを組み合わせたUIフレーム 4. Template(テンプレート) ▼ポイント ・レイアウトを定義するのに特化、データの受け渡しは行わない
20.
20 アプリケーションのルート 5. Page(ページ) ▼ポイント ・APIから必要な情報を取得し、Storeにcommitする
21.
21 Web施設サイトで実際に適用している構成 [再掲]コンポーネントとディレクトリと責務の組み合わせ レベル Atomic Design
ディレクトリ 責務 1 Atoms(原子) ~components/atoms ・最小UIコンポーネント 2 Molecules(分子) ~components/molecules ・Atomsを組合せたUIコンポーネント 3 Organisms(有機体) ~components/organisms ・複数のAtoms、Moleculesを持つUIコンポーネント ・Storeとのやり取り(Dispatch/Render) ・ビジネスロジック 4 Template(テンプレート) ~layouts ・下位レベルのコンポーネントを組み合わせたUIフレーム 5 Page(ページ) ~pages ・アプリケーションのルート ・router関連の処理 ・認証認可 ・Storeとのやり取り(Dispatchのみ)
22.
22 • コンポーネント再利用しやすい状態になる • 状態管理がカオス状態になることを避けること ができ、コードの見通しがよくなる •
誰がレビューしても指摘のブレがなくなる コンポーネント毎の責務範囲を明確にしておくことで おわりに
23.
Atomic Designを活用してみようと思い ましたか? ⓘ Start
presenting to display the poll results on this slide.
24.
24