読者です 読者をやめる 読者になる 読者になる

SpringOne2015-KeynoteSession(初日)のまとめ

本日より、ワシントンD.Cにて開催されている、SpringOneカンファレンスに参加させて頂いています。
f:id:takahiro-f:20150914194048j:plain

SpringOne

初日は、Keynoteのみの実施でしたが、聴きながら自分が感じたことを整理することも兼ねて、ブログにまとめさせて頂きます。

KeyNoteのテーマ

今年のSpringOneのテーマとして、 "Get Cloud Native" が掲げられていました。
皆さんは、Springのテーマとしてしっくりきましたか?
これを見て、「やばい、これがテーマだとするとうちは結構ビハインドしてる、、」と思いました汗

KeyNoteセッションの中でも、下記のような表現で、
"Cloud Nativeになることの恩恵"についてアピールがされていました。

  • Transforming with Spring Cloud.
  • Cloud native application(Pivotal Cloud Foundary) wave.

CloudとSpring、Springに関連するOSS(Netflixなど)を利用して
今までにない速度で効率的に開発を進められることが強調されていました。

Springとは何か

みなさんは、

"Spring" という言葉を聞いてどのようなイメージを思い浮かべますか?
"Springって何ですか?" という問いかけに対してどのような答えをお持ちでしょうか?

SpringはJavaフレームワークの一つ

という答えをお持ちの方もいらっしゃると思います。
自分自身もSpring Bootを理解するまで、その回答でした。

その答え自体が完全に間違っているわけでは無いですが、
この数年のSpringの進歩に伴い、回答として適切では無くなってきています。
あと1,2年後には、その回答自体あまり出てこなくなるのでは、と想像しています。

上で出てきた、Spring Cloud・Pivotal Cloud Foundary共に、
既存のJavaフレームワークの領域に留まる話しではありません。

Sessionの中で印象にのこっていた表現としてはSpringは今


  • Pivotal Cloud foundry(cloud native)
  • Spring cloud(coordination) + with(Netflix | OSS)
  • Spring boot(configuration)
  • Spring framework/io(application)


f:id:takahiro-f:20150914190604j:plain
f:id:takahiro-f:20150914195240j:plain

こういった役割があるといった表現です。

Spring frameworkJavaフレームワークとして"application"の実装において、様々な恩恵を授けてくれます。
Spring bootは、framworkの機能に加え、
auto configulation、embedded tomcat、依存性の自動解決など、
今まで開発者が時間を取られていた、"configulation"の部分をサポートしてくれます。
そして、Spring cloudとNetflixのoss(eurekaなど)を連携することで複数のサーバで動作する複数のアプリケーションの"coordination"を
強力にサポートしてくれます。
そして、Pivotal cloud fondary(PaaS)というクラウド基盤を土台にして様々なソフトウェア(例えばDB)と連携して、
より一層素早く、管理しやすいアプリケーションを作ることができます。
この全てをもって、Springです。

Springは単なるフレームワークではなく、

アプリケーションのためのプラットフォームになりつつある(それを目指している)
と改めてこの図をみて実感しました。
必ずしもSpringを使う上でその全てを使わないといけないわけではありません。
しかし、もしも今SpringをJavaフレームワークの一つという目線で見ているのであれば、
上の図にある機能を公式サイトから是非一度見てみてください。
今までと違ったアプローチで、あなたのアプリケーションの改善の糸口が見つかるかもしれません。

Springの採択について

実際にSpringが採択されて、使われている会社の一例として、中国のAribabaが紹介されていました。
AribabaがJavaフレームワークとしてSpringに統一することに決めたというようなスライドが出ていました(一瞬でしたのでうる覚えです

フレームワーク単体で動かしていると、無理に全部のフレームワークを統一する必要が無いと感じるかもしれませんが、
Spring Cloud Configなどの恩恵を受けるためには、フレームワークを統一していくことは大きな意味を持っています。
逆に1,2個のアプリ(Springを使っている)しかSpringを使ってい無い状態では、Cloud configの良さも半減してしまいます。

Spring Bootについて

Spring Bootのダウンロード数は順調に推移していて,この1年で5倍程度に推移したそうです。
自分の身の回りをみても、Spring bootが出てから、Springの話が出る頻度は明らかに増したと思います。

Spring4.3/5.0について

カンファレンスのテーマ自体はフレームワークに焦点をあてていませんが、
Keynoteの中ではもちろんSpring Frameworkの最新動向についても触れられていました。

直近で予定されている4.3へのアップデート概要、および翌年の2Qリリースが予定されているSpring5.0についても触れられていました。
ここで注目しておきたいのは、Spring5.0はJava8をBaselineとしている(Java8じゃないと使えないよ)ことです。
アプリケーションをJava8で動かすようにしておかないと、Spring5に移行できないですよ。と。
Java6->Java7への諸般の事情による停滞がありましたが、以降は2年ごとにJavaはメジャーバージョンアップしていきます。
常に安心して最新のJavaへアップデートできるような環境を用意し、最新のフレームワークを試せる環境を用意したいです。

また、今回のカンファレンスでいくつかセッションが取り上げられている、"Reactive Programming"についても触れられていました。
Spring5.0では明確にサポートしていくそうです。
自分自身Reactive Programmingをまだきちんと理解できていませんが、
アプリケーションのクラス構成が変わりそうですね。

Spring Framework 4.3

  • refinements in the core deoendency injection model
  • a richer set of convenience annotations(pre-composed)

Spring Framework 5.0 (Q2 2016)

  • Java 8 Baseline
  • JDK 9 support
  • HTTP/2

Cloud native workshopの開催

pivotalがcloud native applicationのhands on sessionを開催して、
テーマであるget cloud nativeを促進してくれるみたいです。
日本でもやってくれるのかな、、、
http://pivotal.io/cloud-native-workshop

Junitのサポート

PivotalはJunitのサポートを公式に行うそうです。
(エンジニアとお金のサポート)
f:id:takahiro-f:20150914194947j:plain

主にjunit5においてLamnda式に対応することを目的するそうですが、
詳細な情報は下記から確認できます。
また、どなたでも寄付出来るので、junitヘビーユーザーの皆さんは是非。

http://junit.org/junit-lambda.html

Live coding

他のカンファレンスと明確に違うのは、Live codingの時間が多く取られていることです。
Springの各機能にできる限りふれつつ、限られた時間で動くものを作り上げていきます。
おそらく、かなり準備してきたのだろうと思われます。
大きなセッションほどKeyNoteは退屈してしまう時間があったりしますが、
SpringOneではLiveCodingを行うことで、大半のエンジニアが非常に関心を持って、
話を聞いていました。
今までの海外カンファレンスの中で、一番身になったKeyNoteでした。

まとめ

KeynoteからLive Codingをしてアプリケーションを動かしたりしていることからも、
Springは簡単にすぐ動くアプリケーションを作ることができる。
ということをKeynoteから全力でアピールしているなと感じて、以降のセッションへのモチベーションが高まりました。
加えて刺激を受けたのが、比較的長いLiveCodingでミスなく(よく本番でライブコーディングしていると、意図していないExceptionが不意に起きちゃったりするのです)
完了していることです。

すぐに動くものを作れるのがSpringの強みで、自分もそこに魅力を感じてるんだなと再認識しました。

追記

2015/09/17 junitのパートを追加