タイトルにわざとReactive Manifestoを入れたのは、まずこちらのtogetterご覧ください
pokarimさんのReactive Manifestoに関する印象
あと、タイトルの最後に、はてなマーク入れたのは、自分がReactive Programmingに詳しくなく、色々自信ないからです。
間違いあったらツッコミください
さて、Reactive Programmingとはそもそもなんなのか?厳密に定義できるのか?は、詳細に議論できるほどの知識を持ち合わせていないので逃げます(おい
まずは、話のとっかかりとして、上記のtogetterの主役となってるpokarimさんの過去の記事(4年近く前!) を結構長めに引用してみます。(はてぶが600以上ついてる・・・)
まず次のような定義を行います。
a = 1
b = a * 3
そしてaに2を代入してみます。
a = 2
そしてbを出力してみましょう。
通常の命令型言語であれば、この結果は、
b -> 3
となります。
しかし、リアクティブプログラミングでは、
b -> 6
となります。
b = a * 3
の意味が、命令型プログラミングとリアクティブプログラミングでは異なるわけです。
命令型プログラミングでは、そのときのaの値である1を用いて、
b = a * 3
b = 1 * 3
b = 3
という意味だと解釈され、bは3に束縛されます。
そのあとaの値が書き換えられても、bは変わらず3のままです。
一方、リアクティブプログラミングでは、
b = a * 3
は、
「bは、常にaの3倍である」
という意味になります。
時間がたち、aの値が変化しても、
b = a * 3
という関係は変わりません。
さて、そして以下の動画です
https://www.youtube.com/watch?v=YF5-f5H19AY
finagleをつくった人で、twitter社でもScala界隈でも超有名人な、Marius Eriksenさんの http://www.scalabythebay.org/ という、2014年8月の8, 9日に開催されたカンファレンスでの動画です。
45分くらいで結構長めの動画です。そして、それの31分34秒 のスクリーンショット(スライドが見つからなかったので。まだ未公開?)
com.twitter.util.Varというクラスの紹介です。*1
ん!!!!????これってReactive Programmingでは?少なくとも、pokarimさんのブログ記事で最初に説明している例とは、完全に一致してますね。
以下、pokarimさんのブログの例を、実際にcom.twitter.util.Varを使って書いてみたもの
com.twitter.util.Varがいつから存在するのか?が気になり、githubで履歴をたどったところ、少なくとも2013/08/29まではたどれました
https://github.com/twitter/util/commit/3573e670523ac17c2e523
これが本当に最初のコミットなのか、finagleかなにかのほかのプロジェクトからutil-coreに移したのか?は、よくわかりませんでした。
以下、適当にググって見つかった断片的な情報を列挙
- https://twitter.com/marius/status/435854053340237824 Mariusさん本人のtweet
- https://groups.google.com/d/topic/finaglers/K8fnXSOjP2U/discussion
- https://github.com/mosesn/panopticon
- 同じくTwitterの中のScalaチームの人?が「deprecating the observer pattern」というOdersky先生の有名論文をVarを使って訳した、もしくは似たような実装をしてみた?と思われる、サンプルコード
- http://lampwww.epfl.ch/~imaier/pub/DeprecatingObserversTR2010.pdf
- "deprecating the observer pattern"に関する、がくぞーさんの、2年くらい前の名古屋での発表 http://gakuzzzz.github.io/ScalaBase1/Deprecating_the_Observer_Pattern.md.htm
で、「Varっていうの発見したよ!?これReactive Programmingのあれそのものでは!?」という報告が主目的で、何度も言いますが、自分はReactive Programming詳しくないのでひとまずこれ以上語りませんというか語れません。だれか教えてください。
そして、上記に貼ったMariusさんの動画、FutureやVarを始め、Twitterのutil-coreの重要なclassや、Finagleのコアの概念やclassを説明していてとてもおもしろいので、みんな見るといいと思います
*1:別のカンファレンスですが、こっちにもVarの説明ありました http://www.infoq.com/presentations/twitter-scala ログインするとスライドダウンロードできるらしい?