第七回 #渋谷java に行ってきました

弊社オフィスにて@seri_kさんの主催で月一回程度の頻度で開催されている #渋谷java という勉強会に行ってきました。今回が第七回目の開催となります。
http://shibuya-java.connpass.com/event/7060/

実は@seri_kさんは先月で弊社を退職されてしまったのですが、 #渋谷java の開催は続けてくださるそうですw

以下、個人的に気になったセッションについてまとめておきます。

Date and Time API におけるタイムゾーンの扱い

@btnrougeこと蓮沼さんのセッション。TimeZoneとOffsetの使い分け方について説明されていました。

個人的にはもちろんZonedDateTimeとOffsetDateTimeの違いは理解はしていたのですが、使い分けはさほど意識したことなかったので(ZonedDateTimeなら夏時間をいい感じに処理してくれる程度の認識でした)、タイムゾーンは地域の事情によって変わることがあって、Javaのバージョンアップで追従されるが、システムのJavaバージョンを上げられない場合のことも考慮して使い分ける必要がある、という点は勉強になりました。

このあたりはJavaエンタープライズだからというわけではなく、グローバルなプロダクトを提供する立場であれば考えなければいけないことですね。

Spring Bootでブースト開発

弊社の島本によるセッション。普段はScalaしか書いていないはずなのに何故かSpring Bootの発表w

Spring Bootアプリにはメトリクスやコントローラのマッピングなど監視、デバッグのためのWeb APIが予め組み込まれているのは便利だと思いました。特に自動登録されたコントローラのマッピングが取れるのは開発時に便利そうです。

コンセプトとしてはDropwizardと近いと思うのですが、いろんなDBやNoSQLに対応したstarterが用意されていたり、サポートしているライブラリやフレームワークが豊富という点がSpring Bootの魅力だと思います。この手のjarだけでデプロイできるフレームワークは今後Immutable Infrastructureといった観点からも注目を集めていきそうです。

functionaljavaの紹介

Scala界隈からの刺客、@xuwei_kさんのLT。functionaljavaのコントリビュータの上位四人のうち三人はScalazのコミッタであるという驚愕の事実に始まり、関数オブジェクト(Java7以前との互換性のためJava8で導入された関数型は使用していない)、不変データ型、型クラス(Javaで表現できる範囲のものだけあるらしい)の紹介、さらにはJava8のStreamとScalaのコレクションとの違いについて説明されていました。

吉田さんの意見には自分も同意で、Java8のStreamは関数型っぽく書ける便利コレクションと、遅延評価・並列処理のためのコレクションの両方を兼ねてしまっているのが問題なのだと思います。また、サードパーティ製のライブラリとしてイミュータブルなコレクションライブラリを作っても各種フレームワークやライブラリが対応していないのであまり意味がないという点も根が深いです。

まとめ

三連休の初日ということもあって参加者が集まるか不安もあったのですが、盛況だったようでよかったです。準備・撤収を手伝ってくれた弊社の若手メンバーにも感謝です。

次回は9月に開催予定とのことです。いつも #渋谷java を開催しているガーデンの拡張工事(今回は工事音が煩かったですねw)も終わっている予定なので定員も増やせるのではないかと思いますので是非ご参加いただければと思います。