SlideShare a Scribd company logo
1 of 20
2015/2/18
アリエル・ネットワーク 池添
 非同期処理の重要性
 C10K問題
 Node.jsでは、I/Oに関するAPIはすべて非同期
 UX
 スマホでは、しばらく応答のないアプリは強制終了
 WinRT APIでは、50msec以上かかりそうな処理はすべて非同期
 非同期処理を扱う機会が増えている。
 非同期処理をきれいに書くためにPromiseやReactiveに注目が集まっている。
 最近、いろんな人たちがいろんな意味でリアク
ティブという言葉を使っている。
 それぞれ若干意味が異なっている。
 バズワード化
FRP
Reactive
Manifesto
React.js
Rx Google Trends
 時間や外部の入力と共に変化する値を、
反応的(reactive)に処理するプログラミ
ングパラダイム。
 アニメーション、GUIプログラミング、セ
ンサやロボット制御プログラムなどを実
現するときに役立つ。
 2種類の入力の概念を扱う
 Behavior
 時間に伴い連続的に変化する値
 Signal
 時間順に並ぶ離散的なイベント
var a = 1
var b = a + 1
a = 10 // aを書き換える
print b // => 11
時間[t]
 よくある例
 イベントストリームの例
xs:[e1, e2, e3,e4, e5]
非同期に発生するイベントを
無限リストのように扱う
 Reactive Programmingを関数型プログラミング言語で実現したもの。
let
result :: Behavior t (Maybe Int)
result = f <$> input1 <*> input2
where
f x y = liftA2 (+) (readNumber x) (readNumber y)
 Microsoft ResearchでErik Meijer(Haskell仕様策定者の一人)が中心となって開発。
 FRPを実用レベルに落とし込んだ。
 C#実装
 Signalのみに特化
 エラーハンドリング
 リソース管理
 スケジューラ
 テストのための機能
 Hot Observable, Cold Observable
 豊富な関数群
 Rxを好むプログラマーが多く、他のプログラミ
ング言語への移植が進んでいる。
 Rx開発者の1人がNetflix社に移り、RxJavaを
開発。Rxの普及に大きな貢献。
 Rx実装を取りまとめたReactiveXというコミュ
