SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
AngularJSとFluxと
RiotJSと
2015/10/28 GotandaJS #
@mizuki_r
Profile
account.
twitter: @mizuki_r
github: ry_mizuki
role.
フロントエンドエンジニア
tags.
AngularJS, RiotJS, Backbone,
hariko, angular-period, etc
Theme
• AngularJSで書いたアプリをFlux化した話
• Flux化したAngularJSアプリにRiotJS入れた話
AngularJSで書いたアプリ
をFlux化した話
What is Flux?
Flux s architecture
https://facebook.github.io/flux/docs/overview.html
Flux s architecture
• Facebookが提唱したアーキテクチャ
• データの流れを一方向に限定する
• Store, View, Dispatcherの責務がActionという
単位で処理を回す
Flux s architecture
https://github.com/facebook/flux/tree/master/examples/flux-todomvc/#structure-and-data-flow
Why Flux
Why Flux?
• modelの管理に疲れた
• データ構造と責務分担の分類の考察
• 急なデータの変更、Viewの変更
• controllerでmodelを管理しがち
• modelとmodelの連携
• controllerの抽象化が雑に…
所謂MVCの運用には
高度な訓練と
高い意識が必要なのでは?
もっと低意識で運用したい!
I thought…
ぼくのかんがえたさいきょうの…
• Dispatcherは自前でObserver定義
• ViewとActionCreator, Storeは一対
• ドメインの定義はViewにすべて移譲
• ActionCreatorは外部との連絡用
• API通信はngResourceをwrapしてrepository
として分離
• actionにする前にデータ整形を行うメソッドを
かます
ぼくさいFlux arch
ぼくさいFlux arch
import * as action_creator from '../action-creators/example'
import store from '../stores/example'
class ExampleCtrl {
constructor ($scope) {
this.onReceiveData = this.onReceiveData.bind(this)
this.onDestroy = this.onDestroy.bind(this)
store.addReceiveDataListener(this.onReceiveData)
$scope.$on('$destroy', this.onDestroy)
action_creator.init()
}
select () {
action_creator.select()
}
onReceiveData () {
this.data = store.getData()
}
onDestroy () {
store.removeReceiveDataListener(this.onReceiveData)
}
}
angular.module('example').controller('ExampleCtrl', ExampleCtrl)
import dispatcher from '../dispatcher'
import action_types from '../action-types'
import injector from '../injector'
export function init () {
dispatcher.handleViewAction({
type: action_types.INIT_EXAMPLE_VIEW,
})
var Repository = injector.get('ExampleRepository')
Repository.fetch().then((data) => {
dispatcher.handleApiAction({
type: action_types.RECEIVE_EXAMPLE_DATA,
data
})
})
}
export function select () {
dispatcher.handleViewAction({
type: action_types.SELECT_EXAMPLE_VIEW,
})
var Repository = injector.get('ExampleRepository')
Repository.post().then((data) => {
dispatcher.handleApiAction({
type: action_types.POST_SELECT_EXAMPLE_DATA,
data
})
})
}
conclusion
• ViewをActionCreatorとStoreに抽象化できた
• コードが冗長になり、量が増えた
• 初期開発コストは高いが更新の手間などは減っ
た
ViewをActionCreatorと
Storeに抽象化できた
…あれ?
Angularじゃなくてもよくね?
Flux化したAngularJSアプ
リにRiotJS入れた話
What is RiotJS?
RiotJS
• Reactライクのユーザインタフェースライブラリ
• とっても小さい
• Virtual-DOM
• JavaScript in HTML
<todo>
<!-- layout -->
<h3>{ opts.title }</h3>
<ul>
<li each={ item, i in items }>{ item }</li>
</ul>
<form onsubmit={ add }>
<input>
<button>Add #{ items.length + 1 }</button>
</form>
<!-- logic -->
<script>
this.items = []
add(e) {
var input = e.target[0]
this.items.push(input.value)
input.value = ''
}
</script>
</todo>
http://riotjs.com/ja/
ファイルサイズ
Reactの約1/19!
つまり…
• 小さいし必要最小限の機能
• 細かいViewの制御なら十分なAPI
• 明示的な更新が可能なI/F
• Component系なので最小限の変更範囲
• 書きやすそうなJSX
Why is RiotJS?
AngularJSへの不満…
• $applyが重い
• 暗黙的な$digestの管理が辛い
$applyが遅い
• 式を受け取りViewを更新するかを判定
• 更新する場合は`$scope.$digest()` を実行
• $http, $timeoutなどのAPIが内部的に利用
• 登録されているすべてのリスナを評価する
• 遅い評価式を登録してしまうと更新のたびに…
暗黙的な$digestが辛い
• $http, $timeoutなどAPIが暗黙的に発行する
• 発行しないAPIもある
• 自前で作った機能は$scope.$apply等が必要
• たまたまうまく更新がされるケース
• digest中にdigestを発行すると死ぬ
つまり…
• 特定のView以下で更新したい
• 短いサイクルでの更新
• 毎秒すべてのViewを評価してどうする
• 明示的に更新したい
• 必要ないところで評価されても
• 更新したいタイミングは僕らが決めたい
Angular with Riot
RiotJSの役割
• 末端のViewの更新サイクルの管理
• 毎秒更新が発生するもの
• ホバーなどサイクルが短いもの
• ユーザアクションのハンドルと他のViewとの連
携はFluxベースのアーキテクチャで吸収
• RiotからAngularのViewは参照しない
directive
angular.module('example', []).directive('todo', function () {
return function () {
riot.mount('todo')
}
})
directive化することで、templateから参照できる。
outside injector
exports.get = function (name) {
return angular.element(document).injector().get(name)
}
injectorをAngularの管理外から参照できるように
入れてみた結果
• 「遅い」と言われてた部分が解消(体感的に)
• ぶっちゃけRiotJSが早いわけじゃない
• むしろ状況次第ではAngularより遅い
• $digest漏れや$applyの遅延による「遅く見え
る」が減少した
• RiotJS、以外と書きやすい
Conclusion
Conclusion
• FluxによるViewの抽象化事例を紹介
• Viewの単位でコードを管理できるので、追加・更新・削
除が思いの外簡単になった
• でもコード量は増えた
• AngularJSとRiotJSの共存事例を紹介
• 目に見えて反応が違った
• RiotJSは必要最小限で使う分にはかなり使い勝手良い
• 個人的にはRiotJSXはもっと使って行きたい
Next Generation
• Fluxでの責務分担のあり方をもうちょっと考え
たい
• いずれこれは二層式に集約されていくのだろう
なと
• ServiceWorker上で扱えるレベルのロジック
の抽象化
• メインスレッドを綺麗にしてUIのパフォーマン
スあげたい
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Directiveで実現できたこと
Directiveで実現できたことDirectiveで実現できたこと
Directiveで実現できたことKon Yuichi
 
