SlideShare a Scribd company logo
1 of 10
Download to read offline
ReactとBabelで
簡易タスク管理ツール作ってみた
1
Tsuyoshi Maeda
目次
1. はじめに
2. Reactとは
1. Flux基本概念図
3. JSX
4. 参考になるページ
5. 実際に作ったサンプル
6. サンプルをいじってFluxスタイルにしよう
2
はじめに
• 自分がReactをちょっと触ってみたいと思ってた
のと、発表まで時間がなく1日くらいで調べなが
ら簡単なタスク管理ツールを作ったものなので
内容はかなり薄いものになっております。

ご了承ください。
• Babelに関しては以前に発表した資料を参考にし
て頂けたらと思います。

http://www.slideshare.net/tsuyoshimaeda56/babeljavascript
3
Reactとは
• Facebookが提供するView周りの操作に特化したライブラリ

https://facebook.github.io/react/
• Virtual DOMという概念を取り入れてドキュメントツリーに
変更があった場合、以前の構造との差分だけレンダリングを
行いレンダリングコストを少なくしている。
• Fluxというデータフローのアーキテクチャの概念を取り入れ
て使うのが一般的らしい。(あくまでもReactはViewの生成
周りに特化しているものと考えておいて良いと思う。)

https://facebook.github.io/flux/docs/overview.html
4
Flux基本概念図
• 引用元 : https://facebook.github.io/flux/
docs/overview.html
5
データの流れが一方通行。

オブザーバパターンを使ったデータの流れ。
JSX
• 要素の構造をHTMLのように書くことが出来る
ツール。
• BabelにはビルトインでJSXの機能が搭載。
6
render() {
return React.createElement(
'a',
{href: 'http://facebook.github.io/react/'},
Hello!'
);
}
↓ JSX(Babel)で以下のように直感的な書き方で書ける。
render() {
return <a href= http://facebook.github.io/react/">Hello!</a>;
}
参考になる(した)ページ
7
• 一人React.js Advent Calendar 2014

これを一通り読めばReactについておおよそ理解できそう。(今
回のサンプルを作るのに7日目まで読み進めました。)

http://qiita.com/advent-calendar/2014/reactjs
実際に作ったサンプル
• https://github.com/duyoji/react_todo
8
サンプルをいじって

Fluxスタイルにしよう
9
• サンプルの実装

クリックなどのアクション発生(子コンポネント)

↓

親コンポネントにアクション後処理を委譲

↓

親コンポネント内でデータの更新

↓

更新したデータを子コンポネントに渡し再度レン
ダリング
サンプルをいじって

Fluxスタイルにしよう
10
• Fluxスタイル

クリックなどのアクション発生(子コンポネント)

↓

ディスパッチイベントを投げてストアで処理を行う。

↓

ストアでデータの更新をしたらストアを監視している親
コンポネントにデータを渡す。

↓

親コンポネントは渡されたデータを受け取ってデータ
を更新。(再レンダリング)

More Related Content

What's hot

FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たKenjiro Kubota
 
Gruntの罪と罰
Gruntの罪と罰Gruntの罪と罰
Gruntの罪と罰kamiyam .
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発するHiroyuki Kusu
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Kohei Asai
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。Teppei Sato
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminalTakuya ASADA
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみたSeiya Konno
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8masahitojp
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaYoshihiro Iwanaga
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Kazuto Kusama
 
CloudFoundryこと始め
CloudFoundryこと始めCloudFoundryこと始め
CloudFoundryこと始めNaoto TAKAHASHI
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築kamiyam .
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Hironao Sekine
 
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜Kazuya Hiruma
 

What's hot (20)

FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
 
Gruntの罪と罰
Gruntの罪と罰Gruntの罪と罰
Gruntの罪と罰
 
20131012 nodejs
20131012 nodejs20131012 nodejs
20131012 nodejs
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
 
20150523
 20150523 20150523
20150523
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 
月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた月刊ライトニングトーク 2014/05 atom-shell を試してみた
月刊ライトニングトーク 2014/05 atom-shell を試してみた
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
 
Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践Cloudn PaaSチームのChatOps実践
Cloudn PaaSチームのChatOps実践
 
CloudFoundryこと始め
CloudFoundryこと始めCloudFoundryこと始め
CloudFoundryこと始め
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築Grunt.jsを使った Expressの開発環境構築
Grunt.jsを使った Expressの開発環境構築
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
 
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
 

Similar to Reactとbabelで簡易タスク管理ツール作ってみた

React + Reduxで作る対話AI
React + Reduxで作る対話AIReact + Reduxで作る対話AI
React + Reduxで作る対話AIKentaro Tada
 
Xcodeにおけるライブラリの活用
Xcodeにおけるライブラリの活用Xcodeにおけるライブラリの活用
Xcodeにおけるライブラリの活用teencoders
 
Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築Noriaki Takamizawa
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014Yuuki Takezawa
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回都元ダイスケ Miyamoto
 
第2回勉強会
第2回勉強会第2回勉強会
第2回勉強会Mugen Fujii
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよkumake
 
RDB脳でCloudFirestoreを利用して反省した話し。
RDB脳でCloudFirestoreを利用して反省した話し。RDB脳でCloudFirestoreを利用して反省した話し。
RDB脳でCloudFirestoreを利用して反省した話し。Iwamoto Nana
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosTomohiro Kumagai
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdeviofd0
 
Flexbox しか勝たん
Flexbox しか勝たんFlexbox しか勝たん
Flexbox しか勝たんTomoe Sawai
 
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話Takeuchi Yuichi
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったtakanori suzuki
 
Skinny Framework で始めた Scala
Skinny Framework で始めた ScalaSkinny Framework で始めた Scala
Skinny Framework で始めた ScalaRyuji Yamashita
 
DBFlute Introで気軽にDBコメント変更
DBFlute Introで気軽にDBコメント変更DBFlute Introで気軽にDBコメント変更
DBFlute Introで気軽にDBコメント変更晃史 冨永
 

Similar to Reactとbabelで簡易タスク管理ツール作ってみた (20)

React + Reduxで作る対話AI
React + Reduxで作る対話AIReact + Reduxで作る対話AI
React + Reduxで作る対話AI
 
React introduntion
React introduntionReact introduntion
React introduntion
 
Xcodeにおけるライブラリの活用
Xcodeにおけるライブラリの活用Xcodeにおけるライブラリの活用
Xcodeにおけるライブラリの活用
 
Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
 
第2回勉強会
第2回勉強会第2回勉強会
第2回勉強会
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ
 
RDB脳でCloudFirestoreを利用して反省した話し。
RDB脳でCloudFirestoreを利用して反省した話し。RDB脳でCloudFirestoreを利用して反省した話し。
RDB脳でCloudFirestoreを利用して反省した話し。
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhios
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
Flexbox しか勝たん
Flexbox しか勝たんFlexbox しか勝たん
Flexbox しか勝たん
 
Ppl
PplPpl
Ppl
 
JSer Class #2
JSer Class #2JSer Class #2
JSer Class #2
 
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
Shinjuku.rb #29 ActiveJobでSQS使ったのとその永続化についての話
 
Jekyll de blog
Jekyll de blogJekyll de blog
Jekyll de blog
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
 
Skinny Framework で始めた Scala
Skinny Framework で始めた ScalaSkinny Framework で始めた Scala
Skinny Framework で始めた Scala
 
DBFlute Introで気軽にDBコメント変更
DBFlute Introで気軽にDBコメント変更DBFlute Introで気軽にDBコメント変更
DBFlute Introで気軽にDBコメント変更
 

Reactとbabelで簡易タスク管理ツール作ってみた