Chatwork、LINE、Netflixが進めるリアクティブシステムとは? メリットは? 実現するためのライブラリは?リアクティブプログラミング超入門(1)(2/2 ページ)

» 2017年04月27日 05時00分 公開
[中村修太クラスメソッド株式会社]
前のページへ 1|2       

リアクティブシステムを実現するための主なライブラリ

 実際にRPを行うには、そのためのライブラリを使用する必要があります。ここではよく使用されるRPライブラリを紹介します。

ReactiveX

 ReactiveXは、RPで実装するためのライブラリ群で、JavaやJavaScript、Swiftなど、さまざまな言語で使用できます。

 2009年にマイクロソフトが.NET用のRPライブラリとして公開したのが最初で、当時は「Reactive Extensions」という呼称でした。その後他の言語にも移植され、(オープンソースソフトウェア)OSS化してReactiveXとなりました。現在、最もポピュラーなRP用ライブラリの1つとなっています。

RxJavaとReactive Streams

 RxJavaは、Netflixによって2013年に公開された、JavaやAndroidでRPを行うためのライブラリです。2017年4月現在は、バージョン2.x系もあり、ノンブロッキングで非同期なストリーム処理の仕様である「Reactive Streams」のAPIに準拠しています。

 なおNetflixは、ReactiveXにおいても主導的な立場にあり、RPを推進しています。

 RxJavaの詳細については、本連載では触れません。下記などをご確認ください。

Reactor Core

 Reactor CoreはPivotalが開発している、前述のReactive Streamsに準拠したJava用の軽量ライブラリです。

 既に、Spring IOのコア機能として採用されており、次期Spring FrameworkでSpring MVCのリアクティブ機能として採用予定です。

 Reactor Coreの詳細についても、本連載では触れません。下記などをご確認ください。

Lightbend Reactive Platform

 「Lightbend Reactive Platform」は個別のライブラリではなく、Scalaで有名なLightbend社(※旧Typesafe社)が開発したリアクティブなアプリケーションを構築するための開発プラットフォームです。

Lightbend Reactive Platformの概要(公式サイトから引用)

 上記のようにライブラリやフレームワークだけではなく、オーケストレーションツールやモニタリングツールも含まれます。

 RPに関連する部分としては、下記コンポーネントがコアとなっています。

  • Play Framework
  • Akka
  • Slick

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」を使用してリアクティブなアプリケーションを作成していきます。

参考情報

 本記事で参考にしたサイトの情報です。

著者紹介

中村修太(なかむら しゅうた)

中村修太

クラスメソッド勤務の新しもの好きプログラマーです。数年前に東京から山口県に引っ越し、現在もリモート勤務しています。最近の趣味は空手とぬか漬け作り。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。