Enterprise x AngularJS
Enterprise x AngularJSEnterprise x AngularJS
Enterprise x AngularJSKenichi Kanai
 
クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性Yasunobu Ikeda
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2Moriyuki Arakawa
 
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門Shumpei Shiraishi
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)Mitsuru Ogawa
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門Shumpei Shiraishi
 
noteをAngularJSで構築した話
noteをAngularJSで構築した話noteをAngularJSで構築した話
noteをAngularJSで構築した話Kon Yuichi
 
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみようHoriguchi Seito
 
Angular js開発事例
Angular js開発事例Angular js開発事例
Angular js開発事例Shun Takeyama
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digestHayashi Yuichi
 
アプリ開発&チーム管理で 役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で 役立った拡張機能Masaki Suzuki
 
社内LTネタ ReactNative
社内LTネタ ReactNative社内LTネタ ReactNative
社内LTネタ ReactNativeOguri Toru
 
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしましたMitsuru Ogawa
 
Our Track to Modern Angular
Our Track to Modern AngularOur Track to Modern Angular
Our Track to Modern AngularYuta Shimizu
 

Mais procurados (20)

Directiveで実現できたこと
Directiveで実現できたことDirectiveで実現できたこと
Directiveで実現できたこと
 
Editorlt
EditorltEditorlt
Editorlt
 
Enterprise x AngularJS
Enterprise x AngularJSEnterprise x AngularJS
Enterprise x AngularJS
 
Angular2実践入門
Angular2実践入門Angular2実践入門
Angular2実践入門
 
React meetup 3_eight
React meetup 3_eightReact meetup 3_eight
React meetup 3_eight
 
CSS Living StyleGuide
CSS Living StyleGuideCSS Living StyleGuide
CSS Living StyleGuide
 
クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性クリエイティブの視点から探るAngular 2の可能性
クリエイティブの視点から探るAngular 2の可能性
 
angular1脳で見るangular2
angular1脳で見るangular2angular1脳で見るangular2
angular1脳で見るangular2
 
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
 
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)今後のWeb開発の未来を考えてangular jsにしました(拡大版)
今後のWeb開発の未来を考えてangular jsにしました(拡大版)
 
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
 
noteをAngularJSで構築した話
noteをAngularJSで構築した話noteをAngularJSで構築した話
noteをAngularJSで構築した話
 
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
 
Vscodemeetup6
Vscodemeetup6Vscodemeetup6
Vscodemeetup6
 
Angular js開発事例
Angular js開発事例Angular js開発事例
Angular js開発事例
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digest
 
アプリ開発&チーム管理で 役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で 役立った拡張機能
 
社内LTネタ ReactNative
社内LTネタ ReactNative社内LTネタ ReactNative
社内LTネタ ReactNative
 
