リアクティブプログラミング
Spring Framework 5.0のリリース以前から注目を集めていたReactorによるリアクティブプログラミングですが、今回のカンファレンスでも関連セッションには多くの参加者が集まり、依然として開発者たちの関心を引いている様子が見て取れました。
セッションの内容の全体的な傾向としては、これまでのカンファレンスで主に語られてきたReactorの概要や基本APIの紹介は少なくなっており、より内部の動作に踏み込んだ説明が主体となっていました。
例えばSimon Basleさんの「Flight of the Flux: A look at Reactor execution model」というセッションでは、スレッドレベルでのReactorの挙動に関する細かい解説が行われています。Fluxのオペレータは基本的には単一のスレッドで処理されるのですが、publishOnやsubscribeOnといったAPIを使用することでオペレータの処理やsubscribeを実行するスレッドを切り替えることができます。セッションでは、これらのAPIを組み合わせた場合の他、並列動作する2つのスレッドのデータを組み合わせる場合に、どのスレッドで処理が行われるか等のトピックを扱っていました。
普段はあまり意識する必要はなくても、Reactorをフルに活用する上ではその実行モデルについてのこうした知識は有用なものになるでしょう。
その他、Mark Paluchさんの「Under the Hood of Reactive Data Access」ではデータアクセス周辺機能に特化してMongoDBやRedis、Cassandra、Couchbaseのリアクティブプログラミングへの対応状況について語ってくれました。RDBに関しては、スケーラビリティやトランザクションといった観点からリアクティブなアクセスにあまり適合しないと話し、ADBAとR2DBCという2つの試験的なSPIが簡単に紹介されるのみにとどまりました。R2DBCはReactive Streamsに対応しており、PostgreSQL用の実装にはReactor Nettyが使用されています。Reactor Nettyの機能やその使用方法についてはVioleta Georgievaさんの「Reactor Netty, the default runtime for Spring Boot 2.0」というセッションで語られていました。
参加者の中でも実際にReactorを使用してアプリケーションを開発している人はまだ少ない様子でしたが、詳細な情報に触れることで技術者の理解が進むに連れ、徐々に普及に向かうフェーズを迎えているのかもしれません。
おわりに
以上、Spring I/O 2018のハイライトをお伝えしました。本稿でご紹介できた内容は全体のごく一部です。セッションの動画はYouTubeで順次公開されているので、興味のあるセッションについては実際に視聴してみてください。
一参加者としては、レポートに記述したテクニカルな面はもちろんのことながら、会場の規模・立地や運営スタッフの対応といった面でも総じて満足度の高いイベントであったと感じました。クロージングのセッションでは次回は来年の5月16日、17日の開催となることが発表されているので、ご参加を検討される方は予定を空けておきましょう。
日本、アメリカ、ヨーロッパと、どこのカンファレンスに参加してもSpringとそれを取り巻く環境に対する関心がここ数年で一段と高まっていることが感じられます。今、新たな局面を迎えているJavaとともにSpringがどのような変化を遂げていくのか、今後も目を離せない状況が続きそうです。