本記事のレポーター陣
岩塚卓弥、宇梶弘晃、岡田敏、堅田淳也、鈴木源吾(NTTソフトウェアイノベーションセンタ)
Spring Festとは
Spring FestはJSUG(日本Springユーザ会)が主催するSpring Frameworkの日本最大級のイベントです。JSUG主催のイベントとしては、一昨年の「Spring in Summer」、昨年の「Spring Day」に続く3回目の大規模イベントにあたります。昨年まではグラントウキョウサウスタワーでの開催でしたが、今年は会場をKFC Hall & Roomsへと移したことで収容人数が増加し、参加者数は昨年から200名増となりました。
スポンサー企業数も昨年の10から17へと大幅に増加し、ホワイエに設けられたブースでは開場前や休憩時間を利用してスポンサー企業と交流する参加者の姿も多く見られました。
SpringのPivotal、Dave Syerさんが登壇
セッション「What's New in Spring」
Spring Fest 2017 最初のセッション「What's New in Spring」では、さまざまなSpringプロダクトの開発に関わっているPivotalのDave Syerさんが登壇し、Springの現状と今後について講演されました。
長らく開発が進められていたSpring Framework 5.0が2017年9月28日に無事リリースされ、現在のSpring Frameworkは4.3系と5.0系が共存する状況となっています。
Spring Framework 5.0では主に以下のような変更点がありました。
- ベースラインの変更:JDK 8、Servlet 3.1、JMS 2.0、JPA 2.1
- 性能改善
- Functional Bean Configuration
- リアクティブ対応:WebFlux、Router Functionsの追加
- JUnit 5、JDK 9、HTTP/2 のサポート
- Kotlinへの対応
Spring Framework 5.0の目玉であるリアクティブ対応については、デモを交えてその特徴が語られました。新たに導入されたリアクティブ対応のWebフレームワーク、Spring WebFluxを使うことで、ノンブロッキングな処理を行うWebアプリを開発することができ、リソースの利用を効率化することができます。
デモの中では、Spring Initializrから新規プロジェクトを作成し、Spring MVCでのControllerの実装からSpring WebFluxでの実装に変更するところまでを実演。これまでとの実装方法との違いを理解することができました。
さて、Spring WebFluxが追加されたことで、今後は全てのアプリケーションをリアクティブに実装していくべきなのでしょうか? Daveさんはそうではないと語ります。従来のServletとSpring MVCを利用した実装方法はシンプルであり、十分に分かりやすいものです。リアクティブ対応のメリットと従来の実装方法が持つシンプルさを比較した上で、リアクティブを適用していくかどうかを判断していく必要がありそうです。
最後に、今後のSpring関連プロダクトの状況が紹介されました。Spring Dataは10月に既に公開済みのリリーストレイン”Kay”でSpring Framework 5.0対応が行われており、Spring Security、Spring Integrationといったプロダクトもそれに続くべくメジャーバージョンアップの作業が進められています(その後、Spring Security 5.0.0 が2017年11月28日に、Spring Integration 5.0.0が2017年11月29日に無事リリースされました)。
また、Spring Boot 2.0.0については他のプロダクトがSpring Framework 5.0へ対応するのを待っている状況であり、現在のところ2018年2月頃のリリースを見込んでいるとのことです。Spring Boot 2.0.0がリリースされれば、続いてSpring Cloudの新しいリリーストレインである”Finchley”がリリースされていく予定です。
Spring Frameworkと関連プロダクトのリリースについて、今後も注意深くウォッチしていく必要がありそうです。
セッション「The Road to Serverless」
Daveさんのもう1つのセッションは、ここ1~2年耳目を集めている「サーバーレス」に関するものでした。このセッションでは初めに、サーバーレスの考え方が台頭してきた背景やサーバーレス化の一般的なメリットについて語られました。
特に繰り返し強調されていたのは、”Value line(価値の境界線)”という言葉です。Daveさんは、サーバーやネットワーク等のインフラストラクチャは既に「差別化につながらない重労働」としてValue lineの下に位置しており、さらにValue lineは上昇を続けていると話しました。サーバーレスではValue lineの下にあるものは全て抽象化されており、アプリケーションプログラマはValue lineの上に位置するもの、すなわちビジネスロジックだけに注力できるようになります。
プログラマが意識しなくて済むことを増やし、ビジネスロジックに集中できるようにするという方向性はSpringが一貫して目指してきた目標でもあります。Springが取り組むサーバーレスへのアプローチとして、開発中のプロジェクト「Spring Cloud Function」が紹介されました。
Spring Cloud Functionのデモでは、SpringのBeanとして定義したJavaのFunctionがWeb APIとして機能するところを見せてくれました。一見すると普通のSpring Bootアプリケーションなのですが、Controllerに相当する部分がなくロジック(関数)に直結されており、非常にコンパクトなコードとなっていました。同じコードをMQなどのメッセージストリームの処理にも使えるそうです。
また、AWS Lambdaをはじめとしたサーバーレスプロバイダへのアダプタも提供し、どのプロバイダでも一貫して、これまで同様のSpringの機能を利用したプログラミングスタイルでの開発ができるようになるとのことです。その他、入力された文字列を動的に関数にコンパイルする機能等も提供されます。
本稿執筆時点では正式リリース前で未知数な部分も多いですが、今後要注目のプロジェクトです。