今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました今後のWeb開発の未来を考えてangularJSにしました
今後のWeb開発の未来を考えてangularJSにしました
 
Our Track to Modern Angular
Our Track to Modern AngularOur Track to Modern Angular
Our Track to Modern Angular
 

Destaque

NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介Ryo Iinuma
 
SPAを実現するために必要な通信技術
SPAを実現するために必要な通信技術SPAを実現するために必要な通信技術
SPAを実現するために必要な通信技術Yusuke Naka
 
フロントエンドから見たWebアプリの高速化 #gotandapm
フロントエンドから見たWebアプリの高速化 #gotandapmフロントエンドから見たWebアプリの高速化 #gotandapm
フロントエンドから見たWebアプリの高速化 #gotandapmRyo Iinuma
 
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tipsRiot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tipsKeisuke Imai
 
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)Ken Muryoi
 
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)kata shin
 
Riot: ver.3 での変更点と、周辺ツールたち
Riot: ver.3 での変更点と、周辺ツールたちRiot: ver.3 での変更点と、周辺ツールたち
Riot: ver.3 での変更点と、周辺ツールたちTsutomu Kawamura
 
Riotでサーバレスにした話
Riotでサーバレスにした話Riotでサーバレスにした話
Riotでサーバレスにした話Hiroyuki Hara
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1Keisuke Imai
 
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみるFluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみるYuta Shimakawa
 

Destaque (12)

React + Flux
React + FluxReact + Flux
React + Flux
 
NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介
 
SPAを実現するために必要な通信技術
SPAを実現するために必要な通信技術SPAを実現するために必要な通信技術
SPAを実現するために必要な通信技術
 
フロントエンドから見たWebアプリの高速化 #gotandapm
フロントエンドから見たWebアプリの高速化 #gotandapmフロントエンドから見たWebアプリの高速化 #gotandapm
フロントエンドから見たWebアプリの高速化 #gotandapm
 
Riot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tipsRiot.jsと仲良くなるための僕的tips
Riot.jsと仲良くなるための僕的tips
 
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
サーバサイドなおじさんがSPAを趣味で初めて作ってみてわかった n のこと(仮)
 
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
 
Riot: ver.3 での変更点と、周辺ツールたち
Riot: ver.3 での変更点と、周辺ツールたちRiot: ver.3 での変更点と、周辺ツールたち
Riot: ver.3 での変更点と、周辺ツールたち
 
Riotでサーバレスにした話
Riotでサーバレスにした話Riotでサーバレスにした話
Riotでサーバレスにした話
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
 
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみるFluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
 

Semelhante a AngularJSとFluxとRiotJSと

Tiなごや vol.3 Alloyやろまい
Tiなごや vol.3 AlloyやろまいTiなごや vol.3 Alloyやろまい
Tiなごや vol.3 AlloyやろまいMori Shingo
 
AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話kumatch kumatch
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!Yuki Ishikawa
 
Om Next ~React.jsを超えて
Om Next ~React.jsを超えてOm Next ~React.jsを超えて
Om Next ~React.jsを超えてKazuki Tsutsumi
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門Kazuki Tsutsumi
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)y_uuki
 
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmchuck h
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseyoshikawa_t
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionRicardo Alcocer
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionralcocer
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリMasayuki Iwai
 
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有するkazuki matsumura
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うかYutaka Tachibana
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphOshitari_kochi
 
Aws向け監視ソリューション比較
Aws向け監視ソリューション比較Aws向け監視ソリューション比較
Aws向け監視ソリューション比較Naoya Hashimoto
 

Semelhante a AngularJSとFluxとRiotJSと (20)

Tiなごや vol.3 Alloyやろまい
Tiなごや vol.3 AlloyやろまいTiなごや vol.3 Alloyやろまい
Tiなごや vol.3 Alloyやろまい
 
AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話AngularJSからReactに移ったケースの話
AngularJSからReactに移ったケースの話
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
Om Next ~React.jsを超えて
Om Next ~React.jsを超えてOm Next ~React.jsを超えて
Om Next ~React.jsを超えて
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
 
テスト
テストテスト
テスト
 
Angular1&2
Angular1&2Angular1&2
Angular1&2
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
 
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese versionSlides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
 
Spring.project
Spring.projectSpring.project
Spring.project
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
React Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリReact Nativeで開発するマルチプラットフォームアプリ
React Nativeで開発するマルチプラットフォームアプリ
 
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する普段Reactを触ってる僕が Angularを触ってみた感想を共有する
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
 
Kaleidox
KaleidoxKaleidox
Kaleidox
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 
Aws向け監視ソリューション比較
Aws向け監視ソリューション比較Aws向け監視ソリューション比較
Aws向け監視ソリューション比較
 

AngularJSとFluxとRiotJSと