本記事のレポーター
- 岩塚卓弥、栗原伸豪(NTTソフトウェアイノベーションセンタ)
- 高須隼太、平栗勇人、細井貴史(NTTデータ)
Spring I/Oとは
Spring I/Oは、javaHispano(スペインのJavaユーザグループ)のメンバーであるSergi Almerさんがオーガナイザを務めるSpring Frameworkに関するカンファレンスです。
例年バルセロナで5月頃開催されており、ヨーロッパからの参加者を中心に今年は1100人以上が参加しています。参加者数は年々増加傾向にあり、昨年からは観光名所であるマジカ噴水のほど近くにあるPalau de Congressos de Barcelonaという広い会場を利用しています。
カンファレンスの日程は2日間で、今年は講演とワークショップ合わせて56のセッションが開かれました。スピーカーの中にはSpring FrameworkやSpring BootなどのSpringプロジェクトの開発メンバーも含まれており、講演の合間も参加者からさまざまな質問を受けている様子が見られました。
会場は3フロアで、エントランスフロアにはプラチナスポンサーのPivotalをはじめとするスポンサー企業のブースの他、今年は写真撮影用のスポットが多数配置されていました。昨今の「SNS映え」を意識した試みのようで、実際に写真をTwitterにアップロードしている参加者もおり、好評だった模様です。
Spring Frameworkのロードマップ
カンファレンス初日は、Spring Frameworkの開発リーダであるJuergen HoellerさんによるSpring Frameworkのロードマップに関する講演から始まりました。最初に語られたのは、7月31日(注1)にリリースが予定されているSpring Framework 5.2についての内容でした。
Spring Frameworkではバージョン5.0以降、起動時間の短縮に向けたリファクタリングが積極的になされており、Spring Framework 5.2においても新たな最適化が施されているそうです。その一環として新たにMergedAnnotationsというAPIが導入されており、Spring Frameworkのプログラミングモデルの特徴でもあるアノテーションの処理の高速化が図られています。
また、Spring Framework 5.0で導入されたRouterFunctionによる関数型エンドポイントの定義について、これまではWebFluxによるリアクティブWebアプリケーションでなければ使用することができませんでしたが、Spring Framework 5.2ではServlet APIを利用した従来のWebアプリケーション用にも同様のAPIが用意されました。
その他、リアクティブAPI関連の新機能やKotlinのコルーチン対応についても触れられていました。これらの内容についてはそれぞれ後述します。
続いて、2020年の2Qにリリースが予定されているSpring Framework 5.3に関する現時点での構想が発表されました。JDK 13、14、15やHibernate ORM 6への対応といった周辺ソフトウェアのバージョンアップを除くと、以下の2つのトピックが挙げられていました。
- Code Analysis Annotation
- GraalVM Native Images
Code Analysis Annotationは目新しい内容にも見えますが、Spring Framework 5.0からすでに導入されている@Nullableや@NonNullといったアノテーションもその一部です。これらのように、ソースコードの静的解析に役立つアノテーションの新たな導入を検討しているそうです。GraalVMについては基調講演の他に詳細に説明されたセッションがあり、そちらの内容と併せて後述します。
最後に、Spring Framework 5の構想の外にある内容として以下の4点が挙げられました。
- JDK 11 Baseline
- Revisiting Java Modules
- Jakarta EE Alignment
- Project Loom(Fibers)
JDK 11やJavaのモジュールシステムについてはSpring Framework 5でも利用可能ではあるものの、必須の前提条件にはしないとのことでした。
Jakarta EEについてはEclipse FoundationsとOracleとの間でjavax名前空間の拡張を行わないという合意がなされたため、Springとしては今後の名前空間の移行などの動きを見極めながら対応していくことになるものと思われます。
興味深いのはProject Loomについて言及があったことです。Project LoomはJavaに軽量スレッド(Fibers)とコルーチンを導入することを目指しています。その背景には、スレッドによる並行プログラミングがスケーラビリティの面で極めて不利であるという事実があります。Spring Frameworkではそれを一因としてリアクティブAPIの整備が進められていますが、将来的にどのような形でProject Loomへの対応が行われていくことになるのか今後が楽しみです。
注1
本記事では、Spring Framework 5.2のリリース予定日を「7月31日」と記載しておりますが、イベント後日にリリーススケジュールが延期され、2019年6月末現在、リリース予定日は「9月4日」となっております。
リリーススケジュールは今後も変更される可能性がございますので、Pivotalからの周知やSpring Release Calendarなどを随時ご確認ください。