BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 注目を集めるリアクティブプログラミング

注目を集めるリアクティブプログラミング

原文(投稿日:2013/08/28)へのリンク

リアクティブプログラミング(RP)はデータの流れと変更の伝搬によって成り立ち、データの流れを通じて変更を自動的に伝搬するプログラミング言語の実行モデルを持っている。イベント駆動アーキテクチャやスケーラブルアーキテクチャ、インタラクティブアーキテクチャと共に、 “リアクティブネス”というコンセプトが注目を集めている。

InfoQはこれまでにこのパラダイムを何度も取り上げてきた。数週間前に発表された、Gartnerの“Hype Cycle for Application Development, 2013”には“リアクティブプログラミング”と“イベント駆動ウェブ”の両方が含まれている。

約1ヶ月前、何冊もの本を著しているBruce Eckel氏とTypesafeのCTOでAkkaの作者であるJonas Boner氏が“The Reactive Manifesto”を発表した。これはリアクティブなアプリケーションはどのようなものかを定義しようとしている。

リアクティブなアプリケーションは、

  • イベントに反応する: イベント駆動であることが次の3つの性質を生む
  • 負荷に反応する: 単一ユーザの性能より、スケーラビリティを重視する
  • 障害に反応する: すべてのレベルで復旧する能力を持つ、弾力のあるシステムを構築する
  • ユーザに反応する: 上の特性を合わせてインタラクティブなユーザエクスペリエンスを提供する

マニュフェストの発表後、Scalaの作者のMartin Odersky氏Reactive Extensionsの作者であるErik Meijer氏、Akkaの技術リードであるRoland Kuhn氏がCoursera上で“Principles of Reactive Programming”というコースを開設した。

このコースの目的はリアクティブプログラミングの原則を教えることです。リアクティブプログラミングの原則は並列性とイベント駆動と非同期システムが合体しています。ウェブサービスや分散システム、ハイパフォーマンスな非同期システムを実行する構築する上で、リアクティブプログラミングは重要な役割を果たします。リアクティブプログラミングは、並列システムのための高階関数プログラミングの自然な発展形と見なせます。このような並列システムは高階関数プログラミングはアクター同士交換する非同期データストリームを差配することで分散状態を管理します。

RPを盛んに使っているのはNetflixだ。同社はRxのJava移植を公開している。

RxJavaを使った関数型リアクティブプログラミングを活用することでNetflixの開発者は、スレッドセーフや同期の問題に腐心せずにサーバサイドの並列性を利用できます。APIサービスレイヤの実装は並列性のプリミティブを管理するので、クライアントコードをおかしくしてしまうことを心配せずにシステムの性能を追求できるのです。RxJavaはサーバ側で十分に活用できます。使えば使うほど、コードに浸透していきます。

Facebookも最近、次世代のユーザインターフェースを開発するためにReact JavaScript libraryを発表した。FacebookのエンジニアであるStoyan Stefanov氏はReactの背景にあるコンセプトを説明している。

Reactを使えば、データのレンダリング方法を知っているコンポーネントを使ってアプリケーションを構築できます。データが変わったとき、コンポーネントは自動的にかつ効率的に更新されます。イベントハンドラのアタッチとデタッチは開発者が制御します。

RPはすでにフロントエンドエンジニアから多くの注目を集めている。発端となったのは2009年のFlapjaxのペーパー [PDF]で、以後、Bacon.jsKnockoutMeteorReact.jsReactive.coffeeRxJSなどリアクティブプログラミングの原則を実装したライブラリが現れている。

QCon San Francisco 2013カンファレンスでは、リアクティブというパラダイムについても大きく取り上げる予定だ。チュートリアルトラックもある。早く登録するとお得だ。

この記事に星をつける

おすすめ度
スタイル

BT