JJUG CCC 2013 Fall に参加してきた

2013/11/11 いろいろ書き忘れてたりスライド公開されたりしたので追記しました。

基調講演-2 2013 エンタープライズ Java 最前線

日本オラクルの寺田佳央さんの基調講演。 GlassFish, JavaEE 7, Project Avatarの話がメインだった。

GlassFish

GlassFish4からは商用サポートがなくなって、オープンソース版のGlassFishのみの提供になるらしい。 Oracleからの商用サポートが欲しければWebLogicを使ってねって話だった。

Java EE 7

JavaEE7は、JavaEE6をベースにしているので、JavaEE6をまずお勉強してから差分をお勉強するといいのではないか。 JavaEE7で新規追加はConcurrency, Batch, JSON, WebSocket。この4つのうちではWebSocketがトレンドらしい。

Project Avatar

JavaScriptでサーバーサイドプログラミングできるよ!ってやつみたい。 現状のRhinoですでにJSをJVM上で動かすのはできてたけど、Java7のIndyを使った新しいJSエンジンのNashornを使うともっと早くなるよという話があった。 Java開発者にJavaSciptへ転向しろって話なのか?って質問があったけど、HTML5アプリが今のトレンドなので、その開発に対する選択肢を増やす目的と言ってた。 まあJavaScript苦手なのであんまり触らないかな、という感じがした。

H-1 ジェネリクスの基礎とクラス設計への応用

Generics Hell

自分が大学でJava触り始めた頃はすでにそろそろJava6が出るぞという頃だったので、仕事とかでJava1.4とか触らざるを得ないとだいぶしんどい。そういう意味でもGenericsはHellを与えてくれる。

基礎知識

ジェネリクスはI/Oの関係性を示す。関係がないときは型変数を使わずに"?"を使う。

境界
  • <? extends T> → 引数にTがあるメソッドが使えない
  • <? super T>  → 戻り値にTがあるメソッドが使えない

ジェネリクスメソッドとかを作る側になった時に覚えておくと便利そう。

それから、初めて知ったのはこれ。

<? extends T & Serializable & ...>

extends以降は"クラス & インターフェース & ... "って続かないとダメみたい。なので、extendsのあとインターフェースだけで境界を設定したい場合は、

<? extends Object & Serializable>

って書かないといけないらしい。まじか。。。

H-2 徹底解説!Project Lambdaのすべて

ジェネリクス→ラムダの流れいいね。ついったーでも何回か言ってたけど、本当に素晴らしくて楽しいセッションだった。

何故Lambdaが必要なのか、Lambdaを導入するにあたっての解決すべき項目、解決手段、結果の順に追って説明してあって、すごいわかりやすかったし、スライドもあとから見てわかりやすく作ってあった。

へえーと思ったところ

  • ラムダ式の引数でだけ、"_"(アンダーバー)が予約語になってて使えないらしい。
  • 型合成マジキチw
  • Objectのデフォルト実装はできない
  • strictfpは使わないわ……
  • Interfaceにpublic static void mainを書いて実行!やったー!!

H-4 リーンスタートアップ x Java

会社を立ち上げてから、どんな感じでJavaを作業の自動化に導入してきたか、という話をしていた。普段から仕事の合間に作業をJavaで自動化したりすることの多い自分にとって、まずは手動でやってからミスが起きたりめんどくささが勝ち始めたあたりで自動化する、という流れはは非常に頷けるものがあった。

Adobe Acrobat Proのフィールド埋め込み機能はすごいなあれ。普通に仕事で使えると思う。あーやってフィールド埋め込むだけなら1ライセンスあれば十分だしな。

その他もろもろ

  • 角印技術ぱねえ!
  • Selenium便利すぎる
  • 需要ありそうなものはどこかのタイミングでOSSにしていくの自分も心がけたい。
  • Googleフォームは自動折り返しだけでもほんと実装して欲しいよね……

R2-5 ScalaでJavaFXのWebViewを愛でる試み

Scalaって書いてあって行ったけど、自分はsbtもJavaFXもほとんど触ってなかったのでターゲットではなかった……。

http://shizone.github.io/slides/jjugccc_2013fall/

プレゼンツールを作ったよ!って話だったんだけど、そのプレゼンツールを実際に使ってました。このプレゼンツール、カンペ機能があるぞ!markdownでスライド内容が書けて、ブラウザで表示できるし、シンプルなところがいいなー。

個人的に欲しい機能としては、カンペ画面で今表示してるやつの次のスライドとか見れるといいな!

R2-6 [BOF] JVM言語パネルディスカッション

Kotlin派として参加しました!!!!

Scalaのあべさん、Clojureのニャンパス*1登尾さん、Kotlinの長澤さん、Kinkの宮川さん、Groovyの山本さん&中野さんの5組でパネルディスカッションでした。

めっちゃ人いる!……って思ったけど、最後の枠の時間になったら半分ぐらい減ってた。圧倒的に時間の足りない感じのするパネルディスカッションでしたね……。もっと時間ほしい感じだった。

Kinkは末尾再帰最適化してるのがいいよね。Scalaで再帰でループするのカッコイイとか思ってしまったのでなかなかうらやましい。

Groovyの人はNTTソフトウェアの人だったんだけど、なんと社内にGrails推進室とかいう部署があるらしくて、そこに勤めてるらしい。いいなーいいなー。

それからKotlinのNull-Safety機構、あとから反応を見てみると割と気になってる人もいるみたいで、このスライドみて気になる人はとにかくKotlinやりましょう!

パネルディスカッションまとめ

  • Scala「先っちょだけ理論」
  • Clojure「カッコがどうせ多いんでしょ」
  • Kotlin「JSは生に限る」
  • Kink「bashよりは早い」
  • Groovy「互換性大事だから」

まとめ

技術系のイベント、初めてだったんだけどめちゃくちゃ楽しかったです。あと懇親会は、ちょっと緊張してあんまり多くの人とは話せなかったけど、次回はどんどん話していきたい感じ。 Kotlinの長澤さんと話すって目標を達成できたのでよかったです!

*1:にゃんぱすー