Submit Search
React Redux Storybook Swagger でフロント爆速開発
6 likes
2,557 views
S
ShotaOd
React Redux Storybook Swaggerを導入したプロジェクトのお話
Technology
Read more
1 of 53
Download now
Downloaded 10 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
More Related Content
PPTX
Dart programming language
Aniruddha Chakrabarti
PDF
Advantages of Cloud Computing for Business
Grazitti Interactive
PPTX
Development of Mobile Application -PPT
Dhivya T
PPT
Google Maps in Android
Mobile 2.0 Europe
PPTX
Raskar 2012, Idea Hexagon
Camera Culture Group, MIT Media Lab
PPTX
Android application development ppt
Gautam Kumar
PDF
2013 426 Lecture 1: Introduction to Augmented Reality
Mark Billinghurst
PDF
Flutter vs React Native | Edureka
Edureka!
Dart programming language
Aniruddha Chakrabarti
Advantages of Cloud Computing for Business
Grazitti Interactive
Development of Mobile Application -PPT
Dhivya T
Google Maps in Android
Mobile 2.0 Europe
Raskar 2012, Idea Hexagon
Camera Culture Group, MIT Media Lab
Android application development ppt
Gautam Kumar
2013 426 Lecture 1: Introduction to Augmented Reality
Mark Billinghurst
Flutter vs React Native | Edureka
Edureka!
What's hot
(20)
PDF
Mobile App Development
Chris Morrell
PDF
The Data Distribution Service
Angelo Corsaro
PDF
Citrix Netscaler Deployment Guide
Citrix
PDF
AR-VR Workshop
Mark Billinghurst
PDF
Flutter 踩雷心得
Weizhong Yang
PPT
Android ppt
Basavaraj Amogi
PDF
XR (Extended reality) Current and future trends
Keyur Bhalavat
PPTX
What Is Mixed Reality & Its Applications?
Sushil Deshmukh
PDF
Introduction to Flutter - truly crossplatform, amazingly fast
Bartosz Kosarzycki
PPTX
Android OS & SDK - Getting Started
Hemant Chhapoliya
PPTX
Day: 1 Introduction to Mobile Application Development (in Android)
Ahsanul Karim
PDF
Introduction to mago3D, an Open Source Based Digital Twin Platform
SANGHEE SHIN
PPTX
Flutter workshop
Vishnu Suresh
PDF
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Vadym Kazulkin
PDF
Comp4010 2021 Lecture2-Perception
Mark Billinghurst
PDF
Designing Usable Interface
Mark Billinghurst
PPTX
Introduction to flutter's basic concepts
Kumaresh Chandra Baruri
PDF
introduction and abstract on Google Glass Major report
Jawhar Ali
PPT
Java multi threading
Raja Sekhar
PPTX
OOPs in Java
Ranjith Sekar
Mobile App Development
Chris Morrell
The Data Distribution Service
Angelo Corsaro
Citrix Netscaler Deployment Guide
Citrix
AR-VR Workshop
Mark Billinghurst
Flutter 踩雷心得
Weizhong Yang
Android ppt
Basavaraj Amogi
XR (Extended reality) Current and future trends
Keyur Bhalavat
What Is Mixed Reality & Its Applications?
Sushil Deshmukh
Introduction to Flutter - truly crossplatform, amazingly fast
Bartosz Kosarzycki
Android OS & SDK - Getting Started
Hemant Chhapoliya
Day: 1 Introduction to Mobile Application Development (in Android)
Ahsanul Karim
Introduction to mago3D, an Open Source Based Digital Twin Platform
SANGHEE SHIN
Flutter workshop
Vishnu Suresh
Revolutionize DevOps with ML capabilities. Introduction to Amazon CodeGuru an...
Vadym Kazulkin
Comp4010 2021 Lecture2-Perception
Mark Billinghurst
Designing Usable Interface
Mark Billinghurst
Introduction to flutter's basic concepts
Kumaresh Chandra Baruri
introduction and abstract on Google Glass Major report
Jawhar Ali
Java multi threading
Raja Sekhar
OOPs in Java
Ranjith Sekar
Ad
Similar to React Redux Storybook Swagger でフロント爆速開発
(20)
PPTX
Web開発初心者がReactをチームに導入して半年経った
kazuki matsumura
PDF
Reactを使ったVR環境
KatsuyaENDOH
PDF
The History of Reactive Extensions
Yoshifumi Kawai
PPTX
フロントエンド技術の変遷
Ryo Higashigawa
PPTX
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
PDF
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Rescale Japan株式会社
PDF
Swaggerを利用した新規サービス開発
recotech
PPTX
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
Kazuhiro Yoshimoto
PDF
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
PDF
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
PDF
Introducing microsoft learn
ru pic
PDF
The Fastest Possible Way to Develop an Interactive App
LINE Corporation
PPTX
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
PPTX
CloudSQL v2は デキる子なのか?
Kumano Ryo
PPTX
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
WESEEKWESEEK
PDF
React.jsでサービスを作ってみた話
GIG inc.
PDF
Reactive programming
Yasuki Okumura
PPTX
いま考えられる限り最も速く対話型アプリを開発する方法
Kenichiro Nakamura
PDF
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Koichiro Sumi
PPTX
WEBサービス開発もくもく会@北千住
尚 平岡
Web開発初心者がReactをチームに導入して半年経った
kazuki matsumura
Reactを使ったVR環境
KatsuyaENDOH
The History of Reactive Extensions
Yoshifumi Kawai
フロントエンド技術の変遷
Ryo Higashigawa
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
GTC Japan 2016 Rescaleセッション資料「クラウドHPC ではじめるDeep Learning」- Oct/5/2016 at GTC ...
Rescale Japan株式会社
Swaggerを利用した新規サービス開発
recotech
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
Kazuhiro Yoshimoto
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
健人 井関
Introducing microsoft learn
ru pic
The Fastest Possible Way to Develop an Interactive App
LINE Corporation
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
CloudSQL v2は デキる子なのか?
Kumano Ryo
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
WESEEKWESEEK
React.jsでサービスを作ってみた話
GIG inc.
Reactive programming
Yasuki Okumura
いま考えられる限り最も速く対話型アプリを開発する方法
Kenichiro Nakamura
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Koichiro Sumi
WEBサービス開発もくもく会@北千住
尚 平岡
Ad
React Redux Storybook Swagger でフロント爆速開発
1.
React Redux Storybook Swagger でフロント爆速開発
2.
自己紹介 - 名前:小田翔太 - 経歴: -
上智大学卒業 - 旅行パッケージを扱うベンチャー企業でアルバイト - ビズリーチ新卒入社 (4月で2年目) - 〜10月、新卒事業部 - 〜現在、キャリアトレック事業部 - 職業:サーバーサイドエンジニア - C#(.Net), VB, SqlServer(1年) - Java, MySql(1年) - 自作WebAppFW作成中 - Carbon(https://github.com/ShotaOd/carbon) - 趣味 - サッカー - スノボ
3.
今日話すこと - 導入結果 - 実績 -
全体像 - 技術スタック - 開発フロー - 開発フロー - プレゼンテーション開発(React x Storybook) - Flux開発(Redux x Swagger) - 今後の課題
4.
導入結果
5.
実績(途中経過) - プロジェクト - CareerTrekサービスの求職者側トップページのSPA化 -
開発期間 - 約1ヶ月(2月末開始 〜 3月23日リリース) - エンジニア - 新卒×5名 - ベテラン1名
6.
全体像
7.
開発フロー(before) 要件 画面仕様 機能仕様 マークアップ実装 サーバーサイド実装 htmlテンプレート(thymeleaf ...) 非同期リクエスト(js) バリデーション(java,
js) javascript実装 (アニメーションetc) グレーゾーン
8.
開発フロー(before) 要件 画面仕様 機能仕様 マークアップ実装 サーバーサイド実装 htmlテンプレート(thymeleaf ...) 非同期リクエスト(js) バリデーション(java,
js) javascript実装 (アニメーションetc) グレーゾーン Htmlが不十分で サーバーサイド エンジニアが書き直す
9.
開発フロー(before) 要件 画面仕様 機能仕様 マークアップ実装 サーバーサイド実装 htmlテンプレート(thymeleaf ...) 非同期リクエスト(js) バリデーション(java,
js) javascript実装 (アニメーションetc) グレーゾーン Htmlが不十分で サーバーサイド エンジニアが書き直す そもそも javascript誰が書くんだっ け。。。
10.
開発フロー(before) 要件 画面仕様 機能仕様 マークアップ実装 サーバーサイド実装 htmlテンプレート(thymeleaf ...) 非同期リクエスト(js) バリデーション(java,
js) javascript実装 (アニメーションetc) グレーゾーン Htmlが不十分で サーバーサイド エンジニアが書き直す そもそも javascript誰が書くんだっ け。。。 APIの仕様が変わったから Javascriptでundefined...
11.
開発フロー(before) 要件 画面仕様 機能仕様 マークアップ実装 サーバーサイド実装 htmlテンプレート(thymeleaf ...) 非同期リクエスト(js) バリデーション(java,
js) javascript実装 (アニメーションetc) グレーゾーン Htmlが不十分で サーバーサイド エンジニアが書き直す そもそも javascript誰が書くんだっ け。。。 APIの仕様が変わったから Javascriptでundefined... フロントとバックエンドで 納品物のキャッチボール 終わらない。。。
12.
開発フロー(after) 要件 画面仕様 機能仕様 UIパーツ実装 APIドキュメント作成 Redux実装 サーバーサイド実装 フロント実装 ReactとReduxで実装すると。。。
13.
開発フロー(after) 要件 画面仕様 機能仕様 APIドキュメント作成 Redux実装 表示確認 With Storybook サーバーサイド実装 動作確認 With Swagger フロント実装 UIパーツ実装 StorybookとSwaggerを足してあげると。。。
14.
フロントの構成
15.
React Storybook フロントエンド主要技術スタック WebPack Redux react-css-module Swagger redux-thunk redux-actions プレゼンテーション Flux
16.
Redux構成 Presentation Action Redux connect Prev State Reducer Next State Redux thunk Props Store Middleware
17.
プレゼンテーション構成
18.
プレゼンテーション開発 React with Storybook
19.
プレゼンテーション開発トピック - jsが自由すぎて辛い - プレゼンテーションがどこでデータを受け取るか -
状態管理の意思統一 - ReactとStorybook で高速デバッグ
20.
jsの品質保証、苦労してわかったおすすめLint設定 - ベースはairbnb - CIに入れてエンジニアのソースコードへの意識向上 -
MAX厳しく but カスタマイズは必要(後述) - 例えば - comma-dangle - jsx-a11y/img-has-alt - ES6、Reactの勉強にもなる - react/jsx-boolean-value - object-shorthand ※ 人柱が必要
21.
やりすぎLintルール - consistent-return - react/prefer-stateless-function -
class-methods-use-this - arrow-body-style
22.
consistent-return - メソッドのreturnが統一されていない場合にエラー - ある条件のときだけは返り値があって、 -
ない場合に、undefinedとしたときに、冗長になる
23.
react/prefer-stateless-function - Component拡張クラスで、this・propsを一度も使用しない場 合に、Classで定義すると警告 class-methods-use-this - Class定義内で、this参照がない場合に警告
24.
arrow-body-style NG OK
25.
プレゼンテーションがどこでデータを受け取るか 参考:http://andrewhfarmer.com/react-ajax-best-practices/ 1. Root Component 2.
Container Componets 3. Redux Async Actions 4. Relay
26.
プレゼンテーションがどこでデータを受け取るか 参考:http://andrewhfarmer.com/react-ajax-best-practices/ 1. Root Component 2.
Container Componets 3. Redux Async Actions 4. Relay
27.
React 登場人物 Container Component ●
データソースを知っている(stateからデータを取得する) ● 子(Component)をたばねる ● 何をしたいかを知っている Presentational Component ● viewのパーツに相当 ● ‘具体的に何を’表示するかとかには関心がない
28.
概念図(再掲) プレゼンテーションがどこでデータを受け取るか
29.
状態管理の意思統一 - 状態は原則持たない - Reactはあくまでピュアな関数 -
例外:表示関連の状態 - サイドバーの表示状態とかまでRedux管理してられない
30.
Redux Three Principles ●
Single source of truth ● State is read-only ● Mutations are written as pure functions
31.
Storybookって - UI開発環境 兼
UIカタログ - iframeでReactのコンポーネントをうごかす - 静的なアウトプット(カタログ)の生成ができる
32.
準備① - npm install
-g @kadira/storybook - package.json
33.
準備② ./.storybook/config.js
34.
準備③ ./.storybook/webpack.config.js
35.
Storybook 実演
36.
React × Storybook
まとめ - アプリケーションに組み込まずに開発 - Lintをあえて入れない - レスポンシブ対応チェック - データパターン分パーツを用意 - 静的ファイル生成でPM・デザイナーに確認
37.
Flux開発 Redux with Swagger
38.
Flux開発トピック - Redux構成 - state管理が自由すぎてundefined…
← redux-actions - 一方通行は良いけど、非同期処理もしたい... ← redux-thunk - Swaggerで高速開発
39.
Fluxフロー(再掲) Presentation Action Redux connect Prev State Reducer Next State Redux thunk Props Store Middleware
40.
ロジック実装 - Redux
ActionCreator① 使用ライブラリ:redux-actions ● Flux-Standard-Actionsというactionオブジェクトの規約通りに action creatorを定義してくれるライブラリ
41.
ロジック実装 - Redux
ActionCreator② コードサンプル
42.
ロジック実装 - Redux
Async Action① 使用したライブラリ:redux-thunk ● 非同期Actionを発火できるようにするためのライブラリ APIリクエスト レスポンス取得 thunk がないと... ブロック
43.
ロジック実装 - Redux
Async Action② redux-thunkがあると... request Action API Request API Response finish Action presentation middleware network show loader show data
44.
Flux開発フロー - apiドキュメント作成 - 静的apiドキュメント生成 -
api通信部分実装(モックサーバー) - サーバーサイド完成後、結合確認
45.
Swagger - API周りをサポートするとっても大きいツール群 - OpenAPI
Specification(Swagger Specification)という規約 - JSON or YAMLで記述 今回使用するツール - ドキュメント作成 - swagger-editor - ドキュメント生成(静的) - bootprint-openapi - モックサーバー - swagger-tools
46.
APIドキュメント作成 Swagger Editor - OpenSpecificationを解釈してくれる公式のエディタ -
リアルタイムでプレビューを反映してくれる - Docker Container、node、webページとかいろいろな環境で 動くのがある - 今回は、Docker Containerを使用 (https://hub.docker.com/r/swaggerapi/swagger-editor/)
47.
静的apiドキュメント生成① bootprint-openapi - npm - npm
install --save-dev bootprint bootprint-openapi - package.json
48.
静的apiドキュメント生成②
49.
API通信部分実装 モックサーバー:swagger-tools 準備 - 認証処理は自前で実装する - CORS(Preflightリクエスト)対応する
50.
モックサーバーサンプルソース
51.
認証処理を追加
52.
CORS対応
53.
今後の課題 - Storybookのテスト機能を導入できていない - Redux
Dev Toolsを使い切れていない - ボイラープレートコードが量産されてる - 学習コスト - 関数型のデータフローへのマインドチェンジ - API仕様起点のテスト(サーバーサイド)
Download