SlideShare a Scribd company logo
Reactive Programming

     たけうち ひでゆき
Imperative Programming
b=1
c=2

a=b+c

b = 10

print(a) // 3が出力

• aは代入された時点の値を保持する
Reactive Programming
b=1
c=2

a=b+c

b = 10

print(a) // 12が出力

• 右辺の値が変わると左辺に伝播される
   – いつ伝播されるかは実装による
何が嬉しいか
• 出力を簡潔に定義できる
 – myLabel.text = 10 + 2 * time
    • timeが変化する毎にmyLabelのテキストが変化する


 – myLabel.text = “yes” . keyDown Space <|> “no”
    • スペースキーを押しているときは”yes”を表示、それ以外は”no”を表
      示


• 状態・イベントを意識しなくてすむ
 – 左辺とはなにかと右辺で定義する
どういう所で使われているか
•   Spread Sheet (Excel)
•   Robotics
•   Simulation
•   User Interface

• Flex
• JavaFX (ScalaFX)
Excel
Flex
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    width="400" height="90">
  <s:layout>
    <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/>
  </s:layout>
  <s:TextInput id="lhs" width="100" fontSize="48"/>
  <s:Label fontSize="48" text="+"/>
  <s:TextInput id="rhs" width="100" fontSize="48"/>
  <s:Label fontSize="48" text="="/>
  <s:Label fontSize="48" text="{parseInt(lhs.text) + parseInt(rhs.text)}"/>
</s:Application>
少し突っ込んだ話し
• データフローのグラフが作られる(こともある)
 – c=a+b
 – e=c*d


                     a
             c
       e             b
             d
まとめ
• Wicketのプログラミングでもデータの流れをプログラム
  するということを意識しよう
 – Modelはデータの流れを記述するための機構

More Related Content

PPTX
ネットスーパー
PDF
ネットワークについて
PDF
JavaScript 講習会 #1
PDF
なぜリアクティブは重要か #ScalaMatsuri
PDF
Why Reactive Matters #ScalaMatsuri
KEY
XPages 開発 Tips 百連発
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
PDF
WordBench Kobe jQueryどうでしょう
ネットスーパー
ネットワークについて
JavaScript 講習会 #1
なぜリアクティブは重要か #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
XPages 開発 Tips 百連発
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
WordBench Kobe jQueryどうでしょう

Similar to Reactive Programming (20)

PDF
レスポンシブWebデザイン【発展編】
PPTX
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
PPTX
Powershell勉強会 v3 (もっと新しいバージョンがあります)
PPTX
Powershell勉強会 v2 (もっと新しいバージョンがあります)
KEY
Clojure programming-chapter-2
PDF
CRF を使った Web 本文抽出 for WebDB Forum 2011
PDF
Functional JavaScript with Lo-Dash.js
PDF
第2回 JavaScriptから始めるプログラミング2016
PDF
Reflexの紹介
KEY
Objc lambda
PDF
フロント作業の効率化
PDF
「html5 boilerplate」から考える、これからのマークアップ
PDF
Scalaプログラミング・マニアックス
PDF
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
PDF
Mac Rubyではじめる!Macアプリ開発入門
PDF
20120317 IT系勉強会 in 神戸
PDF
Programming Hive Reading #3
PDF
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
KEY
第3回BDD勉強会
PDF
実務者のためのかんたんScalaz
レスポンシブWebデザイン【発展編】
Powershell 超絶基礎 勉強会 v1 (もっと新しいバージョンがあります)
Powershell勉強会 v3 (もっと新しいバージョンがあります)
Powershell勉強会 v2 (もっと新しいバージョンがあります)
Clojure programming-chapter-2
CRF を使った Web 本文抽出 for WebDB Forum 2011
Functional JavaScript with Lo-Dash.js
第2回 JavaScriptから始めるプログラミング2016
Reflexの紹介
Objc lambda
フロント作業の効率化
「html5 boilerplate」から考える、これからのマークアップ
Scalaプログラミング・マニアックス
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
Mac Rubyではじめる!Macアプリ開発入門
20120317 IT系勉強会 in 神戸
Programming Hive Reading #3
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
第3回BDD勉強会
実務者のためのかんたんScalaz
Ad

More from Hideyuki Takeuchi (9)

PDF
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
PDF
オープンソースプロジェクト E2D3のご紹介
PDF
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
PDF
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
PDF
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
PDF
Web時代の大富豪的プログラミングのススメ
PPTX
ScalaCL in ScalaKaigi
PDF
Real-Time 3D Programming in Scala
PDF
Communication between Wicket and Flex
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
オープンソースプロジェクト E2D3のご紹介
どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
Web時代の大富豪的プログラミングのススメ
ScalaCL in ScalaKaigi
Real-Time 3D Programming in Scala
Communication between Wicket and Flex
Ad

Reactive Programming