「Java 8徹底再入門」に登壇しました。

7 月 11 日 (土) に大阪で開催された「Java 8徹底再入門」(主催: 関西 Java エンジニアの会) にて、Date and Time API のお話をしました。同 API の包括的な解説は JJUG で何回かやっているのですが、大阪でお話しするのは今回が初めてになります (大阪にまとまった時間滞在すること自体が初めてだったりする)。

今回のプレゼンでは、以下の 2 点を目標としました。うまく達成できていたでしょうか?

  • 初めての方 (もしくは一度挫折してしまった方) には、これを機会に Date and Time API を使ってみようと思ってもらえること。
  • 既に使っている方には、ZonedDateTime 一択という使い方について本当に妥当かどうか考え直してもらえること。

発表資料を以下に示します。JJUG CCC 2013 Fall の「JSR 310 "Date and Time API" への招待 II」のストーリーをベースにしながら、2014 年 3 月の Java 8 ローンチ・イベント、#渋谷java での発表内容を盛り込んだものに仕上げました。

これは何度も言っていますが、Date and Time API は ISO 8601 (コンピュータ間でデータのやりとりをする際の、日付と時刻の書式に関する国際規格) をモデリングして作られたもので、ISO 8601 について知らないと API が「なぜ」そのように設計されたのかわからず、適切でない使い方をしてしまうケースが少なくありません。その結果、「Date and Time API は使い勝手が悪い」と早とちりしてしまいがちです。とは言っても、実際に知っておかなければならない ISO 8601 の予備知識は今回の発表スライドに挙げた程度で、それ以上細かい規定については知らなくても大丈夫でしょう。

Date and Time API は public なクラスだけでも 69 個ありますが、そのうち常時使うのは多くても 20 個程度です。これについては、API を扱うプログラマ、あるいはアプリケーションの要求によって異なってくるため、自分自身の感覚でプライオリティを付けておくことが大切です。最初のとっかかりとしては LocalDate を集中的に勉強するとよいでしょう。LocalDate は標準的な操作が一通り揃っており、かつそれほど複雑ではありません。

ある程度慣れてきたら、多くの例を見ておくとよいでしょう。Angela Caicedo が Java Day Tokyo 2015 のセッションで使用した資料は、サンプル集としておすすめです。


今回は筆者のセッションと、@bitter_fox さんの Lambda/Stream API ハンズオンの二本立てでした。

本当にわかっている人がやる説明って、こういうものなのですよ。参加された方は、本当にツイてます!


今回は、何気ない連投ツイートがきっかけで @backpaper0 さんが企画してくださり、@bufferings さん、@s_kozake さん、@irof さん、@yukieen さん、@haljik さんにはスタッフとして勉強会の進行や懇親会の企画、さらには宿探しや当日の道案内まで買って出てくださいました。さらには持ち時間の 50 分を大幅に超過しても (自分で言うのも何ですが、今回レベルの大幅超過は極めて稀です) 会場の皆さんは最後までお付き合いくださいました。皆さんのおかげで、がんばりました。がんばれました。ありがとうございました。