what is reactive programming?

27
What is Reactive Programming? 2016/02/17 Sendai.swift 第一回 Reactive Programming in Swift 田中賢治

Upload: kenji-tanaka

Post on 16-Apr-2017

4.115 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: What is reactive programming?

What isReactive Programming?

2016/02/17 Sendai.swift 第一回 Reactive Programming in Swift

田中賢治

Page 2: What is reactive programming?

• 田中賢治(22)

• Swift/Objective-C

• iOS開発もうちょっとで4年目

• Qiita/GitHub/Twitter/etc…(@ktanaka117)

• ブログ「田中、仙台に生きる」

自己紹介

Page 3: What is reactive programming?

最近ハマってるもの

ハッカーとかエンジェル投資家とか、サイバー犯罪とか。技術的に深くて楽しい。坂井さんが人間味あって味わい深い。萌え。

Page 4: What is reactive programming?

What’s “Reactive”?

• 最近話題のReactive Programming

• Functional Reactive Programming(FRP)とかもあるけれど、定義としては別物かな?

• いろいろ読んだところ、考え方は交錯している印象。要素はそれぞれ取り入れられている

Page 5: What is reactive programming?

What’s “Reactive”?

“Reactive”とは?

Page 6: What is reactive programming?

What’s “Reactive”?

reactive / riˈæktɪv /

【noun】反応性 【adjective】反応的な

Page 7: What is reactive programming?

What’s “Reactive”?

reactive / riˈæktɪv /

【noun】反応性 【adjective】反応的な

Page 8: What is reactive programming?

What’s “Reactive”?

“反応”

Page 9: What is reactive programming?

Reactive Manifesto

• Responsive

• Resilient

• Elastic

• Message Driven

リアクティブなアプリケーションに関する重要な4つの要素

Page 10: What is reactive programming?

Reactive Manifesto

• Responsive

• Resilient

• Elastic

• Message Driven

Page 11: What is reactive programming?

Responsive: 即応性

• リアルタイムな更新処理

• Web Socketなどによって実現

• モバイルだとUIの描画処理など

• エンドユーザーに素早くレスポンスを与える

Page 12: What is reactive programming?

• 「ふぁぼ」

• 「Google Docs」

• 検索条件の絞り込みなど

Responsive: 即応性

Page 13: What is reactive programming?

Responsive: 即応性Twitterのふぁぼ

クライアントのUI描画はまず先に行われる。 その後サーバーと通信し、リクエストが失敗したらふぁぼは取り消される。

Page 14: What is reactive programming?

Responsive: 即応性Google Docs

複数人でのテキストの同時編集。各クライアントでテキスト入力はスムーズに行われ、他のクライアントとは都度同期が取られていく。

Page 15: What is reactive programming?

良いUXが求められる世の中

Responsive: 即応性

Page 16: What is reactive programming?

Reactive Manifesto

• Responsive

• Resilient

• Elastic

• Message Driven

Page 17: What is reactive programming?

Resilient: 耐障害性

• 障害に直面しても即応性を失わない

• コンポーネントの切り分けクライアントとサーバーの境目など

• サーバーにおいては冗長化なども含む

Page 18: What is reactive programming?

Resilient: 耐障害性ServerClient

UserAction, Request

Response

Page 19: What is reactive programming?

Resilient: 耐障害性Server

_人人人人人人_ > 突然の死 < ‾Y^Y^Y^Y^Y‾

Client

Response

UserAction, Request

Page 20: What is reactive programming?

Resilient: 耐障害性Server

_人人人人人人_ > 突然の死 < ‾Y^Y^Y^Y^Y‾

ClientUserAction

Response

・クライアントのみでも正しく動くように見せる・行なわれた処理はクライアントに保持し、障害 回復時に同期処理する、など

コンポーネントがクライアントとサーバーで切り分けられた状態

Page 21: What is reactive programming?

Resilient: 耐障害性

良いUXが求められる世の中

Page 22: What is reactive programming?

Reactive Manifesto

• Responsive

• Resilient

• Elastic

• Message Driven

Page 23: What is reactive programming?

Elastic: 弾力性

• ワークロードが変化しても即応性を保つ

• サーバーのオートスケール

Page 24: What is reactive programming?

Reactive Manifesto

• Responsive

• Resilient

• Elastic

• Message Driven

Page 25: What is reactive programming?

Message Driven: メッセージ駆動

• Observerパターン (KVOとか)

• 送信者と受信者がそれぞれ独立したライフサイクルを持つ。非同期にやりとりを行う=リソースの有効活用

Page 26: What is reactive programming?

即応性

Page 27: What is reactive programming?

即応性これを根底に置く考えがReactiveの哲学であり、様々な実装方法、手法、アプローチが行われる。Functional Reactive Programmingとは、これを関数型プログラミング的に実装していくReactive Programmingの一つのアプローチである。