Submit Search
Upload
実践 Redux Saga -Practical Redux Saga-
•
Download as PPTX, PDF
•
11 likes
•
10,330 views
Shinichiro Yoshida
Follow
第21回スタジオ・アルカナ社内勉強会のスライドです。 jQueyから始まり、React、FLUX、Redux、Redux Sagaの概要をやんわりと。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 151
Download now
Recommended
React + FLUX + Redux + Redux Saga のお話
React + FLUX + Redux + Redux Saga のお話
Shinichiro Yoshida
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
Kazuhiro Yoshimoto
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
Kazuhiro Yoshimoto
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
Kazuhiro Yoshimoto
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Shuji Watanabe
Node.jsのオートスケールをFRPで管理する
Node.jsのオートスケールをFRPで管理する
kidach1
Recommended
React + FLUX + Redux + Redux Saga のお話
React + FLUX + Redux + Redux Saga のお話
Shinichiro Yoshida
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
Kazuhiro Yoshimoto
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
Kazuhiro Yoshimoto
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン
Kazuhiro Yoshimoto
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
エンジニア勉強会 エスキュービズム
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Shuji Watanabe
Node.jsのオートスケールをFRPで管理する
Node.jsのオートスケールをFRPで管理する
kidach1
React Native 入門
React Native 入門
Seiichi Okumiya
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
kujirahand kujira
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
JavaScript 研修
JavaScript 研修
Yuki Ishikawa
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
智治 長沢
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
モダンなAndroidアプリ開発勉強会
モダンなAndroidアプリ開発勉強会
Shoichi Kakizaki
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました
Mitsuru Ogawa
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話
yoshioka_cb
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Maaya Ishida
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Yutaro Miyazaki
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
Yusaku Kinoshita
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
schoowebcampus
React + Flux
React + Flux
_yukikayuki
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
No4
No4
Akihiro Sugiyama
More Related Content
What's hot
React Native 入門
React Native 入門
Seiichi Okumiya
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
kujirahand kujira
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
JavaScript 研修
JavaScript 研修
Yuki Ishikawa
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
智治 長沢
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
モダンなAndroidアプリ開発勉強会
モダンなAndroidアプリ開発勉強会
Shoichi Kakizaki
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました
Mitsuru Ogawa
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Shin Ogata
RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話
yoshioka_cb
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Maaya Ishida
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Yutaro Miyazaki
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
Mitsuru Ogawa
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
Yusaku Kinoshita
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
schoowebcampus
React + Flux
React + Flux
_yukikayuki
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
hideaki honda
What's hot
(20)
React Native 入門
React Native 入門
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
JavaScript 研修
JavaScript 研修
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
モダンなAndroidアプリ開発勉強会
モダンなAndroidアプリ開発勉強会
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
RailsでReact.jsを動かしてみた話
RailsでReact.jsを動かしてみた話
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
非エンジニアが MENstackでWebアプリをつくった話 #nodejs
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
React + Flux
React + Flux
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
jQueryを中心としたJavaScript
jQueryを中心としたJavaScript
Similar to 実践 Redux Saga -Practical Redux Saga-
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
No4
No4
Akihiro Sugiyama
いま、できるアジャイル
いま、できるアジャイル
Masanori Kado
Roo
Roo
terahide
React introduntion
React introduntion
YutaShimabukuro
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
Walking front end
Walking front end
Hirata Tomoko
2020年01月24-25日 「仮説検証型UXデザイン特論」 講義資料 @産技大講義
2020年01月24-25日 「仮説検証型UXデザイン特論」 講義資料 @産技大講義
chachaki chachaki
Next.js Storybook Driven Development
Next.js Storybook Driven Development
Takuya Tejima
改善React道
改善React道
Hoso michi
WebエンジニアのReactNativeでの戦い方
WebエンジニアのReactNativeでの戦い方
PIXTA Inc.
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
Yusaku Kinoshita
グリッドレイアウトを簡単に行うJavaScript!Masonry.js
グリッドレイアウトを簡単に行うJavaScript!Masonry.js
Yoshinori Kobayashi
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
Recruit Lifestyle Co., Ltd.
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Hideki Takase
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Koji Hasegawa
Practices Of An Agile Developer
Practices Of An Agile Developer
Shintaro Kakutani
Spath for enterprise
Spath for enterprise
Koichiro Sumi
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
Hiroyuki Kusu
Similar to 実践 Redux Saga -Practical Redux Saga-
(20)
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
No4
No4
いま、できるアジャイル
いま、できるアジャイル
Roo
Roo
React introduntion
React introduntion
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
Walking front end
Walking front end
2020年01月24-25日 「仮説検証型UXデザイン特論」 講義資料 @産技大講義
2020年01月24-25日 「仮説検証型UXデザイン特論」 講義資料 @産技大講義
Next.js Storybook Driven Development
Next.js Storybook Driven Development
改善React道
改善React道
WebエンジニアのReactNativeでの戦い方
WebエンジニアのReactNativeでの戦い方
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
エンジニアじゃなくてもAngularJS×milkcocoaでチャットアプリが1時間!? 非エンジニアから見たAngularJSの感動するポイント3つ
グリッドレイアウトを簡単に行うJavaScript!Masonry.js
グリッドレイアウトを簡単に行うJavaScript!Masonry.js
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Practices Of An Agile Developer
Practices Of An Agile Developer
Spath for enterprise
Spath for enterprise
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
【DroidKaigi2015】初学者に嬉しいAndroid開発環境(あとMVCとか)
More from Shinichiro Yoshida
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
Shinichiro Yoshida
"Oculus Go" と "Gear VR" のチガイ #sa_study
"Oculus Go" と "Gear VR" のチガイ #sa_study
Shinichiro Yoshida
自己紹介&このスライドのデザインの作り方 #sa_study
自己紹介&このスライドのデザインの作り方 #sa_study
Shinichiro Yoshida
ルワンダのIT視察レポートだよ #sa_study
ルワンダのIT視察レポートだよ #sa_study
Shinichiro Yoshida
World Wide Web with Virtual Reality #sa_study
World Wide Web with Virtual Reality #sa_study
Shinichiro Yoshida
インターネッツの繋がるしくみ(DNS編) #sa_study
インターネッツの繋がるしくみ(DNS編) #sa_study
Shinichiro Yoshida
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
Shinichiro Yoshida
インターネッツの繋がるしくみ(物理層編) #sa_study
インターネッツの繋がるしくみ(物理層編) #sa_study
Shinichiro Yoshida
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
Shinichiro Yoshida
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
Shinichiro Yoshida
【DevLOVE現場甲子園2014】【守】「テレビ×スマホで視聴者が番組に参加!そのメディア体験を支えるインフラと運用の舞台裏」
【DevLOVE現場甲子園2014】【守】「テレビ×スマホで視聴者が番組に参加!そのメディア体験を支えるインフラと運用の舞台裏」
Shinichiro Yoshida
簡単/動画共有サービス『REPRE(リプレ)』の紹介|第75回PHP勉強会LT@EngineYard
簡単/動画共有サービス『REPRE(リプレ)』の紹介|第75回PHP勉強会LT@EngineYard
Shinichiro Yoshida
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
Shinichiro Yoshida
【OSC2011広島】Red5デモ(日本Red5ユーザー会)
【OSC2011広島】Red5デモ(日本Red5ユーザー会)
Shinichiro Yoshida
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
Shinichiro Yoshida
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
Shinichiro Yoshida
オープンソースカンファレンス2011 Kansai@Kobe
オープンソースカンファレンス2011 Kansai@Kobe
Shinichiro Yoshida
Osc2011 kobe 20110416_01
Osc2011 kobe 20110416_01
Shinichiro Yoshida
OSC2011 Tokyo/Spring 『Red5とFlexで「簡易電子会議室システム」を作ってみよう!』
OSC2011 Tokyo/Spring 『Red5とFlexで「簡易電子会議室システム」を作ってみよう!』
Shinichiro Yoshida
Red5とFlexで作るmixiアプリ「ビデオチャット」事例紹介
Red5とFlexで作るmixiアプリ「ビデオチャット」事例紹介
Shinichiro Yoshida
More from Shinichiro Yoshida
(20)
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
Laravel×DevOps -インフラ構築の自動化から運用ログの監視まで-
"Oculus Go" と "Gear VR" のチガイ #sa_study
"Oculus Go" と "Gear VR" のチガイ #sa_study
自己紹介&このスライドのデザインの作り方 #sa_study
自己紹介&このスライドのデザインの作り方 #sa_study
ルワンダのIT視察レポートだよ #sa_study
ルワンダのIT視察レポートだよ #sa_study
World Wide Web with Virtual Reality #sa_study
World Wide Web with Virtual Reality #sa_study
インターネッツの繋がるしくみ(DNS編) #sa_study
インターネッツの繋がるしくみ(DNS編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(TCP/IP編) #sa_study
インターネッツの繋がるしくみ(物理層編) #sa_study
インターネッツの繋がるしくみ(物理層編) #sa_study
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
AWS Opsworksを使ってPHPとLaravelが動くサーバーを構築してみよう!at phpstudy#97
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
【DevLOVE現場甲子園2014】【守】「テレビ×スマホで視聴者が番組に参加!そのメディア体験を支えるインフラと運用の舞台裏」
【DevLOVE現場甲子園2014】【守】「テレビ×スマホで視聴者が番組に参加!そのメディア体験を支えるインフラと運用の舞台裏」
簡単/動画共有サービス『REPRE(リプレ)』の紹介|第75回PHP勉強会LT@EngineYard
簡単/動画共有サービス『REPRE(リプレ)』の紹介|第75回PHP勉強会LT@EngineYard
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
リアルタイム通信アプリはつくれる!『Red5 Media Server』の機能と事例のご紹介
【OSC2011広島】Red5デモ(日本Red5ユーザー会)
【OSC2011広島】Red5デモ(日本Red5ユーザー会)
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
【OSC2011広島】共有アプリで遊ぼう!(日本Red5ユーザー会)
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
TV会議をオープンソースで実現!RED5によるストリーミング配信講座
オープンソースカンファレンス2011 Kansai@Kobe
オープンソースカンファレンス2011 Kansai@Kobe
Osc2011 kobe 20110416_01
Osc2011 kobe 20110416_01
OSC2011 Tokyo/Spring 『Red5とFlexで「簡易電子会議室システム」を作ってみよう!』
OSC2011 Tokyo/Spring 『Red5とFlexで「簡易電子会議室システム」を作ってみよう!』
Red5とFlexで作るmixiアプリ「ビデオチャット」事例紹介
Red5とFlexで作るmixiアプリ「ビデオチャット」事例紹介
Recently uploaded
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(9)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
実践 Redux Saga -Practical Redux Saga-
1.
実践 Redux Saga -Practical
Redux Saga- 2017/01/27(金) スタジオ・アルカナ 社内勉強会 #21 よしだ しんいちろう
2.
自己紹介 name: “よしだ しんいちろう” age:
32 worksAt: “Studio Arcana co.,Ltd.” roles: [ “Web Application Developer”, “Management” ] twitter: “@yossy222” graduated: [ “Advanced Institute of Industrial Technology”, “National Institute of Technology, Kushiro College” ] 2
3.
自己紹介 Prototype.js/script.aculo.us (2007年頃) YUI Library(2008年頃) jQuery/jQuery
UI(2008年~) Backbone.js(2013年頃) Riot.js(2016年頃) Angular 1(2014年~) React.js(2014年~) なんぞを一通り使ってみたことはある程度のおっさんです。 3
4.
自己紹介 と、フロントエンドやってる人っぽく書いてみましたが、 本業はディレクション/マネジメントがほとんど。 趣味がてら、IPAプロジェクトマネージャ、ネットワークスペ シャリスト、データベーススペシャリスト、情報セキュリティス ペシャリスト、アプリケーションエンジニアなど。 守備範囲は広めで生きていきたい。 4
5.
自己紹介 なお、このスライドのトンマナは、 スーパーナントカメーカーに影響を受けています。 hico00氏に表紙をみせたら、神速で こういうコメントを送ってきましたが、それではない。 (プリンはファミマの「くちどけ贅沢プリン」が好きです。ください。) 5
6.
はじめに 6
7.
はじめに あけましておめでとうございます。 2017年もよろしくお願いします。 7
8.
はじめに ほんだい 8
9.
はじめに プロダクションの案件で redux-saga を 使ってみたということで、 そのお話をしてみます。 9
10.
はじめに Redux Sagaを使うにあたり、 どのような指針で設計をしたか? なぜそのような指針にしたか? その結果、何が見えてきたか? といった感じの内容です。 10
11.
はじめに 設計思想や考え方の話が多く、 抽象的なクダリも多いですが、 ご承知おきください。 あと、Redux Sagaまでの 前置きの話も長いです。 11
12.
技術要素 12
13.
技術要素 React , Redux
, Redux Saga , Apache Cordova , Onsen UI , Sqlite , WebSQL , WebAPI(Ajax) , Webpack , Babel(stage-0), ES6 , Generator(ES6) , Promise(ES6), Gulp, Sass あたりの技術を使ってます。 今日のお話しは、赤字の部分だけ。 13
14.
今日お話しすること 14
15.
今日お話しすること jQuery React FLUX Redux Redux Saga 15
16.
今日お話しすること 順番にいってみよう 16
17.
jQuery 17
18.
jQuery jQueryはみんな知ってますね? 18
19.
jQuery 画面の状態を変更するときは、 DOMを直接操作します。 19
20.
jQuery 20 HTML HTML HTMLのDOMを直接操作する
21.
jQuery シンプルな構成のサイトで 使う分には、全く問題ない。 21
22.
jQuery 静的なHTMLのサイトで、 ちょっとアコーディオン。 ちょっとインタラクション。 ちょっとタブ切り替え。 ちょっと外部APIを呼び出す。 など 22
23.
jQuery しかし、 DOMの変更を多用すると、 どこで何が起きているか わからなくなる。 23
24.
jQuery 外部からデータを取得して、 HTMLテンプレート定義して、 テンプレートの文字列を置換して、 画面に結果のHTMLを表示して、 24
25.
jQuery .append()… .appendTo()… .addClass()… .attr()… …??? 25
26.
jQuery その間にユーザーが別の 操作をしたらどうなる? 外部からデータが 取得できなかったらどうなる? データ呼出しのボタンを 連打されたらどうなる? 26
27.
jQuery DOM操作するタイミングで、 既にDOMの構造が 変化していたらどうなる? CSSクラス名を付けたり消したり するタイミングが重複したらどうなる? 27
28.
jQuery いろんな所でイベントリスナー 監視しまくりのコードを 自分が引き継いだら理解できる? 28
29.
jQuery 29 HTML
30.
jQuery 30 HTML HTML
31.
jQuery 31 HTML HTML HTML
32.
jQuery 32 HTML HTML HTML HTML
33.
jQuery 33 HTML HTML HTML HTML
HTML 元の状態は… ???
34.
jQuery 34 ※出典:山口県周南市徳山動物園のツヨシくん
35.
jQuery そこで、 Reactのでばん 35
36.
jQuery Reactを使うことで、 いくつかの課題を解決できます 36
37.
React 37
38.
React Reactは、 UIを構築するためのライブラリ 38
39.
React Model, View, Controller
の Viewだけ担当みたいな役割 39
40.
React Component という単位の パーツを組み合わせて HTMLのDOM構造を構築する 40
41.
React Componentのクラスの中で JSXというHTMLっぽい記法で DOMの構造を定義できる 41
42.
React 42 HTMLComponent JSX
43.
React class HelloMessage extends
React.Component { render() { return <div>Hello Jane</div>; } } ReactDOM.render(<HelloMessage />, mountNode); 43 Component <div>Hello Jane</div> HTML
44.
React HTMLの属性と似たように Propsという属性も定義できる。 44
45.
React 45 HTMLComponent Props PropsはComponentが外部から受け取ることができる値 オブジェクト指向でいうとsetterのようなイメージ JSX
46.
React class HelloMessage extends
React.Component { render() { return <div>Hello {this.props.name}</div>; } } ReactDOM.render(<HelloMessage name="Jane" />, mountNode); 46 Component <div>Hello Jane</div> HTML
47.
React Component は Propsのほかに、 Stateとよばれる状態を 保持することもできる 47
48.
React 48 HTMLComponent State Stateは、そのComponentの内部だけで操作できる値 オブジェクト指向のprivateプロパティのようなイメージ JSX
49.
React 画面のDOMの構造は “Props”と“State” の状態によって、決定する 49
50.
React 50 HTMLComponent State Props JSX
51.
React jQueryの場合だと 51
52.
React 52 HTML HTML jQueryの場合 HTMLのDOMを直接操作する
53.
React Reactの場合だと 53
54.
Component React 54 HTML Reactの場合 JSX
55.
Component Props React 55 HTML Reactの場合 JSX
56.
Component Props React 56 HTML State Reactの場合 JSX
57.
Component Props React 57 HTML State Reactの場合 JSX
58.
Component Props React 58 HTML State Reactの場合 JSX
59.
Component Props React 59 HTML State Reactの場合 JSXとStateとPropsによって、 HTMLのDOM構造が決定する JSX
60.
Component Props React 60 HTML State Reactの場合 DOMの構造は、Reactが変更を 自動的に計算し、差分だけ更新する (Virtual DOM) JSX
61.
React Component は部品ごとに 細かく分けてネストもできる 61
62.
React 62 HTMLComponent Component Component Component 子のComponentにはPropsで値を渡すことができる オブジェクト指向でいうと別クラスに委譲して引数で値を渡すイメージ
63.
React 63 Component Component Component Component Component Componentはツリー上の構造にすることもできて、 親から子へのデータはPropsで渡していく
64.
React 64 Component Component Component Component Component Callback Callback 子から親へのデータは、コールバック関数を経由してやり取りする
65.
FLUX 65
66.
FLUX FLUXは、 アプリケーション構造の アーキテクチャ 66
67.
FLUX Hacker Way: Rethinking
Web App Development at Facebook https://www.youtube.com/watch?v=nYkdrAPrdcw 67
68.
FLUX MVCの場合 ※サーバーサイドのMVCではなく、 GUIのMVC (Smalltalk MVC)
ね。 68
69.
FLUX 構造が複雑になるとスケールしない。 (ModelとViewのデータフローが双方向で、 コードの影響が予測しにくい) 69
70.
FLUX この場合も子と親のデータフローが双方向で、 コードの影響が予測しにくい。 70 Component Component Component Component Component Callback Callback State 更新
71.
FLUX そこで、FLUXのでばん 71
72.
FLUX FLUXの場合 72
73.
FLUX データフローを単方向にすることで、 コードの影響を予測しやすくする 73
74.
FLUX 74 Action Dispatcher Store View アプリケーションに必要なデータを保持する領域。 データの保持と、データを操作するロジックを持つ。 Dispatcherにより、メソッドが呼び出される。 Storeの状態によって、描画する画面が決定する。 ボタンを押す、といったようなユーザーの操作。 ユーザー操作を受け取って、Storeのメソッドを呼ぶ。 (Actionを受け取って、Storeに指示を送る。)
75.
FLUX 75 HTMLComponent State Props JSX Reactのイメージがこうだとしたら、
76.
FLUX 76 HTMLComponent State Props JSX StateがComponentの外に出て、
77.
FLUX 77 HTML Store View (Container) Component State Props JSX それぞれがStoreとViewという位置づけに。
78.
FLUX 78 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State そして、こんなデータフローに。
79.
FLUX コードを見てみましょう 79
80.
FLUX 80 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State
81.
FLUX import HelloDispatcher from
'./HelloDispatcher'; const HelloActions = { changeName(name) { HelloDispatcher.dispatch({ type: ‘CHANGE_NAME’, name, }); } }; export default HelloActions; 81 HelloAction ユーザーがHelloボタンを押したときに呼ばれる。 パラメータでnameを受け取っている。 Storeへ渡されるActionのオブジェクト。 typeとnameを保持している。
82.
FLUX 82 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State
83.
FLUX import {Dispatcher} from
'flux'; export default new Dispatcher(); 83 HelloDispatcher Fluxが提供してるDispatcher
84.
FLUX 84 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State
85.
FLUX import {ReduceStore} from
'flux/utils'; import HelloDispatcher from './HelloDispatcher'; class HelloStore extends ReduceStore { getInitialState() { return 'Jane'; } reduce(state, action) { switch (action.type) { case ‘CHANGE_NAME': return action.name; default: return state; } } } export default new HelloStore(HelloDispatcher); 85 HelloStore Actionを受け取り、ユーザー操作のタイプに 応じて、値を返却する。
86.
FLUX 86 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State
87.
FLUX import {Container} from
'flux/utils'; import HelloStore from './HelloStore'; import HelloComponent from './HelloComponent'; class HelloContainer extends Component { static getStores() { return [HelloStore]; } static calculateState(prevState) { return { name: HelloStore.getState(), }; } render() { return <HelloComponent name={this.state.name} />; } } const AppContainer = Container.create(HelloContainer); ReactDOM.render(<AppContainer />, mountNode); 87 HelloContainer
88.
FLUX 88 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State
89.
FLUX import React from
'react'; import HelloActions from ‘./HelloActions'; class HelloComponent extends React.Component { handleChange(event) { HelloActions.changeName(event.target.value); }; render() { return (<div> <div>Hello {this.props.name}</div> <input type=“text” onChange={this.handleChange} /> </div>); } } export default HelloComponent; 89 HelloComponent
90.
Redux 90
91.
Redux Reduxは、 FLUXとElmArchitectureに 影響を受けた ステート管理コンテナ 91
92.
Redux http://elm-lang.org/ (action, state) =>
state Elm“updaters”≒ Redux“reducers” このあたりの考え方がおなじ。 92
93.
Redux Reduxは、 FLUXと似ています。 93
94.
Redux Reduxは制約を強めて、 次のような条件をつきます 94
95.
Redux 「Storeは、ひとつだけ」 「Stateは、原則、読み取り専用」 「状態の変化は、Reducer経由で」 95
96.
Redux Dispatcherという概念もない 96
97.
Redux 97 Action Reducer State アプリケーションに必要なデータを保持する領域。 ボタンを押す、といったようなユーザーの操作。 ユーザー操作を受け取って、新しいStateを返す。 (Actionを受け取って、Storeに結果を渡す。)
98.
Redux 98 HTML Dispatcher View (Container) Component Props JSX ActionActionAction StoreStoreStore State これはFLUXのときの図
99.
Redux 99 HTML Reducer View (Container) Component Props JSX ActionActionAction State Dispatcherはない。
100.
Store Redux 100 Reducer View (Container) Component Props JSX ActionActionAction State Storeはひとつだけ。
101.
Redux 101 View (Container) Component Props JSX ActionActionAction もうちょっと分解してみると、 Store Reducer State
102.
Redux 102 Provider Component Props JSX ActionActionAction Container Store Reducer State こんな感じ
103.
Redux 103 Provider Component Props JSX ActionActionAction Container Store Reducer State
104.
Redux FLUXとだいたい流れは似てますね? 104
105.
Redux Reduxの強み Middleware 105
106.
Redux 106 Provider Component Props JSX ActionActionAction Container Store Reducer State Reduxには、 Middlewareという仕組みがあります
107.
Redux 107 Provider ActionActionAction Container Store Reducer State Component Props JSX Middleware
108.
Redux Middlewareを使うことで 外部API呼び出しなどの 非同期処理の取り扱いができる (副作用とか呼ばれてる) 108
109.
Redux 109 Provider ActionActionAction Container Store Reducer State Component Props JSX Middleware外部API
110.
Redux Middlewareの中のひとつが、 Redux Saga 110
111.
Redux Saga 111
112.
Redux Saga Actionを受け取って 任意のロジックを非同期で処理 112
113.
Redux Saga 113 Provider Action Action
Container Reducer State Component Props JSX Saga 外部API Action 非同期処理
114.
Redux Saga Sagaから、別のSagaを 呼び出すこともできる 114
115.
Redux Saga 115 Action Saga Saga 外部API Saga DB Saga 外部API 呼出し方は2通り ・Fork: 非同期で呼出し ・Call:
同期的に呼出し Fork Fork Call
116.
Redux Saga Actionを発行したり、 受け取ったりすることもできる 116
117.
Redux Saga 117 Reducer Saga Action Saga Put Take Action Put
118.
Redux Saga 実際のところ、どう使うのか 118
119.
Redux Saga いろいろな組み合わせ方ができるので 人によって実装がバラバラになる 119
120.
Redux Saga ある程度のガイドラインを決めたい 120
121.
Redux Saga いろいろ模索してみた結果 121
122.
Redux Saga 素晴らしい記事と出会う 122
123.
Redux Saga 123 https://medium.com/@marcelschulze/using-react-native-with-redux-and-redux-saga-a-new-proposal-ba71f151546f
124.
Redux Saga ActionはすべてSagaを経由する 124
125.
Redux Saga Actionを2種類で分けて考える 「System&User Action」 「Reducer
Action」 125
126.
Redux Saga どういうことかというと、 126
127.
Redux Saga 127 Provider Action Action
Container State Component Props JSX Saga 外部API Action Reducer
128.
Redux Saga 128 Provider Action Action
Container State Component Props JSX Saga 外部API Action Reducer ユーザー操作のActionは直接Reducerへ渡さない
129.
Redux Saga 129 Provider Action Container State Component Props JSX Saga 外部API Action
Reducer 単一のデータフローを維持 (副作用ではなく、主作用として考える)
130.
Redux Saga 130 Provider Action Container State Component Props JSX Saga 外部API Action
Reducer User Action Reducer Action
131.
Redux Saga 「System&User Action」 ユーザーが操作したアクション or システムから発生したアクション 131
132.
Redux Saga Actionのtypeの命名指針は大事。 「だれが、何を、どうした」 が、わかるような命名に決めた。 e.g. USER_NEWS_ARTICLE_TOUCHED e.g.
SYSTEM_APP_LAUNCHED 132
133.
Redux Saga 「Reducer Action」 Reducerへ渡すための State更新指示をするAction 133
134.
Redux Saga こちらもActionの命名指針は大事。 「Sagaが、何を、どうした」 が、わかるような命名に決めた。 e.g. REDUCER_VIEW_NEWS_FETCH_DONE 134
135.
Redux Saga ほかに、役割ごとにレイヤー化 データフローの流れを決める 135
136.
136 Redux Saga Ajax Model User Action User Interface Data Access Data Integration User Event Data Store State Machine Reducer Web API
XML-RPC Static JSON Database Ajax Redux Saga Layer Model / with React, Redux, Redux Saga, External API StateState Ajax Redux Container Redux Provider React Component HTTP HTTP HTTP Sqlite/webSQL/localStorage System Action Redux Saga State Event Reducer Action
137.
137 Redux Store State Action Dispatch Index.js Reducer Action React Provider data process component Action App Initial News Product Action Dispatch Action Dispatch user operation initialize completion Saga
(Redux Middleware) Saga (root) user operation take Saga (thread) External API WebAPI XML-RPC Static JSON fork fetch / HTTP Ajaxcall Dispatch Saga (thread) Ajax put Model call fork fetch / HTTP selectは参照しない。 (state(=View構造)に依存するから) (でも通信中状態の判定では必要かも) put Internal API Storage Action operation fetch Dispatch Action 凡例 transfered
138.
Redux Saga という感じの ガイドラインに落ち着く。 138
139.
まとめ 139
140.
まとめ React + Redux
+ Redux Saga 学習コストはちょっと高いかも。 慣れてしまえばコードは追いやすい。 メンテも引き継ぎもしやすい。 チームでスケールして戦える。 140
141.
まとめ レイヤー構造やデータフローを常に 意識しながら設計する必要がある。 設計の難易度はちょっと高めかも。 小さい規模の案件には向かないかも。 長期メンテのある案件には向いてそう。 141
142.
Appendix 142
143.
React Fiber React Fiber
に期待したい気持ち (Reactコアアルゴリズムの再実装) 60FPS出せたり、アニメーションの実装が しやすくなるといいな… https://github.com/acdlite/react-fiber-architecture (ちなみに、React 16からFiberがデフォルトになるみたい) 143
144.
React Fiber Andrew Clark:
What's Next for React — ReactNext 2016 https://www.youtube.com/watch?v=aV1271hd9ew 144
145.
React Fiber POSTDのこの記事もよかったです http://postd.cc/react-fiber-architecture/ 145
146.
FLUX Standard Action Actionのデータ構造の標準 https://github.com/acdlite/flux-standard-action 146 An
action MUST - be a plain JavaScript object. - have a type property. An action MAY - have an error property. - have a payload property. - have a meta property.
147.
FLUX Standard Action サンプル 147 { type:
'ADD_TODO', payload: { text: 'Do something.' } }
148.
FLUX Standard Action ガイドラインに従うことで、 コードのクオリティが均一になるので、 積極的に合わせていきましょう。 148
149.
おしまい 149
150.
おしまい ご清聴ありがとうございました。 150
151.
おしまい 151
Download now