2013/12/06

ReactiveCocoaとFunctional Reactive Programmingについて

何回かにわたって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)

つまり、ReactiveCocoaとは「関数型」かつ「リアクティブ」なパラダイムを取り入れたライブラリと言えます。

「リアクティブ」のひとつ上にある「セル指向」はExcelやNumbersのようなスプレッドシートアプリケーションでのセルの定義みたいなものです。

例えば、上記の例ではセルA1A2の値を変更すると、即座にセルB4の値が変更されます。

これと同様に、「入力側の値が変わったら出力側も即座に変更する」というのが「リアクティブ」です。

例えば、以前の記事のコードで言うと、テキストの文字列を変更すると、ラベルの文字列もすぐに変更する、というようなことです。

ReactiveCocoaでは、これらの出入力をシグナルで行い、これらをつなぎ合わせてプログラミングを行っていきます。

ちなみにもうひとつ上の「フローベース」は以前に紹介した NoFloだったりします。

おわりに

ReactiveCocoaとFunctional Reactive Programmingについて簡単に紹介しました。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。