Java 8徹底再入門(大阪,7/11)に参加しました。
1. 栄養補充
勉強会前の栄養補給。
きたー!!!(((o(*゚▽゚*)o))) pic.twitter.com/6JSMW4fHLS
— こざけ (@s_kozake) 2015, 7月 11
旨そう*・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・* pic.twitter.com/zphwbihlT4
— こざけ (@s_kozake) 2015, 7月 11
美味しかったです!(((o(*゚▽゚*)o)))
既にこの時点でやりきった感。( ๑°ω°๑)و グッ!
#じゃないだろ
2. 【Date and Time API】
@khasunuma さんによる「Date and Time API」の発表です。
「Date and Time API」はJava8から導入された新しく日付APIですが、そのAPIの複雑さ(実際は日付の概念そのものが複雑だから仕方ないのだが)や、従来のjava.util.Dateとの違い・相互運用などで戸惑っている方も多いと思います。
これらについて、そもそもの時間の概念や「Date and Time API」の基本理念から丁寧に説明頂けました。
詳細やスライドはこちらのブログ纏められておりますので、興味のある方はそちらを参照ください。
「Java 8徹底再入門」に登壇しました。 - Programming Studio
また、「Date and Time API」についてのツイートがこちらにも纏められています(そもそもこのツイートが今回の勉強会に繋がったのです)。
Date and Time APIを理解する為には、ISO 8601に踏み込みましょう! - Togetterまとめ
「Date and Time API」についての纏めとしては、
- Date and Time API は ISO 8601 (コンピュータ間でデータのやりとりをする際の、日付と時刻の書式に関する国際規格)をモデリングして作られたものということを意識すること(ただし、ZonedDateTimeはそれとは違うということも意識すること)
- まずはLocalDateについてマスターすること
- Local/Offset/Zoned の存在意義を把握すること
- 色々試してみること!
とのことでした!。やっぱり色々試してみるのが大事ですね!
個人的な感想としては、
- 時間には人間の歴史や国ごとの政治があるということを感じた。
- 1秒の基準となっているのは、セシウム(Cs133)の共鳴周波数で、これを利用したものが原子時計という話が面白かった。*1
- 「ZonedDateTime」使用する場合は、内部のtz databaseの運用を考えないといけない、ミッションクリティカルシステムでJavaVMのバージョンアップなどを運用フェーズで行えるかどうかの考慮などが必要、という話にハッとした。
- 個人的には、JDBCやORMの対応状況が気になる。
というところです。まだまだ現場での使用実績に乏しいAPIだと思いますが、今後の主流になると思いますので、それに備えたいと思います。
3. 【ラムダ式ハンズオン】
@bitter_fox さんによる「ラムダ式ハンズオン」です。@bitter_fox さんは学生さんですが、Lambdaにも若干絡んでいる最年少JDKコミッタです。
Paraya(GlassFish ディストリビューション)のContributorの@khasunuma さんのセッションといい、どう考えても今回は豪華イベントです。
ハンズオンの内容は次のようなものでした。
- ラムダ式の書き方
- FunctionalInterfaceの定義方法
- forEachを用いた繰り返し処理の書き方
- Streamの説明。Streamの生成・中間操作・終端操作
- mapの使い方
- 乱数を返す無限Streamを用いてのreduceやsummaryStatisticsの使い方
- Optionalの説明
- ParallelStreamの説明と実験
- Streamを使ったファイルからの読み込み
- CollectorとCollectorsの説明
- flatMapの説明
- Collectorsの使い方(toList/joining/groupingBy)
- groupingByConcurrentの説明
ハンズオンは@bitter_fox さんの説明と、スクリーン上のコードを写経する形で淡々と進んでいきました。滑らかで分かりやすい説明で難しさは感じなかったかもしれませんが、これだけの説明が行われていたのですね!本当、凄い事ですよ。
個人的な感想としては、
- OptionalにgetAsDouble()を使ってましたヽ(;▽;)ノ!すいません、負け組です。
- Files.linesで生成したStreamのクローズ漏れが発覚ヽ(;▽;)ノ!
- Collectorの並列処理の順序について自分の勘違いが発覚ヽ(;▽;)ノ!
大丈夫か?俺
ハンズオンの説明の上手さに感心しました。reduceの説明とかは難しいだろうなと思っていましたが、とても分かりやすい図とともに説明していて、流石だと感心しました。
一方で、やっぱりflatMapの説明には苦労されていた模様です。時間もなかったし、ここは難しいですね。
最後のほうでgroupingByConcurrentについて説明頂けたのが嬉しかったです。凄い興味深い内容でした。
本当、説明・進行が上手だったのと、参加者のスキルが高かったので、TA業が暇でした。ハンズオンの内容とは関係ないのですが、前回のGSCollectionsのハンズオンも含めて、ハンズオン形式での進め方(教え方)について凄い勉強になりました。自分が教える立場になった時の参考になりそうです。
4. 【懇親会】
串カツ食べ放題・飲み放題で飲みまくりました!(((o(*゚▽゚*)o)))
@ngsw_taro 食べ放題、飲み放題! pic.twitter.com/YqHm4kcWei
— こざけ (@s_kozake) 2015, 7月 11
その後は二次会にも参加、最後はGeekBearが4周年イベントやっていたので、ちょっとだけ顔出したらビール奢ってもらいました!
ありがとうございます、楽しかったです!!!
*・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・*
*1:10万年に1秒程度の誤差しか生まないというのは凄いですね!