データバインディングとリアクティブプログラミング

jxckさんとpokarimさんがいろいろ教えてくれたのでまとめ
5
pokarim @pokarim

リアクティブプログラミングが示しているのは、可変状態そのものが悪いのではなくて、手続き的な記述、明示的に副作用を扱うような記述こそが問題なのだということ。

2013-12-09 16:44:48
Jxck @Jxck_

そろそろデータバインディングの話と リアクティブプログラミングの話を整理したい。

2013-12-09 16:54:13
Kazunori Sato @kazunori_279

@Jxck_ バインディング、リアクティブ、イベントドリブン、Excelの式の違いがよくわかりません><

2013-12-09 16:58:36
Jxck @Jxck_

@kazunori_279 イベント〜はまあそのままで、リアクティブは状態の変化に注目したパラダイムで、バインディングはその実装要素で、エクセルはマジですげェという理解です。(自信無し)

2013-12-09 17:02:18
Jxck @Jxck_

来年あたりそろそろリアクティブプログラミングの年にならないかな。

2013-12-09 17:04:41
Kazunori Sato @kazunori_279

@Jxck_ なるほど。リアクティブやバインディングを実装するためにイベントを使う...って感じかな。エクセルww

2013-12-09 17:05:20
Jxck @Jxck_

@kazunori_279 あと、リアクティブは言語仕様が前提になるのかがわからないんですよね。 Angular はバインドできるけど、 JS がリアクティブじゃないから Angular はリアクティブではないのかどうかとか。。

2013-12-09 17:10:47
Kazunori Sato @kazunori_279

@Jxck_ なる。ngのバインディング構文だけをもってリアクティブプログラミングと言えるかどうか。言えるんじゃないかなー。。

2013-12-09 17:12:03
Jxck @Jxck_

でも rxjs がある以上、多分 JS で値を連動できるなら、それをリアクティブと言っていいんだと思う。

2013-12-09 17:12:40
Jxck @Jxck_

@kazunori_279 まあ定義はどうでも良くて、 ng はそれが実現できてると思うんですよね。たぶん。。

2013-12-09 17:14:04
Jxck @Jxck_

ng が too much だという話で、バインディング付きの Backbone が欲しいというのは、つまり Reactive Backbone の登場が待たれるわけか。

2013-12-09 17:16:40
Jxck @Jxck_

rxjs も黒魔術感すごいし、使ってますという話をあまり聞かないんだよなぁ。。

2013-12-09 17:25:09
Kazunori Sato @kazunori_279

クラスメソッドのFlexエキスパートの人(どなたか忘れた)が、「データバインディングだけは使ってはならねぇ」的なご指導をいただいたのを思い出す。すべてproceduralに書き下しておいたほうがあとでハマらないって判断。でも俺バインディング好きだけどw

2013-12-09 17:28:25
hokaccha @hokaccha

@Jxck_ 直接DOMにバインドを書く感じじゃないから AngularJS とか Knockout.js みたいな派手さはないけどこれで十分なケースも多そうかなーという印象。 たぶん mizchi さんが詳しい。

2013-12-09 17:29:27
Jxck @Jxck_

@hokaccha 俺も彼のエントリで知ったんですが、確かにあの位の薄さって実用的な手段だなぁという気はしますね。 白魔術という感じで。

2013-12-09 17:33:58
Jxck @Jxck_

@hokaccha まあ俺は Angular の方が弄ってて楽しいけど、黒魔術だなぁとは思いますぶっちゃけw

2013-12-09 17:38:43
mizchi @mizchi

@hokaccha @Jxck_ バインディングで変更検知して動的にDOMいじりだしたりすると、それなりに闇深まってきました。あとBackbone.Modelにどれだけロジック生やしてテストするか、そもそもテスト対象でないのか、難しい…

2013-12-09 17:42:28
hokaccha @hokaccha

@mizchi @Jxck_ なるほど。やはりバインディングは闇なんですね。。

2013-12-09 17:48:51
Jxck @Jxck_

@mizchi @hokaccha なるほど。その辺をやってくれてるのが( たぶん) ng だと考えると、行き着く先はやっぱり闇なんですかねぇ。。

2013-12-09 17:49:35
pokarim @pokarim

@Jxck_ @kazunori_279 言葉の使い方にゆらぎが結構あると思いますが、FRPの文脈だと変化する値=behavior、というのと離散的なイベントの時間順のシーケンス=events、の2つに大きく分けて考えることが多いようです。

2013-12-09 18:32:49
pokarim @pokarim

@Jxck_ @kazunori_279 データバインディングは、前者のbehaviorを中心に扱って、例えばDBMS内の値、GUI上の値、それぞれをbehaviorとみなしてゆるい等号でつなぐものだと思います。

2013-12-09 18:38:18
pokarim @pokarim

@Jxck_ @kazunori_279 例えば.NETの方面だと、WPFのdata bindingがbehavior中心、Rxがevents中心で、相補的になっているようです。

2013-12-09 18:40:15