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
PDF
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
PPTX
ZabbixとAWS
真乙 九龍
PDF
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
拓将 平林
PDF
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
PPTX
これから始める Azure の基礎サービス: IaaS/PaaS
Daiyu Hatakeyama
PDF
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
PDF
JIT のコードを読んでみた
y-uti
PDF
これからはじめるインフラエンジニア
外道 父
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
ZabbixとAWS
真乙 九龍
サーバーレスWebアプリケーションを作ろう~AWSと比べてみる~
拓将 平林
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
これから始める Azure の基礎サービス: IaaS/PaaS
Daiyu Hatakeyama
Keycloakの最近のトピック
Hitachi, Ltd. OSS Solution Center.
JIT のコードを読んでみた
y-uti
これからはじめるインフラエンジニア
外道 父
What's hot
(20)
PPTX
Composer bin plugin / ツールの依存管理から解放される
Kentarou Takeda
PDF
Keycloak拡張入門
Hiroyuki Wada
PDF
ソフトウェア開発工程とテスト入門
tadaaki hayashi
PDF
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
PDF
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
PDF
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
PPTX
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
toshi_pp
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
PDF
これだけ差が出るソース側重複排除【Veeam v9新機能】
株式会社クライム
PDF
ヤフー発のメッセージキュー「Pulsar」のご紹介
Yahoo!デベロッパーネットワーク
PDF
とある診断員とSQLインジェクション
zaki4649
PDF
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
PDF
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
PPTX
SteelEye 표준 제안서
Yong-uk Choe
PDF
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
Toru Yamaguchi
PDF
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
PDF
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
Yahoo!デベロッパーネットワーク
PPTX
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
PPTX
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
PDF
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
Composer bin plugin / ツールの依存管理から解放される
Kentarou Takeda
Keycloak拡張入門
Hiroyuki Wada
ソフトウェア開発工程とテスト入門
tadaaki hayashi
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
toshi_pp
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
Google Cloud Platform - Japan
これだけ差が出るソース側重複排除【Veeam v9新機能】
株式会社クライム
ヤフー発のメッセージキュー「Pulsar」のご紹介
Yahoo!デベロッパーネットワーク
とある診断員とSQLインジェクション
zaki4649
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
SteelEye 표준 제안서
Yong-uk Choe
OAuth 2.0 Web Messaging Response Mode - OpenID Summit Tokyo 2015
Toru Yamaguchi
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
Yahoo!デベロッパーネットワーク
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
Anthos を使ったエンタープライズ向けクラスタの設計とアップグレード戦略のススメ(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
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