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

What is reactive programming?

Apr 16, 2017

Download

Technology

Kenji Tanaka
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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の一つのアプローチである。