Slide 1

Slide 1 text

(React.js) コンテナープレゼンテーションパターンの 設計 コンテナープレゼンテーションパターンの設計 r-sugi 1

Slide 2

Slide 2 text

自己紹介 フリーランスエンジニア 5年目 コンテナープレゼンテーションパターンの設計 r-sugi 2

Slide 3

Slide 3 text

今回のアジェンダ フロントエンドの複雑さにどう立ち向かっていくか? 解決案を 1つ提示するので、みんなであれこれ議論したい コンテナープレゼンテーションパターンの設計 r-sugi 3

Slide 4

Slide 4 text

フロントエンド設計手法、枯れない問題 (1/2) Class使うか使わないか? (使わないなら )どうやって、データと振る舞いを集約させるか? レイヤー分けるか? (分けるなら )その粒度は? D/I使うか使わないか? (使わないなら )テストするとき、困らない? コンテナープレゼンテーションパターンの設計 r-sugi 4

Slide 5

Slide 5 text

フロントエンド設計手法、枯れない問題 (2/2) 移り変わりが激しい バックエンドほど設計手法が枯れない 治安が良くないから話し合わない (?) 登壇内容を一部切り取って、 「これはアンチパターン!」とか Xで晒された 駆け出しエンジニアが多い バックエンドの設計手法を理解した上で、フロントエンドの設計について話 し合う母数が少ない 他の職種と比べて単価が低い 優秀な人は単価が高い職種 (例 : バックエンド , インフラ , DevOps)へ移動 (?) コンテナープレゼンテーションパターンの設計 r-sugi 5

Slide 6

Slide 6 text

投稿済の記事 コンテナープレゼンテーションパターンの設計 r-sugi 6

Slide 7

Slide 7 text

NG: hooksに切り出すだけ import React from "react"; import useDogImages from "./useDogImages"; export default function DogImages() { const dogs = useDogImages(); return dogs.map((dog, i) => Dog); } コンテナープレゼンテーションパターンの設計 r-sugi 7

Slide 8

Slide 8 text

ハイライト (1/3) ドメインモデルへ変換してビューに渡す コンテナープレゼンテーションパターンの設計 r-sugi 8

Slide 9

Slide 9 text

コンテナープレゼンテーションパターンの設計 r-sugi 9

Slide 10

Slide 10 text

ハイライト (2/3) コンテナーからプレゼンテーション(ルート)に propsで渡す コンテナープレゼンテーションパターンの設計 r-sugi 10

Slide 11

Slide 11 text

コンテナープレゼンテーションパターンの設計 r-sugi 11

Slide 12

Slide 12 text

ハイライト (3/3) プレゼンテーション(ルート)から他プレゼンテーションに propsで渡す コンテナープレゼンテーションパターンの設計 r-sugi 12

Slide 13

Slide 13 text

コンテナープレゼンテーションパターンの設計 r-sugi 13

Slide 14

Slide 14 text

NGパターン コンテナープレゼンテーションパターンの設計 r-sugi 14

Slide 15

Slide 15 text

コンテナープレゼンテーションパターンの設計 r-sugi 15

Slide 16

Slide 16 text

まとめ モデルについて フロントエンドのアプリケーション用のモデルを定義する I/Fについて コンテナー・プレゼンテーション間の I/Fを厳密に定義する (EventType) propsで型の再定義をしない(例 :callback関数) モデルの一部のプロパティのみを渡さない(例 :idだけ渡す) コンテナープレゼンテーションパターンの設計 r-sugi 16