Spring Fest 2017 に参加してきました

初めて大規模なカンファレンスに参加しました。ビギナー向けから上級者向けまで様々なセッションがあり、色々と勉強になりました。ので、特に勉強になったセッションにそれぞれまとめてみました。

springfest2017.springframework.jp

Introduction

Pivotalの人(Springを作ってる人)が登壇し、これからのSpringの進化について話てくれました。Springが5.0.0にバージョンアップするので、他のSpringプロジェクト(Security, Batch)をどうするだとか、JDK 8 を今後公式サポートし JDK 7 以前をサポート対象外にするとか、そんな話です。

特に興味を持ったのが、Spring 5.0.0から登場する Spring WebFlux でした。これは、JDK 8 で導入されたラムダ式を利用することを想定し、non-blocking な IO を実現する リアクティブシステムみたいです。詳しいことはわかりませんでしたが、今後 WebFluxというのはSpring MVC と同じくらい重要なコア機能になっていくことが伝わってきました。

Web on Reactive Stack

Session 2 これから始めるSpringウェブアプリケーション

Spring MVC の初歩的な内容に関する話でした。とても基本的な内容だったので、前半の話している内容のほとんどはすでに知っている知識でした。

後半のSpring Bootに関する話は得るものは多く、以下の様な話がありました。

  • Spring Initializerを使用すれば簡単にSpring Bootのpom.xmlとメインクラスファイルを手に入れることができる。
  • Spring Boot では H2 などの組み込みデータベースを使うことが多いが、Spring BootではH2の管理画面へ簡単にログインできる
  • H2のDDLや初期化データのスクリプトの配置場所

Session 3 Spring REST API

楽天の方がSpring Data REST を現場のプロジェクトへ適用した体験談でした。Spring Data REST は初めて聞いたんですが、5分でREST API を作ることができるらしいです。プロトタイピングや簡単なAPI実装だったら使えそうだなと思いました。

セッションの最後でなんと、Spring Data RESTを使うのをやめたということで体験談が終わりました。理由としては、Spring Data REST は非常に簡単にREST APIを作れるがその一方で制約も多く、複雑なAPIを作るのには向いていないということでした。全ての状況に効く特効薬は存在しないということですね。

このセッションでもSpring Boot を Spring Initializer を使用して作成していました。Spring Boot は 自分が思っていた以上に至るところで使用されているんだなと感じました。勉強した方が良さそうです。

Spring Data REST

Session 4 Spring Domain Driven Development

Spring を使用してドメイン駆動開発をどう行っていくかという話でした。ドメイン駆動開発がなんなのかよくわからずに参加しましたが、今回のカンファレンスでは一番勉強になったセッションだと思います。

ドメイン駆動開発とはいわばお客さんのドメインに合わせてモデルと実装を行い成長し続けるソフトウェアを構築する方法です。アジャイル開発などで開発することを想定しており、繰り返しモデリングと実装を行い、核となる要素を得ることが大切だそうです。

Springは元々DDD開発のためのフレームワークであるという発言がありました。というのも、Spring を使えば開発者はアプリケーション固有の形態(ウェブアプリ、バッチ)を深く意識する必要はなく、ドメインの探求に注力できるからだそうです。IoCコンテナを用いることで、アプリケーション固有の機能とドメインのコードが分離されると言った様な話もありました。

特にSpring Bootを使用してプロジェクトの初期の段階からどう動けばいいかを説明されていた場面が非常に面白かったです。わかったことをエクセルにまとめてはいけない、コードで表現せよとのことでした。

  • 初日から絶対コードで書くべき! -> sprint boot
  • 初日から、動くアプリケーションで考える
  • 初日から、学んだコードで記録する -> git で履歴を管理し、知識の遷移を
  • 初日から、コードでモデルを表現してみる
  • 初日から、End to End で実験してみる

話の最後では書籍の案内もあり、今後読んでみようと思います。

エクストリームプログラミング

エクストリームプログラミング

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)