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
EN
HO
Uploaded by
Hideharu Okuma
PPTX, PDF
1,250 views
React way at_eight
http://connpass.com/event/28231/
Technology
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 82
2
/ 82
3
/ 82
4
/ 82
5
/ 82
6
/ 82
7
/ 82
8
/ 82
9
/ 82
10
/ 82
11
/ 82
12
/ 82
13
/ 82
14
/ 82
15
/ 82
16
/ 82
17
/ 82
18
/ 82
19
/ 82
20
/ 82
21
/ 82
22
/ 82
23
/ 82
24
/ 82
25
/ 82
26
/ 82
27
/ 82
28
/ 82
29
/ 82
30
/ 82
31
/ 82
32
/ 82
33
/ 82
34
/ 82
35
/ 82
36
/ 82
37
/ 82
38
/ 82
39
/ 82
40
/ 82
41
/ 82
42
/ 82
43
/ 82
44
/ 82
45
/ 82
46
/ 82
47
/ 82
48
/ 82
49
/ 82
50
/ 82
51
/ 82
52
/ 82
53
/ 82
54
/ 82
55
/ 82
56
/ 82
57
/ 82
58
/ 82
59
/ 82
60
/ 82
61
/ 82
62
/ 82
63
/ 82
64
/ 82
65
/ 82
66
/ 82
67
/ 82
68
/ 82
69
/ 82
70
/ 82
71
/ 82
72
/ 82
73
/ 82
74
/ 82
75
/ 82
76
/ 82
77
/ 82
78
/ 82
79
/ 82
80
/ 82
81
/ 82
82
/ 82
More Related Content
PPTX
デザイナさんにGithubでpr投げてもらうまで
by
Hideharu Okuma
PPTX
React meetup 3_eight
by
Hideharu Okuma
PDF
Api設計
by
Yuto Suzuki
PPTX
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
by
典子 松本
PDF
我が家のフロントエンド開発事情
by
Naoki Yamada
PPTX
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
by
典子 松本
PPTX
PWAをWebサービスに導入した話
by
dobby618
PDF
エンジニアからデザイナーに贈るプロトタイピングのすすめ - 春のフロントエンド祭り 2015
by
Naoki Yamada
デザイナさんにGithubでpr投げてもらうまで
by
Hideharu Okuma
React meetup 3_eight
by
Hideharu Okuma
Api設計
by
Yuto Suzuki
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
by
典子 松本
我が家のフロントエンド開発事情
by
Naoki Yamada
非エンジニアでも安心!ノンコーディングでもココまでできる!LINE × Azure Logic Apps
by
典子 松本
PWAをWebサービスに導入した話
by
dobby618
エンジニアからデザイナーに贈るプロトタイピングのすすめ - 春のフロントエンド祭り 2015
by
Naoki Yamada
What's hot
PPTX
iOSでライブラリを提供する際に気をつけたいこと
by
asakahara
PDF
SwiftとReactNativeで似たようなUIを作った際の記録
by
Fumiya Sakai
PDF
高専カンファレンス in 岐阜 基調講演2 @gabu
by
Shoya Tsukada
PPTX
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
by
kazuki matsumura
PDF
LINE bot (Azure Bot Service 製)を LINE Clova とも繋げてみよう
by
Madoka Chiyoda
PDF
iQONの開発手法 at iQONエンジニアセミナー
by
Imamura Masayuki
PDF
マルチデバイスに対応するためのAuto layout
by
asakahara
PDF
Riot.jsと仲良くなるための僕的tips
by
Keisuke Imai
PPTX
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
by
Yasuyuki Ogawa
PPTX
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
by
takehiko yoshida
PDF
サーバーレスでLINE Clova スキル開発+LINE との接続
by
Madoka Chiyoda
PDF
SwiftでAndroidアプリ書けるってよ
by
Syo Ikeda
PDF
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
by
Madoka Chiyoda
PPTX
smartFXにおけるApache Cordovaの活用について
by
剛志 森田
PPTX
社内LTネタ ReactNative
by
Oguri Toru
PPTX
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
by
Hiroyuki Kusu
PDF
Riot.jsとフォームのデータバインディング
by
Keisuke Imai
PDF
noteをAngularJSで構築した話
by
Kon Yuichi
PDF
田舎暮らし流エンジニアスキルアップ術
by
Tomoe Sawai
PDF
TypeScriptで辛麺を注文する(ライブコーディング)
by
Tomoe Sawai
iOSでライブラリを提供する際に気をつけたいこと
by
asakahara
SwiftとReactNativeで似たようなUIを作った際の記録
by
Fumiya Sakai
高専カンファレンス in 岐阜 基調講演2 @gabu
by
Shoya Tsukada
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
by
kazuki matsumura
LINE bot (Azure Bot Service 製)を LINE Clova とも繋げてみよう
by
Madoka Chiyoda
iQONの開発手法 at iQONエンジニアセミナー
by
Imamura Masayuki
マルチデバイスに対応するためのAuto layout
by
asakahara
Riot.jsと仲良くなるための僕的tips
by
Keisuke Imai
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
by
Yasuyuki Ogawa
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
by
takehiko yoshida
サーバーレスでLINE Clova スキル開発+LINE との接続
by
Madoka Chiyoda
SwiftでAndroidアプリ書けるってよ
by
Syo Ikeda
Google Home, Amazon Echo, LINE Clova クロス開発& Azure Durable Funcitons で時間のかかる処理...
by
Madoka Chiyoda
smartFXにおけるApache Cordovaの活用について
by
剛志 森田
社内LTネタ ReactNative
by
Oguri Toru
【eLV勉強会】AngularJSでのモバイルフロントエンド開発
by
Hiroyuki Kusu
Riot.jsとフォームのデータバインディング
by
Keisuke Imai
noteをAngularJSで構築した話
by
Kon Yuichi
田舎暮らし流エンジニアスキルアップ術
by
Tomoe Sawai
TypeScriptで辛麺を注文する(ライブコーディング)
by
Tomoe Sawai
Similar to React way at_eight
PDF
Webアプリ開発入門_たくてぃん道場 React bootcamp by CraftStadium
by
CraftStaidium
PPTX
SYSTEMI勉強会まとめ資料(React基礎まとめ)
by
YoshikiWatanabe1
PDF
フロントエンド開発入門(React).pdf
by
KSato2
PDF
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
by
Yusuke Murata
PDF
React+Redux+Node.js+Raspberry Piで ビデオプレイヤーを作りたかった話
by
Akira Fukuoka
PDF
Start React with Browserify
by
Muyuu Fujita
PPTX
今からでも遅くない! React事始め
by
ynaruta
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
Isamu Suzuki
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
leverages_event
PDF
React entry
by
Nobuaki Miura
PDF
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
by
Yusaku Kinoshita
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
PPTX
改善React道
by
Hoso michi
PDF
React native実践談
by
Kiyotaka Kunihira
PDF
React.js + Flux入門 #scripty02
by
Yahoo!デベロッパーネットワーク
PDF
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
PPTX
React vtecx20170920
by
Shinichiro Takezaki
PDF
Intoroduction to React.js
by
Yuto Matsukubo
PDF
React introduntion
by
YutaShimabukuro
Webアプリ開発入門_たくてぃん道場 React bootcamp by CraftStadium
by
CraftStaidium
SYSTEMI勉強会まとめ資料(React基礎まとめ)
by
YoshikiWatanabe1
フロントエンド開発入門(React).pdf
by
KSato2
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
by
Yusuke Murata
React+Redux+Node.js+Raspberry Piで ビデオプレイヤーを作りたかった話
by
Akira Fukuoka
Start React with Browserify
by
Muyuu Fujita
今からでも遅くない! React事始め
by
ynaruta
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
Isamu Suzuki
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
leverages_event
React entry
by
Nobuaki Miura
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
by
Yusaku Kinoshita
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
SIROK技術勉強会 #1 「Reactってなんだ?」
by
Naoyuki Kataoka
改善React道
by
Hoso michi
React native実践談
by
Kiyotaka Kunihira
React.js + Flux入門 #scripty02
by
Yahoo!デベロッパーネットワーク
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
React vtecx20170920
by
Shinichiro Takezaki
Intoroduction to React.js
by
Yuto Matsukubo
React introduntion
by
YutaShimabukuro
React way at_eight
1.
React way at
Eight 2016/04/21 @halhide
2.
自己紹介 • 大熊秀治(@halhide) • Sansan株式会社 •
2014年1月にJOIN。もう3年目です。 • 名刺管理アプリEightのwebよろず屋です • APIからUIまで何でもやってます
4.
今日は現場よりの話 をします
5.
Agenda • Why React? •
How React & ride on rails? • Componentをどう作るか(教訓) • Redux(現場からの報告)
6.
Why React?
7.
2015/11月までのEight UI
8.
http://contents.8card.net/blog/2013/130624.html
9.
Backbone.js + coffeescript railsとの相性が良いという触れ込 みで採用した(らしい)
10.
端末アプリ向けのAPI開発がメイ ンタスク フロントエンド得意なエンジニア がいたわけでもない
11.
2014年頃から機能が増え始めた メッセージ、お知らせ、レコメン ド表示、、、
12.
絡みあうModelとViewとjQuery
13.
聞こえてくる悲痛な声
14.
バグのモグラ叩き
15.
どうにかしたい… でもWeb画面が大きく変わらない と手は入れらんない…
16.
時は、2015/(7|8)月
17.
2015/12月 公開プロフィール機能リリース & デザイン刷新
19.
デザイン&画面構成大幅変更 納期短い サーバ側も同時開発
20.
とはいえチャンス到来 大鉈を振るえる
21.
React • Viewライブラリ • 小さいものを使いたかった •
はまった時のworkaround見つかるか不安 • Delivery最優先のプロジェクト • (なぜredux使ったし) • 仮想DOM • 細かいDOMの差分更新を考えなくても良い • Viewの差分更新回りは苦い思い出しかない • 技術記事もググれば出てくるし、自分の観測範囲において採用しよ うかな、という話をちょいちょい耳にした • 自分が使ってみたい :smile:
22.
Eight UIの未来はReactに ある!
23.
How React?
24.
環境 • ビルド • ES2015で書いてbrowserify+babelでビルド •
タスクランナー • gulp • ES2015を変換したり • webフォント作ったり • テスト • mocha、chai、sinon • 最近はComponentのテストに airbnb/enzyme 使い始めた • https://github.com/airbnb/enzyme • Eslint • Styleguide • sapegin/react-styleguidist
25.
How to ride
on rails? • jsのビルドに必要なソース • RAILS_ROOT/front • ビルド結果 • RAILS_ROOT/app/assets/javascripts • fingerprintの為にやってるようなもんです • ビルドが走るタイミング • 開発中 • 変更をwatchして差分ビルド • prodocutionデプロイ • railsのprecompileの前にjsのビルドを走らせる
26.
Q:railsとの関係はいつ まで続けますか?
27.
A:もうちっとだけ続くん じゃ
28.
railsに乗るデメリット • コンポーネントの開発するのにrailsアプリが必須 • npmとgulpで完結させたい •
railsのviewがないと動作確認も厳しい • 特定のViewに依存しない共通コンポーネントを作る時に特に辛い • デザイナがローカルでデザインチェックするときにrails環境も 作らないといけない
29.
Styleguide Driven Development(言い過ぎ) •
https://github.com/sapegin/react-styleguidist • React Componentのstyleguide • 差分があったcomponentだけhot reloadで再描画 • exampleをブラウザ上で直接いじれるので、簡単な動作確認もそこで可 能 • componentのみの開発がrailsのviewと独立できた
30.
Styleguideデモ
31.
デモその2
32.
それでもまだ • デザイナさんがUIをローカルでチェックしたい時にrails環境を 作らないといけない • gulpでビルドしたものを更にrailsでassets
precompileする非効率 • 世の中知見が出てきているので、railに乗り続けるか降りるかは 再検討したい
33.
Componentをどう作るか?
34.
失敗 • 再利用したいのに再利用できない • 本当に同じコンポーネントですか?
35.
事例:画像選択コンポーネント • 要件 • 画像をローカルから選ぶ •
デフォルト画像から選ぶ • 別要件で使うときに二つの 理由で使えなかった
36.
異なる処理がまとまっていた • 画像選択&保存が一つの同じコンポーネントで実装されていた • 「保存」ではなく「選択」のみで十分だった •
サーバへのUPは別の処理でまとめてやる要件で使えない • 画像選択コンポーネントを利用する画像保存コンポーネントと いう構成だったらよかった
37.
選択対象の画像が状態になっていた • デフォルト画像はComponent初期化時にサーバからDLされ、コ ンポーネントのstateで管理されていた • デフォルト画像を変えたい時にpropsで変えられない •
表示対象は外から制御できるようになっているとよかった
38.
事例:プロフィールコンポーネント • 要件 • ユーザのプロフィール情報を表示する •
自分のプロフィールの時は編集アイコンが出る • プレビューの時は最低限の情報だけ表示する • 実装
40.
表示と制御は分ける • フラグ制御の闇 • 見た目が同じだが、微妙に異なるものをフラグ制御で一つのコンポー ネントでコントロールしようとした •
コンポーネントをそれぞれ作ってる時間もなかった • 最初はフラグはなかった • 編集用が追加され • 公開用が追加され • プレビュー用が追加され
42.
教訓1:stateは極力持たない
43.
再利用を阻害する • stateは極力持たない • 表示に必要な情報はpropsでコンポーネントの利用側から渡す •
stateとして持つのは、コンポーネントの見た目/振る舞いを実現するた めに必要なもののみ • Ex.画像選択コンポーネント • props: 表示する画像(array) • state: 選択されている画像のindex • <ImageSelector images={images} defaultSelected={0} />
44.
教訓2:アプリの処理と見た目 の処理を分ける
45.
再利用を阻害する • アプリの動きと直接結びつく処理は持たない • コンポーネントはonXXXで各種イベントハンドラーを提供するだけ •
アプリとしての動作は、propsでonXXXに設定する • Ex.画像選択コンポーネント • onSelect: 選択された画像情報を引数でもらう • uploadImages: 引数でもらった画像をサーバに保存する • <ImageSelector onSelect={uploadImages} />
46.
教訓3:見た目の制御とアプリ の制御を一緒にしない
47.
誤った再利用を防ぐ • 表示モードの “選択”と”描画”は分ける •
“見た目”が同じものをコンポーネント化しておく • アプリの状態ごとにパーツを組み合わせてコンポーネントを作 る • 編集用コンポーネント • プレビュー用コンポーネント • …用コンポーネント • アプリの状態に紐付いて適切なコンポーネントを上位コンポー ネントで”選択する”
48.
Redux 現場からのレポート
49.
http://staltz.com/unidirectional-user-interface-architectures.html
50.
https://code-cartoons.com/a-cartoon-intro-to-redux-3afb775501a6#.qeky9us66
51.
Eightでの使い方(移行中)
52.
Store = Client側のDB •
例:ユーザ情報 • friendはすでに自分とフレンドに なっているか? • /users.json で取得
53.
• 例:article情報 • author:投稿者 •
is_liked: 自分が「いいね」している かどうか • /articless.json で取得
54.
単純なケース • UserとArticleに依存関係がなければこれでも良い
55.
ちょっと思い出してみてくだ さい
57.
複数のAPIが返す情報に関連がある場合 • ユーザ一覧画面から’tanaka’さんにフレンド申請を出したら、ポ ストの方でもそれがUI上に反映されて欲しいですよね? • users_reducerでfriendの値を更新 •
articles_reducerでfriendの値を更新 • xxxx_reducerでfriendの値を更新 • yyyy_reducerでfriendの値を更新
58.
サーバサイドで設計するときによ く言われることを思い出す
59.
同じ情報を複数箇所に置かな い
60.
Eightでのreducer
61.
Entity • 情報そのもの • {id:
1, name: ‘…’}, {id: ‘article1’, message: ‘xxx’} • SQLで言えば一つのレコード • entities/ 以下のreducerは一つのテーブルのデータ操作を担当す る
62.
Result • アプリ内で表示するまとまった情報の集合 • コンテナコンポーネント(Smart
Component)で表示したい情報 • ただし、Entityへの参照しか持たない • articless: [{article: ‘article1’}, {article: ‘article2’}, … ] • users: [{user: ‘1’}, {user: ‘2’}, ... ]
63.
View(Provider)
64.
Action実行時 • FRIEND_REQUEST • entity/users_reducer •
対象userのfriendを更新する • usersのresultの方はいじる必要がない • DELETE_ARTICLE • entity/articless_reducer • 対象idを削除する • articless_reducer • 対象idを削除する • resultの方では単純にリストから消すだけ
65.
reducerの品質を上げやすい • Result、Entityと分けたことで、状態更新の処理が単純になった • オブジェクトのマージ •
リストへの追加、削除 • テストも書ける
66.
具体的にどうやるか?
67.
Normalizer • APIの結果をresultとentityに変換してくれるライブラリ • https://github.com/gaearon/normalizr •
直接使わずに、entityをモデルに変換するようにラップしたもの を利用
68.
Normalizer https://github.com/gaearon/normalizr
69.
Immutable.js • Result、Entityと分けたことで、状態更新の処理が単純になった • オブジェクトのマージ •
リストへの追加、削除 • Immutable.jsの得意領域 • merge、update、add、deleteなどのオブジェクト、集合操作のAPIが定 義されている • 変更すると新しいオブジェクトになる -> Reactの差分検知と相性が良い
70.
Immutable.Record • Entityに利用 • 許可されたカラムと、default 値を定義できるクラス •
getterも定義できる • 普通のobjectのように参照で きる • get(‘message’)とかやる必要なし • どんな属性を持ちうるか悩ま ないで良い
71.
PropTypeが明確に • オブジェクトっぽく参照でき るので、PropTypes.shapeの validationができる • Styleguideで、わざわざ Immutableオブジェクトを作ら ずとも表示を確認できる
72.
夢 • Record定義から、entityのreducerを生成したり、、、 • PropTypeを生成したり、、、 •
Action周りが良い感じになって、、、
73.
以上、現場の大熊が報告しま した
74.
ちょっとだけ宣伝
75.
本日の懇親会で使用しますので 事前のご登録をお願いいたします 2.名刺を撮影 3.登録完了1.アプリをDL お手元のチラシを参照下さい
76.
Sansanでは
78.
※javascriptといえばサイですよね
81.
とにかく仲間を募集してます!
82.
http://jp.corp-sansan.com/recruit/job/engineer_ruby.html (ruby採用だけどjs書ける人も募集中🙏)
Download