ニティも誕生。
 Microsoft
 Rx (C#)
 RxJS
 RxCpp
 RxPy
 Rx.ObjC
 ReactiveX
 RxJava
 RxRust
 Rx.rb
 RxScala
 RxAndroid
 RxKotlin
 RxGroovy
 RxGo
 RxClojure
 そのほか
 ReactiveCocoa
 BaconJS
 Scalaを開発しているTypesafe社が提唱
 下記の特徴を持ったアーキテクチャを
リアクティブシステムと呼ぶ。
 即応性
 耐障害性
 弾力性
 メッセージ駆動
 リアクティブシステムを構築するためにAkkaの利用を推奨している。
 Akkaのマーケティングとしてリアクティブという言葉に便乗したのではという一部批判も。
 Reactive Streams
 非同期ストリーム処理のAPIの標準化
 Akka Streams, Reactor, RxJava, Ratpack, vert.xなどが対応。
 Facebook社の開発するクライアントサイド向けのアプリケーションフレームワーク。
 今もっとも勢いがあるフレームワークのひとつ。
 Reactという名前ではあるが、リアクティブプログラミングとはあんまり関係ない。
 GUIにおけるデータバインド機能は古くから存在する。
 データバインド機能は、一種のリアクティブプログラミングであるといえる。
 イベントを時間的に流れてくるデータの無限リ
ストとして扱う。
 イベントに対しても、普通のリストと同じよう
にmap, reduce, filterなどの処理が使える
 Iterator
 Action側からデータソースに対してデータを取
りにいく(Pullスタイル)
 Observable
 データソース側からActionに対してデータを通
知する(Pushスタイル)
Iterator
<T>
Observable
<T>
Action Action
T next() onNext(T)
Pullスタイル Pushスタイル
 Observer
 イベントを受け取る人。監視する人。
 3種類のイベントを利用
 onNext: データ通知
 onError: エラー通知
 onCompleted: 完了通知
 Observable
 イベントを発行する人。監視対象。
 observable.subscribe(observer);
 いろんなメソッドをつなげてかける
observable
.filter(x -> x > 5)
.map(x -> x * x)
.subscribe(x -> print(x));
 Subscription(Disposable)
 subscribeの戻り値
 監視を解除することができる。
var s = observable.subscribe(observer)
s.unsubscribe();
 unsubscribeを呼ばなくても、onCompleted発生
時点で監視は解除される
 Scheduler
 コールバック関数を実行するスレッドを切り替え
ることができる。
 GUIアプリの場合、subscribeを実行するスレッ
ドをUIスレッドに切り替えて、画面の描画をおこ
なう場合などに使える。
 テスト用スケジューラを使うと、実行タイミング
を自在に制御できる。
 Promiseも非同期処理を書きやすくするための手段。
 Promiseが主に1回きりのイベントを取り扱うのに対して、Reactiveではイベントストリームを扱
う。
 RxではPromiseとの相互変換のAPIも用意している。
 Promiseの強み
 ジェネレータ(yield)との相性がよい。
 非同期処理を同期処理のように書くことができる。
 C#, JavaScript, TypeScript, Python
 JavaScriptではブラウザ組み込みになる。
Javaでも標準ライブラリに入ってる。
async void func() {
try {
var x = await something1();
var y = await something2(x);
} catch (Exception ex) {
// エラー処理
}
}
fileSystem.open(fileName, result -> {
if (result.succeeded()) {
result.result().write(buf, 100, x -> {
if (x.succeeded()) {
result.result().close(v -> {
if (v.succeeded()) {
// 正常処理
} else {
// エラー処理
}
});
} else {
// エラー処理
}
});
} else {
// エラー処理
}
});
fileSystem.open(fileName)
.flatMap(file -> file.write(buf, 100)
.flatMap(v -> file.close()))
.subscribe(
x -> /* 正常処理 */,
e -> /* エラー処理 */
);
ノンブロッキングI/OのAPI
を利用してファイル操作をし
ていると、ネストが深くなり
エラー処理も分散してしまう
RxJavaで書き換えると
見通しがよくなった
clickEvents
.buffer(clickEvents.throttle(250))
.map(es -> es.length())
.filter(len -> len == 3)
.subscribe(x -> {
print("トリプルクリック");
});
時間[t]
クリックイベント
throttle
map
filter
buffer
1 3 2
3
250ms
 リトライ処理
Observable.defer(() ->
httpClient.get("/api/products")
)
.retry(5)
.subscribe(
x -> /* 正常に取得できた*/,
e -> /* 5回以上失敗した */
);
 タイムアウト処理
httpClient.get("/api/products")
.timeout(1000)
.take(1)
.subscribe(
x -> /* 正常に取得できた*/,
e -> /* 1秒待っても結果が得られなかった */
);
textChangedEvents
.throttle(250)
.map(data -> data.newValue)
.distinctUntilChanged()
.flatMap(text -> search(text))
.switchLatest()
.subscribe(x -> print(x));
時間[t]
テキスト入力
throttle
flatMap(search)
switchLatest
distict
a
a
ab a
a
ar ariel
arielar
検索ワード
検索結果
 非同期処理を書くときにはPromiseとかReactiveとか使いましょう。
 PromiseとReactiveは競合するものではない。適材適所で使いましょう。
 Reactive Programingはとても楽しいので、ぜひ一度ためしてみてください。
あなたの好きなプログラミング言語でもRx実装があるかも。(なければつくろう!)
 なぜリアクティブプログラミングは重要か。
 やさしいFunctional reactive programming(概要編)
 【翻訳】あなたが求めていたリアクティブプログラミング入門
 The History of Reactive Extensions
 ReactiveX
 "The Reactive Manifesto v2.0" 日本語訳
 非同期ストリーム処理の標準化を目指す "Reactive Streams" とは
 RxMarbles

More Related Content

What's hot

Flowtype Introduction
Flowtype IntroductionFlowtype Introduction
Flowtype IntroductionTeppei Sato
 
LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020Yusuke Tochigi
 
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会   reactive extensions inside(公開用)UniRx勉強会   reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)wilfrem
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Teppei Sato
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVMKoichi Sakata
 
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけRxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけHironytic
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basicsKouji Matsui
 
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方Shunji Konishi
 

What's hot (10)

Rx入門
Rx入門Rx入門
Rx入門
 
Flowtype Introduction
Flowtype IntroductionFlowtype Introduction
Flowtype Introduction
 
RxSwift
RxSwiftRxSwift
RxSwift
 
LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020LabVIEW NXG Current Status @ 2020
LabVIEW NXG Current Status @ 2020
 
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会   reactive extensions inside(公開用)UniRx勉強会   reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
 
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけRxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけ
 
Async DeepDive basics
Async DeepDive basicsAsync DeepDive basics
Async DeepDive basics
 
お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方お手軽Ajaxアプリケーションの作り方
お手軽Ajaxアプリケーションの作り方
 

Viewers also liked

Embulkを活用したログ管理システム
Embulkを活用したログ管理システムEmbulkを活用したログ管理システム
Embulkを活用したログ管理システムAkihiro Ikezoe
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentAkihiro Ikezoe
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainTakahiro Hayashida
 
RubyistのためのSilverlight2
RubyistのためのSilverlight2RubyistのためのSilverlight2
RubyistのためのSilverlight2Akihiro Ikezoe
 
