Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kohei Asai
76,104 views
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
2015/05/27にLINE社で行われた、Data Binding JS Nightでの発表内容です。
Engineering
◦
Read more
96
Save
Share
Embed
Embed presentation
Download
Downloaded 50 times
1
/ 29
2
/ 29
3
/ 29
4
/ 29
5
/ 29
6
/ 29
7
/ 29
8
/ 29
9
/ 29
10
/ 29
11
/ 29
12
/ 29
13
/ 29
14
/ 29
15
/ 29
16
/ 29
17
/ 29
18
/ 29
19
/ 29
20
/ 29
21
/ 29
22
/ 29
23
/ 29
24
/ 29
25
/ 29
26
/ 29
27
/ 29
28
/ 29
29
/ 29
More Related Content
PDF
임태현, MMO 서버 개발 포스트 모템, NDC2012
by
devCAT Studio, NEXON
PDF
なぜ人は必死でjQueryを捨てようとしているのか
by
Yoichi Toyota
PDF
まだ DOM 操作で消耗してるの?
by
Yuki Ishikawa
PDF
PHPからgoへの移行で分かったこと
by
gree_tech
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
Unityでオンラインゲーム作った話
by
torisoup
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
PDF
Goの時刻に関するテスト
by
Kentaro Kawano
임태현, MMO 서버 개발 포스트 모템, NDC2012
by
devCAT Studio, NEXON
なぜ人は必死でjQueryを捨てようとしているのか
by
Yoichi Toyota
まだ DOM 操作で消耗してるの?
by
Yuki Ishikawa
PHPからgoへの移行で分かったこと
by
gree_tech
【Unity】 Behavior TreeでAIを作る
by
torisoup
Unityでオンラインゲーム作った話
by
torisoup
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
Goの時刻に関するテスト
by
Kentaro Kawano
What's hot
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
by
京大 マイコンクラブ
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
PDF
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
by
devCAT Studio, NEXON
PDF
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
by
Kuniharu(州晴) AKAHANE(赤羽根)
PDF
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
임태현, 게임 서버 디자인 가이드, NDC2013
by
devCAT Studio, NEXON
PDF
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
by
Heungsub Lee
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
by
Itsuki Kuroda
PPTX
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
PDF
Go mobileでモバイルアプリを作ろう
by
Takuya Ueda
PPTX
Redmineでメトリクスを見える化する方法
by
Hidehisa Matsutani
PDF
Go入門
by
Takuya Ueda
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
by
京大 マイコンクラブ
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
by
devCAT Studio, NEXON
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
by
Kuniharu(州晴) AKAHANE(赤羽根)
シリコンバレーの「何が」凄いのか
by
Atsushi Nakada
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
임태현, 게임 서버 디자인 가이드, NDC2013
by
devCAT Studio, NEXON
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
by
Heungsub Lee
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
フロー効率性とリソース効率性、再入門 #devlove #devkan
by
Itsuki Kuroda
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
新入社員のための大規模ゲーム開発入門 サーバサイド編
by
infinite_loop
インフラエンジニアの綺麗で優しい手順書の書き方
by
Shohei Koyama
Go mobileでモバイルアプリを作ろう
by
Takuya Ueda
Redmineでメトリクスを見える化する方法
by
Hidehisa Matsutani
Go入門
by
Takuya Ueda
Viewers also liked
PPTX
今からでも遅くない! React事始め
by
ynaruta
PPTX
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
by
Carol Smith
PPTX
React を導入したフロントエンド開発
by
daisuke-a-matsui
PDF
React系(別言語含む)の サーバーサイドレンダリング について考えよう
by
Kazuhiro Hara
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
PDF
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
PDF
フロントエンド初学者がSPAに手を出してみた
by
Kei Yagi
今からでも遅くない! React事始め
by
ynaruta
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
by
Carol Smith
React を導入したフロントエンド開発
by
daisuke-a-matsui
React系(別言語含む)の サーバーサイドレンダリング について考えよう
by
Kazuhiro Hara
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
フロントエンド初学者がSPAに手を出してみた
by
Kei Yagi
Similar to コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
PDF
マーブル図で怖くないRxJS
by
bitbank, Inc. Tokyo, Japan
PDF
サービス開発における フロントエンド・ドメイン駆動設計の実践
by
TakefumiYoshii
PDF
react-ja.pdf
by
ssuser65180a
PDF
20160421 react勉強会
by
Naoki Kurosawa
PDF
React+TypeScriptもいいぞ
by
Mitsuru Ogawa
PPTX
Reactに触れてみた
by
iPride Co., Ltd.
PDF
Intoroduction to React.js
by
Yuto Matsukubo
PDF
Start React with Browserify
by
Muyuu Fujita
PPTX
SYSTEMI勉強会まとめ資料(React基礎まとめ)
by
YoshikiWatanabe1
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
by
Shumpei Shiraishi
PDF
React introduntion
by
YutaShimabukuro
PPTX
Flight入門
by
Toshihiro Yagi
PDF
データビジュアライゼーションの作り方
by
清水 正行
PDF
React.js + Flux入門 #scripty02
by
Yahoo!デベロッパーネットワーク
マーブル図で怖くないRxJS
by
bitbank, Inc. Tokyo, Japan
サービス開発における フロントエンド・ドメイン駆動設計の実践
by
TakefumiYoshii
react-ja.pdf
by
ssuser65180a
20160421 react勉強会
by
Naoki Kurosawa
React+TypeScriptもいいぞ
by
Mitsuru Ogawa
Reactに触れてみた
by
iPride Co., Ltd.
Intoroduction to React.js
by
Yuto Matsukubo
Start React with Browserify
by
Muyuu Fujita
SYSTEMI勉強会まとめ資料(React基礎まとめ)
by
YoshikiWatanabe1
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
by
Shumpei Shiraishi
React introduntion
by
YutaShimabukuro
Flight入門
by
Toshihiro Yagi
データビジュアライゼーションの作り方
by
清水 正行
React.js + Flux入門 #scripty02
by
Yahoo!デベロッパーネットワーク
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
1.
コンポーネント指向 による、Reactの ベストプラクティスと バッドプラクティス @axross Data Binding JS
Night
2.
Hi :) • Kohei
Asai • @axross • Software Engineer • React.js, express.js
3.
コンポーネント指向
4.
コンポーネント指向を推奨
5.
ReactのにおけるComponent const SomeComponent =
React.createClass({ render() { return ( <div> <span>{this.state.valueA}</span> <span>{this.props.valueB}</span> </div> ); }, }); 内部状態 外からの値 Component = DOMとJSのセット、UI部品
6.
値 -> DOM
変換器 • stateを使わず、propsを使うようにすれば、 Componentは「値 -> DOM 変換器」になる Componentprops DOM ( or Virtual DOM)
7.
JSがDOMを支配する世界 • XHRとHistory APIでSPAが可能になった •
すべての状態をJavaScriptが管理できる • JavaScriptがDOMを支配する世界
8.
Data-bindedな「DOM」とは • データバインドされたすべてのDOMは、 JavaScriptの値によって吐き出される • ならば、DOMはコンパイル結果物 •
データバインディングの嬉しさはここにある
9.
Reactの思想から逆算する ベストプラクティスと バッドプラクティス
10.
コンポーネント指向 3つの法則 • 値をDOMに変換する装置であることを徹する •
再利用されることを前提にする • コンポーネントとそうでないものを明確に分 ける
11.
値をDOMに変換する装置 であることを徹する
12.
冪等性を守る • 通常は「値 ->
DOM 変換器」であるはず • 受け入れた値が同じであれば、吐き出される DOMは常に同じはず • つまり、冪等性があるはず
13.
余計な仕事はさせない • それ以上の仕事をさせると、犠牲を生む • 必要以上なstateの保持・利用 •
コンポーネントの中でXHR • = 冪等性を失う • = 疎結合ではなくなる
14.
必要以上に状態を持たせない • 必要以上に状態を持たせると • 同じ値を外から与えたとしても、吐き出さ れるDOMが違うものになる可能性がある •
= テストが困難になる
15.
副作用のある行為を含めない • 副作用のある行為はコンポーネントの外ですべき • XHR、Web
Storageへのアクセスなど • FluxのStoreをsubscribeするなど • = 結果的に状態を持ってしまう • = 依存が増え、テストが困難になる
16.
コンポーネントが再利用 されることを前提にする
17.
componentDidMountに注意 • componentDidMountで、writeな作用のある Flux Actionを呼んでいる •
コンポーネントをmountしただけで、 他のコンポーネントに作用してしまう • = コンポーネントの副作用
18.
「どう使うか」は「使う時」に • コンポーネント自体の位置やサイズを指定す るCSSもよろしくない • それは「コンポーネントをどう使うか」と いう話であって、「コンポーネントの定義」 とはコンテキストが異なってしまう •
= 別の場所にそのまま置けない
19.
コンポーネントと そうでないものを 明確に分ける
20.
「そうでないもの」も必要 • 冪等性のあるコンポーネントのみでクライア ントサイドのアプリケーションは作れない • 誰かが状態を持ったり、XHRする必要がある •
無理のないように設計するには、 「そうでないもの」も必要
21.
テスト可能範囲を広げるために • Componentの親となる層は諦める • 状態を持ち、Flux
Storeをsubscribeする • コンポーネントにpropsを渡す • ユニットテストが不可能な唯一の存在 • = 代わりに他のすべてのテストが容易になる
22.
CSS設計へのアンサー
23.
単位を合わせる • 1 コンポーネント
= 1 BEM Blockとかにする • ファイル名、セレクタ名も合わせる • 名前の競合が防がれる • 他のセレクタへの依存や影響がなくなる • = カジュアルに削除できる・再利用できる
24.
まとめ
25.
Reactとコンポーネント • Reactはコンポーネント指向 • コンポーネントは、値
-> DOM 変換器 として 機能する
26.
コンポーネント指向 3つの法則 • 値
-> DOM 変換器 であることを徹する • 再利用されることを前提にする • コンポーネントとそうでないものを明確に分 ける
27.
メリット • テスタブル • 冪等性と疎結合であることが担保される •
カジュアルな変更・削除と再利用が可能 • 高速なPDCAサイクルに弱くない • CSS設計も助ける
28.
みんなもReact使おう!
29.
Thank you for listening
:)
Download