日本 Java ユーザグループ主催の JJUG CCC 2013 Spring に参加してきました。そのメモというか雑感をまとめておきます。
以下のセッションを聴講しました。
- H-1 Java EE 6 から Java EE 7 に向かって
- H-2 Project Lambda Essential
- R5-3 Type Annotation って何? それを使うとプログラムはどう変わる?
- H-4 失敗から学ぶAPI設計
- R5-5 Java読書会ライブ
- R2-6 地方における勉強会事情
H-1 Java EE 6 から Java EE 7 に向かって
寺田佳央さんのセッション。
開始前にいくつかアンケート。- 「Java Day Tokyo 2013 に登録されていない方」
「ああー結構いらっしゃるのですね(悲)」
→開催を知った頃には聴きたいセッションが満席でした、、、残念。 - 「Java EE 5/6/7 を使っている方」
→Java EE というか J2EE 1.4 の Servlet/JSP を Apache Tomcat で使っている程度です。。。
まずは Java EE の歴史から。2009 年に Java EE 6 の話をされたときに、「Struts で十分なんだけど?」というような視線を感じられていたようです。そして Java EE 6/7 で新しく入った技術などの紹介。JSF、JPA、EJB も更新されて圧倒的に使いやすくなったとのこと。単体テストが行いやすくなる EJB 3.1 の組込可能コンテナは便利そうだなと思いました。JSP の書式が更新されて、Lambda 式やコレクションに対するクエリ演算子(LINQ式) などが使えるようになったようですが、あまりビューで頑張らない方がいいのかなと思いました。
そういえば Java EE 6 の新機能などについては、以前オンラインセミナーで聞いたことがあったのでした。資料や動画は公開されていますので、今回の Java EE 7 での更新分とあわせて確認しようと思います。
- Java全般 - OTN セミナー オンデマンド コンテンツ 『Java EE 6 詳細』
H-2 Project Lambda Essential
櫻庭祐一さんのセッション。
Project Lambda の目的は、クロージャの導入ではなく並列計算の導入を容易にすること、のようです。Lambda 式によって記述がずいぶん簡単にできるようになるものだと分かりました。// lambda式自体がメソッドを表す | |
Comparator<Integer> comp = (Integer x, Integer y) -> { return x - y; }; | |
// 型を邪魔だよね→型推論 | |
Comparator<Integer> comp = (x, y) -> { return x - y; }; | |
// カッコとかも邪魔だよね(単文) | |
Comparator<Integer> comp = (x, y) -> x - y; |
また Stream API の使い方についてはサンプルコードで理解が進みました。
// List<Double> nums = ...; | |
// Average | |
double ave = nums.stream().reduce(0,(x,y)->x+y)/n; | |
// Average (Parallel) | |
double ave = nums.parallelStream().reduce(0,(x,y)->x+y)/n; | |
// Variance | |
double var = nums.stream().map(x->(ave-x)*(ave-x)).reduce(0.0,(x,y)->x+y)/n; | |
// Variance (Parallel) | |
double var = nums.parallelStream().map(x->(ave-x)*(ave-x)).reduce(0.0,(x,y)->x+y)/n; | |
// Highest Score Student Graduated in 2012 | |
double hScore = students.stream() | |
.filter(s->s.getGradeYear()==2012) | |
.map(s->s.getScore()) | |
.reduce(0,0,(s1,s2)->s1>s2?s1:s2); |
# Highest Score Student Graduated in 2012 | |
use List::Util qw/reduce/; | |
my $hScore = reduce { $a > $b ? $a : $b } | |
map { $_->{'Score'} } | |
grep { $_->{'GradeYear'} == 2012 } @students; |
Stream については以下エントリよる具体例が分かりやすいです。
R5-3 Type Annotation って何? それを使うとプログラムはどう変わる?
木村英一さんのセッション。
Java 8 には 82 個のアノテーションが定義されているそうです。型アノテーションは @ReadOnly や @NonNull 、@Critical などありますが、その意味(セマンティック)は規定されていないようです。そのため使用するには型アノテーションを利用したチェッカ The Checker Framework などを使う必要があるそうです。H-4 失敗から学ぶAPI設計
山本裕介さんのセッション。
「とてもキャッチーなタイトルですがそんなに失敗していません」と始まり、Twitter API の Java ラッパー Twitter4J における API 設計について、JJUG CCC 2012 Fall での内容を踏まえたお話しでした。 使って貰うための敷居を下げることに注力するという戦略。(別途ダウンロードする手間やバージョンごとの違いを解決することが手間な人もいるので)外部ライブラリ非依存、デザインパターンは(知らない人もいるので)使わない、(API ドキュメントをみて必要な機能がどこにあるか見ない人もいるので)なるべく単一パッケージ、一般的すぎるクラス名にしない、IDE の補完を活かせるような命名規則、など。また互換性のために大事なこととして、クラス名を変えない、挙動を変えない、直列化形式の互換性を保つ、などがありました。互換性が維持できた例として、User クラスのサブクラス UserWithStatus のメソッドを上位クラスに移動して @Deprecated としてコンパイラに警告させるようにして新しいバージョンで廃止できたそうです。
使いやすい設計のおかげで評判はすごく良いみたいですね!
R5-5 Java読書会ライブ
高橋徹さんのセッション。1998 年 12 月より 15年間毎月継続している Java 読書会の実演。
Java読書会1日の時程- 10:00 集合
- 10:10 自己紹介・近況など
- 10:20 書記初期選出。朗読開始(読書会:午前)
- 11:45-12:45 昼食
- 12:45 読書会:午後
- 17:00 片付け。懇親会
QA
- Q「予習は?」
A「(高橋さん)滅多に予習をすることはありません。たまたま予習されていた方から、いま議論している話は後のほうに出てくるよ、といっていただくときもあります」 - Q「読んでいて分からないところは?」
A「Wi-Fi持ってきている人がいるのでその場で調べるか、持ち帰り」 - Q「本を決めるプロセスは?」
A「Webによる投票です→次の読書会で読みたい本ランキング」「書記をやると投票権が1つ貰えます」「読めば分かる入門書は扱わない。自分一人で読むと積ん読になっちゃいそうなちょっと小難しい本が読書会に向いている。マルチスレッドの超難しい本のときは議論を挟む余地はなく淡々と読んだだけで終わったときもありました」 - Q「洋書は?」
A「音読されても皆も分からないので、事前に選書に票を入れた方から担当する部分を下訳したものを当日配って読みます」 - Q「文中のソースコードは?」
A「まじめに読みます「ぱぶりっく くらす ろがー...」」 - Q「サンプルコード等の実行は?」
A「パソコンを持ち込んでいる方がその場で実行して教えて貰うときもありますが、持ち込まない人もいるので宿題になることが多いです」
R2-6 地方における勉強会事情
曽根壮大さんのセッション。
勉強会の形式とそのメリット(知識の研鑽、新しい刺激、楽しい!)、から始まって地方圏と都市圏の違い(参加者数、キャンセルとキャンセル待ち、懇親会参加率)、中国地方勉強会の開催事情(スピーカーの確保)についてのお話しでした。エバンジェリストなど著名な方へのアプローチ方法として、メールだと忙しくて返事が無いこともあるだろうから、twitter をチェックして暇そうな時を見計らって、というところの例で『櫻庭さんが食べ物ツイートを連投したとき』というのがウケました。
その後 JJUG 鈴木さんファシリテートのもと、地方 JUG の方を交えてのパネルディスカッション。イチ参加者でしかない私には分からない、コミュニティ運営における様々なお話が聞けました。
おわりに
Java プログラミングからだいぶ遠ざかっていましたので参加を迷いましたが、とても良い刺激を受け楽しめました。運営の方、発表者の方、ありがとうございました。次回も是非参加させていただきたいと思います。
0 件のコメント:
コメントを投稿