Silverlight2でつくるリッチなTrac用UI
Silverlight2でつくるリッチなTrac用UISilverlight2でつくるリッチなTrac用UI
Silverlight2でつくるリッチなTrac用UIAkihiro Ikezoe
 
【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケース【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケースHiroyuki Kusu
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build ToolShinya Mochida
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 
Closure Toolsの紹介
Closure Toolsの紹介Closure Toolsの紹介
Closure Toolsの紹介Yusuke Amano
 
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜Yusuke Amano
 
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策Ryo Mitoma
 
こだわりのkintone
こだわりのkintoneこだわりのkintone
こだわりのkintoneYusuke Amano
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiYuta Okamoto
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPIAkihiro Ikezoe
 
kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道Yusuke Amano
 
サイボウズの方向性
サイボウズの方向性サイボウズの方向性
サイボウズの方向性naoki ando
 
オウンドメディア企画書
オウンドメディア企画書オウンドメディア企画書
オウンドメディア企画書naoki ando
 
kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化Ryo Mitoma
 

Viewers also liked (20)

Embulkを活用したログ管理システム
Embulkを活用したログ管理システムEmbulkを活用したログ管理システム
Embulkを活用したログ管理システム
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend Development
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
 
RubyistのためのSilverlight2
RubyistのためのSilverlight2RubyistのためのSilverlight2
RubyistのためのSilverlight2
 
Silverlight2でつくるリッチなTrac用UI
Silverlight2でつくるリッチなTrac用UISilverlight2でつくるリッチなTrac用UI
Silverlight2でつくるリッチなTrac用UI
 
【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケース【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケース
 
Domain Event - The Hidden Gem of DDD
Domain Event - The Hidden Gem of DDDDomain Event - The Hidden Gem of DDD
Domain Event - The Hidden Gem of DDD
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
Closure Toolsの紹介
Closure Toolsの紹介Closure Toolsの紹介
Closure Toolsの紹介
 
Zoetrope
ZoetropeZoetrope
Zoetrope
 
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜
Webアプリケーションをもっと楽しく! 〜フロントエンドのお仕事〜
 
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
 
こだわりのkintone
こだわりのkintoneこだわりのkintone
こだわりのkintone
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
 
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
 
kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道
 
サイボウズの方向性
サイボウズの方向性サイボウズの方向性
サイボウズの方向性
 
オウンドメディア企画書
オウンドメディア企画書オウンドメディア企画書
オウンドメディア企画書
 
kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化kintoneチームのKAIZEN文化
kintoneチームのKAIZEN文化
 

Similar to Reactive

CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介OSSラボ株式会社
 
Swift bond コードリーディング
Swift bond コードリーディングSwift bond コードリーディング
Swift bond コードリーディングShun Nakahara
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループIssei Hiraoka
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解Monaca
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Taisuke Oe
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてTakuji Kawata
 
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法NGINX, Inc.
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryKazuto Kusama
 
Google Cloud でアプリケーションを動かす.pdf
Google Cloud でアプリケーションを動かす.pdfGoogle Cloud でアプリケーションを動かす.pdf
Google Cloud でアプリケーションを動かす.pdfGoogle Cloud Platform - Japan
 
RxJava on Android
RxJava on AndroidRxJava on Android
RxJava on Androidyo_waka
 
Reactive extensions
Reactive extensionsReactive extensions
Reactive extensionsyone64
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4Issei Hiraoka
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016RWSJapan
 
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れようAndroidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れよう kan-notice
 

Similar to Reactive (20)

CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
 
Swift bond コードリーディング
Swift bond コードリーディングSwift bond コードリーディング
Swift bond コードリーディング
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
2020/12/03 SaaS を正しい方向へ加速するフィードバックループ
 
Uapcfb
UapcfbUapcfb
Uapcfb
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版Real World Android Akka - 日本語版
Real World Android Akka - 日本語版
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
【NGINXセミナー】 Ingressを使ってマイクロサービスの運用を楽にする方法
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud Foundry
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
LogicFlow 概要
LogicFlow 概要LogicFlow 概要
LogicFlow 概要
 
Google Cloud でアプリケーションを動かす.pdf
Google Cloud でアプリケーションを動かす.pdfGoogle Cloud でアプリケーションを動かす.pdf
Google Cloud でアプリケーションを動かす.pdf
 
RxJava on Android
RxJava on AndroidRxJava on Android
RxJava on Android
 
Reactive extensions
Reactive extensionsReactive extensions
Reactive extensions
 
20190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #420190731 Azure Functions x Line at Azure Tech Lab #4
20190731 Azure Functions x Line at Azure Tech Lab #4
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
 
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れようAndroidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
 

Reactive