夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Akka StreamsによるReactive Streamsって?

こんにちは。

最近気になっていた「Reactive Streams」について試してみました。

1. Reactive Streamsとは?

少し前にReactive Streamという情報がWebに流れていました。

何かというと、
"Reactive Streams is an initiative to provide a standard for
asynchronous stream processing with non-blocking back pressure on the JVM."

つまり、
JVM上で動作するバックプレッシャー機能を保持するノンブロッキングな非同期ストリーム処理標準化のための提案
ということになります。

実際どういう意図で始まり、概要がどういうものか、についてはOkapiesさんがまとめています。

その後、Reactive Streamに準拠した実装であるAkka Streamsについて情報が公開されました。

そのため、実際に動作させて試してみることにします。

2.Akka Streamsのインストール

Akka StreamsはTypesafe Activator UIから実行することが可能になっています。
そのため、まずは「http://typesafe.com/platform/getstarted」からActivator's UIをダウンロードします。

ダウンロードして展開すると下記のようなファイルが展開されます。

展開されたディレクトリに移動し、下記のコマンドを実行します。
すると、ライブラリの解決が行われ、UIが起動します。

C:\Download\typesafe-activator-1.1.3\activator-1.1.3>activator ui
(省略)
Play server process ID is 5040
[info] play - Application started (Prod)
[info] play - Listening for HTTP on /127.0.0.1:8888
[INFO] [05/28/2014 22:37:59.797] [default-akka.actor.default-dispatcher-5] [akka://default/user/home-socket-1] Firing up web socket
[info] application - WebSocket streams created


その後、左からメニュー「Akka Streams with Scala!」を選んでみると
コピー先を選ぶ画面が表示されます。


その後、「Create」ボタンを押下すると指定したディレクトリ配下にファイルがダウンロードされ、
プロジェクトが構築されます。

3.Akka Streamsを動作させてみると・・?

プロジェクト構築後、更に画面が遷移し、自動的にビルドが開始されます。

左のメニューを選ぶとダウンロードしてきたファイルのソースコードも確認可能です。
ここまで来ると凄いとしか言いようが無いですね。

なお、このソースは見てわかる通り、文章を大文字に変えて出力するというものです。
実際に画面上から実行まで出来てしまい、結果が表示されます。

次のソースは「自分自身が素数かつ、2加算した数も素数」という数を抽出して出力するものです。

こちらも実行してみると結果がログに出力されます。

・・・という形で、あっという間にサンプルを動かすことができてしまいました。
今回はAkka-Streams以上にTypeSafeのactivator-uiのすごさに驚いたような感じでしたが^^:
とりあえず、今回はここまでで、次回は他のアプリケーションを動作させたり、
ソースコードを読み、Reactive Streamとの対応も確認してみることにします。