何回かにわたってReactiveCocoaについて書きました。
今回は、そのまとめとして今さらながらReactiveCocoaとFunctional Reactive Programmingについて簡単に紹介します。
ReactiveCocoaについて
ReactiveCocoaはFunctional Reactive Programming (FRP) を Objective-Cで行うためのライブラリです。
元々はGitHub for Mac開発のために、Josh AbernathyとJustin Spahr-Summersによって作成されたライブラリで、現在利用されているバージョンは2.0です。
ちなみに、ReactiveCocoaはMicrosoftのFRPライブラリであるReactive Extensions (Rx)の影響を強く受けているようですので、興味のあるかたはこちらも参考にしてください。
Functional Reactive Programming (FRP) について
私も詳しいわけではありませんので、簡単な説明に留めさせていただきます。
次のツリーは、英語版WikiPediaのプログラミングのパラダイムにあるものを抜粋したものです。
- 宣言的 (Declarative) (→ 対義: 命令的 (Imperative) )
- データフロー (Dataflow)
- フローベース (Flow-based)
- セル指向 (Cell-oriented <spredsheets>)
- リアクティブ (Reactive)
- 関数型 (Functional)
- データフロー (Dataflow)
つまり、ReactiveCocoaとは「関数型」かつ「リアクティブ」なパラダイムを取り入れたライブラリと言えます。
「リアクティブ」のひとつ上にある「セル指向」はExcelやNumbersのようなスプレッドシートアプリケーションでのセルの定義みたいなものです。
例えば、上記の例ではセルA1
やA2
の値を変更すると、即座にセルB4
の値が変更されます。
これと同様に、「入力側の値が変わったら出力側も即座に変更する」というのが「リアクティブ」です。
例えば、以前の記事のコードで言うと、テキストの文字列を変更すると、ラベルの文字列もすぐに変更する、というようなことです。
ReactiveCocoaでは、これらの出入力をシグナルで行い、これらをつなぎ合わせてプログラミングを行っていきます。
ちなみにもうひとつ上の「フローベース」は以前に紹介した NoFloだったりします。
おわりに
ReactiveCocoaとFunctional Reactive Programmingについて簡単に紹介しました。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。