実際にRPを行うには、そのためのライブラリを使用する必要があります。ここではよく使用されるRPライブラリを紹介します。
ReactiveXは、RPで実装するためのライブラリ群で、JavaやJavaScript、Swiftなど、さまざまな言語で使用できます。
2009年にマイクロソフトが.NET用のRPライブラリとして公開したのが最初で、当時は「Reactive Extensions」という呼称でした。その後他の言語にも移植され、(オープンソースソフトウェア)OSS化してReactiveXとなりました。現在、最もポピュラーなRP用ライブラリの1つとなっています。
RxJavaは、Netflixによって2013年に公開された、JavaやAndroidでRPを行うためのライブラリです。2017年4月現在は、バージョン2.x系もあり、ノンブロッキングで非同期なストリーム処理の仕様である「Reactive Streams」のAPIに準拠しています。
なおNetflixは、ReactiveXにおいても主導的な立場にあり、RPを推進しています。
RxJavaの詳細については、本連載では触れません。下記などをご確認ください。
Reactor CoreはPivotalが開発している、前述のReactive Streamsに準拠したJava用の軽量ライブラリです。
既に、Spring IOのコア機能として採用されており、次期Spring FrameworkでSpring MVCのリアクティブ機能として採用予定です。
Reactor Coreの詳細についても、本連載では触れません。下記などをご確認ください。
「Lightbend Reactive Platform」は個別のライブラリではなく、Scalaで有名なLightbend社(※旧Typesafe社)が開発したリアクティブなアプリケーションを構築するための開発プラットフォームです。
上記のようにライブラリやフレームワークだけではなく、オーケストレーションツールやモニタリングツールも含まれます。
RPに関連する部分としては、下記コンポーネントがコアとなっています。
◆Play Framework
ScalaやJavaのAPIを備えた、フルスタックのフレームワークです。ライトウェイト、ステートレスという特徴を持っており、ノンブロッキングの非同期通信やWebSocketをデフォルトでサポートしています。「Iteratee IO」をベースにしたリアクティブモデルを持っており、スケーラブルなアプリケーションでリソースを効率良く使用できます。
Play Frameworkについては、下記連載を参考にしてください。
◆Akka
Play Framework 2で採用された、アクターモデルを採用した並行処理フレームワークです。Akkaはメッセージ駆動をサポートし、RPの伸縮性と耐障害性を実現することもできます。
◆Slick
Scala用のデータベースアクセスライブラリです。コレクションオブジェクトを操作する感覚でデータベースを操作できます。
Slick 3.0では「Reactive Slick」という別名が付いているように、データベースに非同期でアクセスし、Reactive Streamsをサポートするようになりました。
このように、Lightbend Reactive Platformでは各種コンポーネントがRPを実現するための機能を備えており、これらを組み合わせてリアクティブシステムを作成します。
今後の連載では、Lightbend Reactive Platformについて詳細に解説していきます。
今回は、RPの概要、特徴、事例から、それらを取り巻く用語、リアクティブなアプリケーションを実現するためのライブラリまでを簡単に紹介しました。これで「リアクティブ」がどういったものか、少しは理解できたかと思います。
次回から、Lightbend社のリアクティブ開発プラットフォーム「Lightbend Reactive Platform」を使用してリアクティブなアプリケーションを作成していきます。
本記事で参考にしたサイトの情報です。
Copyright © ITmedia, Inc. All Rights Reserved.