SlideShare a Scribd company logo
1 of 27
REACT + REDUX で作る対話AI
自己紹介
Name: 多田 健太郎(ただ けんたろう)
Job: Webエンジニア @Nextremer.inc
Age: 32
From: Tokushima, Japan
twitter: @shuntxxxeve
Favorites:
javascript(es7): React/Redux, koa
ruby: Ruby on rails
アジェンダ
 フロントエンドを構成する技術について
• 現状
• これから
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
React
React
 Facebook謹製のUI構築用ライブラリ
• Viewのみ。MとかCとかの機能は持たない。
 仮想DOM
• DOMの描画処理をいい感じに最適化してくれる。速い。
 コンポーネントベース
• 画面をパーツ毎に管理する。再利用性高い。
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
フレームワーク&ライブラリ
 React
 Redux... その前に
 redux-saga
 Moducks
 Reselect
フレームワーク&ライブラリ
 React
 Redux... その前に Flux
 redux-saga
 Moducks
 Reselect
Flux
 フロントエンドのアプリケーションアーキテクチャ
 Facebook謹製
 一方向データフロー
• スパゲティになりづらい
 実はMVCのベストプラクティス版という意見も・・・
Flux
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
Redux
 Fluxアーキテクチャを実装したFWの1つ
• Flux勢で多分一番使われてる
 基本的な概念は超シンプル
• 1つの大きなStoreと、それを更新するpure functionであるreducer
• 純reduxだけだと非同期処理に弱いのでその辺はMiddlewareをつかう
 Reactとの親和性高い
• react-reduxという神ライブラリのおかげ
Redux
Thanks to André “Staltz” Medeiros @andresaltz
Flux Redux
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
ベースはこの2つ
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
redux-saga
 Reduxのmiddlewareの1つ
 非同期処理をタスクベースで定義出来る
• 何かしらのActionを受けて、何かしらの処理をして、何かしらのAction
を投げる
 学習コストは高いが効果も高い
• 中〜大規模なアプリケーションに適する
• よく比べられるredux-thunkやredux-promiseと比べて可読性は高くな
る(当社比
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
Moducks
 Reduxのducksパターンを実装するためのライブラリ
• ducksパターン=action, actionCreator, reducer, sagaを1ファイルに
まとめる(モジュールと呼んだりする
• このライブラリ使うとモジュールを超シンプルに記述できる
 神
Moducks
before after
フレームワーク&ライブラリ
 React
 Redux
 redux-saga
 Moducks
 Reselect
Reselect
 Viewで使用するデータをReduxから抽出&加工するた
めのライブラリ
• ReactとReduxの間にSelectorという概念を追加する
• Reduxでは純粋なデータを管理したいけど、Viewで表示する際は加工し
て表示したいとか。そういう要望を満たすためのライブラリ
• リストを特定の条件でソートしたりだとか、複数のstateの値を組み合わ
せて表示したりだとか
アーキテクチャ
その他に。。。
 ビルド
• Webpack
• Babel
• PostCSS
 テスト
• ESLint(Airbnb アセット)& StyleLint
• Prettier
• Jest
minaraiのこれから
 ReComposeの導入
• Reactの弱点:Component数が増えると描画が途端に重くなる
• 無駄な再描画が走りまくっていることが原因
• SFC + 必要に応じてLifecycleを導入
• ReComposeのPure Componentを利用
 React Storybookの導入
• デザイナとの分業
 Enzymeの導入
• Viewのテスト
今日話した内容はほぼQiitaに書いてます
Nextremer Advent Calendar 2017 2日目
「最近のReact/Redux周り晒す」
https://qiita.com/k_tada/items/ee4f552e17ea7731447a
最後に

More Related Content

What's hot

ReactNativeを語る勉強会
ReactNativeを語る勉強会ReactNativeを語る勉強会
ReactNativeを語る勉強会yohei sugigami
 
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったDMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったYuto Ogi
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Teppei Sato
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBenchKanako Kobayashi
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
milkcocoa 〜アプリ開発をもっと簡単に高速に〜
milkcocoa 〜アプリ開発をもっと簡単に高速に〜milkcocoa 〜アプリ開発をもっと簡単に高速に〜
milkcocoa 〜アプリ開発をもっと簡単に高速に〜Syuhei Hiya
 
サーバを運用する時代は終わった
サーバを運用する時代は終わったサーバを運用する時代は終わった
サーバを運用する時代は終わったYuki Ishikawa
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。Teppei Sato
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるSaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるMasashi Murakami
 
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たKenjiro Kubota
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basicsKouji Matsui
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみたOda Shinsuke
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 

What's hot (19)

ReactNativeを語る勉強会
ReactNativeを語る勉強会ReactNativeを語る勉強会
ReactNativeを語る勉強会
 
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作ったDMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBench
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
milkcocoa 〜アプリ開発をもっと簡単に高速に〜
milkcocoa 〜アプリ開発をもっと簡単に高速に〜milkcocoa 〜アプリ開発をもっと簡単に高速に〜
milkcocoa 〜アプリ開発をもっと簡単に高速に〜
 
gulp芸
gulp芸gulp芸
gulp芸
 
サーバを運用する時代は終わった
サーバを運用する時代は終わったサーバを運用する時代は終わった
サーバを運用する時代は終わった
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみるSaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
 
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
About Reauire.js
About Reauire.jsAbout Reauire.js
About Reauire.js
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basics
 
Blazor 触ってみた
Blazor 触ってみたBlazor 触ってみた
Blazor 触ってみた
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
React Native 入門
React Native 入門React Native 入門
React Native 入門
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 

Similar to React + Reduxで作る対話AI

Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmchuck h
 
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】WESEEKWESEEK
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいzaru sakuraba
 
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeCreate android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeGMO-Z.com Vietnam Lab Center
 
React.js + Reduxで作るSPA
React.js + Reduxで作るSPAReact.js + Reduxで作るSPA
React.js + Reduxで作るSPAShohei Saeki
 
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmクラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmDaisuke Nagata
 
Remote-Containersでnext.js環境を 作った話
Remote-Containersでnext.js環境を作った話Remote-Containersでnext.js環境を作った話
Remote-Containersでnext.js環境を 作った話Masaki Suzuki
 
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発yuichi kubota
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話GIG inc.
 
kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301Masanobu Shimura
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)Ryusaburo Tanaka
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞYoichi Toyota
 

Similar to React + Reduxで作る対話AI (20)

React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
 
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
Rails×React×TS で作るwebアプリ入門【weseek tech conf #10】
 
パフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したいパフォーマンス計測Ciサービスを作って得た知見を共有したい
パフォーマンス計測Ciサービスを作って得た知見を共有したい
 
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeCreate android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React Natice
 
React introduntion
React introduntionReact introduntion
React introduntion
 
React.js + Reduxで作るSPA
React.js + Reduxで作るSPAReact.js + Reduxで作るSPA
React.js + Reduxで作るSPA
 
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealmクラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
 
Reactのおさらい
ReactのおさらいReactのおさらい
Reactのおさらい
 
Remote-Containersでnext.js環境を 作った話
Remote-Containersでnext.js環境を作った話Remote-Containersでnext.js環境を作った話
Remote-Containersでnext.js環境を 作った話
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話
 
kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301kichijyojipm17-Riot20190301
kichijyojipm17-Riot20190301
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 

React + Reduxで作る対話AI

Editor's Notes

  1. ページカット候補。もしくは別添資料として。