Java Day Tokyo 2014
2014/5/22(木) に品川プリンスホテルで行われたJava Day Tokyo 2014に行ってきました。
Java Day Tokyoは、2013年から初まって今年で2回目の開催となるイベントです。
品川駅から2分の距離であり、建物自体も大きくて迷うはずは無いところですが、
案の定30分程迷いました('A`)
会場は基本的に全席テーブル+座り心地の良い椅子でした。
人気セッションでは即席で追加されたと思われるパイプ椅子や、
立ち見の出るセッションもありました。
電源なし、wifiなしの環境だったので、苦労された方が多数出たようです。
この辺りの環境は事前に告知していただけると参加者としては助かります。
教育用レゴロボットMindstormsが会場で販売されていたり、書籍が10%割引で販売されていました。
Mindstormsと言えば大学の授業で扱った事があり懐かしいものです。
全体を通してのキーワード
IoT(Internet of Things)
それでは個別に記載していきます。
以下継承略させていただきます。
■基調講演
#jdt2014_K1
会場入口には電子パネルが。
基調講演会場。 流石は品川プリンスホテル! 豪華です。
オープニング画面。 この後オープニングムービーが流されました。
基調講演は基本的に英語のセッションなので内容はあまり理解できていません。
多くの人が入れ替わり登壇する形で執り行われました。
Nandini Ramani
javaは900万人以上の開発者がいる。
java8ではラムダ式が取り入れられた。
java se8の日本語ドキュメントがJava Day Tokyo 2014の開かれた当日に公開された。
http://docs.oracle.com/javase/jp/8/
java9 open jdkに貢献してもらえると助かる。
既に総人口よりも接続デバイス数の方が多く、今後は更に差が開いていくはず。
NECの事例紹介
papero(ロボット) Java SEで動いている。
パナソニックの事例紹介
Cameron Purdy
Java EE 8 のテーマ
HTTP2.0, JSON Binding, Server-Sent Events(SSE), JAX-RS MVC
JAX-RS 2.0で唯一廃案になったMVCがJava EE 8新機能の上位に入ったらしい。
Java EE8リリースは2016年のQ3になるとのこと。
Stephon Chin
Lego Mindstorms, DUkePad, ChessRobot
Duke, 大地に立つ!!
プルプルしながらバランスをとるデモ。
内部の説明のために首をもがれるDuke.
説明が進むにつれて分解されていき、最後は影も形もない状態に。
※残忍であるため画像はありません
DukePadの説明
構成部品としてRasBerryPIが組み込まれていました。
Padにしては分厚い印象です。
ChessRobotの説明
DukePad -> JavaFX on DeskTop -> RealRobo 一連の流れでチェスのデモがありました。
CGは美しく、チェスの駒になったDukeがかわいいw
Simon Ritter
Oracleがリーダーシップをとって、コミュニティと連携とってますとのこと。
Yusuke Suzuki
2014年5月現在で会員数2290名、Javaに関するイベントやってます。
情報の入手法
ML
会員数はML登録者数でカウントしているとのこと。
情報少なくて申し訳ないですが、基調講演に関しては以上です。
■JavaScript Running On JavaVM: Nashorn (新JavaScriptエンジン)
#jdt2014_d1
西川 彰広 (江草家の人々の江草ロジ子さん)
http://orablogs-jp.blogspot.jp/p/blog-page.html
agenda
Nashorn
Server Side JavaScript
Nashornの今後
Nashorn
JavaScript Engineの一つ。
Rhinoの置き換えで作られた。
JavaとJavaScript間での相互呼び出しが可能。
ドイツ語読みで「なすほん」
JavaからNashornの呼び出し例
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
~~
~~
JavaScriptで「こんにちは」と表示するプログラムを、
Java側でJavaScriptを2秒ごとに呼ぶプログラムを書くと、
2秒ごとに文字が出る。
実行中にJavaScriptに変更を加える。
「こんばんわ」
そうすると、少し時間がかかるが、実行中に変更を検知して表示される文字が「こんばんわ」に変更される。
当然、Nashornからjavaも呼び出せる。(相互呼び出し)
Nashornならではの拡張は?
java typeの参照が取得出来る
Rhinoと同じ方法でも取得出来るが、こちらの方法を推奨。
var HashMap = java.type('java.util.HashMap')
何が違うの?
▶︎ エラー場所が適切に表示されるようになった。
以前の書き方だと、離れた場所でエラーを検知してしまうことがある。
Script functionをLambdaオブジェクトやSAMインタフェースを実装するオブジェクトに自動変換してくれる。
Scope and Context
変数の衝突を避けるために、新しいグローバルスコープを作ってそちら側にロードする、といったことができる。
Server Side JavaScript
Node.js on JVMをやろう!
▶︎ Avater.jsを作った。
Node.jsで使えるモジュールはそのまま使える。
Avater.js = Node + Java
※Threadも含めたjavaテクノロジが活用できる
Avater EE
Avaterは死んでない!
Avater is not dead!!
Nashornの今後
スクリプトをコンパイルしてバイトコードするときに、今はスレッドしか持てない。
他のスレッドは前のスレッドのバイトコードが利用出来ない。
これを解決したい。
Java 8のupdateの中で対応される予定。
■Javaを活用するユーザー企業の最新事例ご紹介
#jdt2014_d2
製品紹介の印象が強かったので細かい記載は省略します。
■Javaアプリケーション開発におけるテストとTDDの実践
#jdt2014_C3
渡辺 修司(Junit実践入門の著者)
自動化テストの成熟度
レベル0 自動化テストしていない。
1 一部テストのみ
2 主要部分はやってる。CIはじめた
3 アーキテクチャレベルでやってる
4 開発プロセスにテストをはじめとした「自動化」が組み込まれている
5 4+さらに改善を続けている。
UTは基本スキル。やったらやっただけレベルが上がる。
社内でテストの勉強会やると良い。
CIとUTは手作業したら負け。Jenkinsしましょう。
自動化のメリット
・コスト削減
・手作業のミス
・コンピューティングリソースを有効活用
・繰り返し何度もテスト出来る ◀︎ これ大事
・楽しい
UTの特徴
・自動的に実行可能なプログラム
・実行コスト < 実装コスト / 手動テスト
・変更の影響がなければ継続利用出来る
早い段階でテストを行うことで、テストの実行回数が増える、間違いに気づきやすくなる。
リグレッションを防止するのではなく、起きた場合に即座に修正できる。
EC2でJenkinsするとリソース確保が簡単。
DB連携
DAO, Repository, EntitiyManagerあたりを使うことが多い。
永続化層のUT戦略は2つある。
外部システムに依存する部分はモックとする方法。
RDBは実質的にシステム内部とみなす方法。
▶今回はこっちの説明。
4 Phase Test
初期化
DBデータの初期化
あるべき状態にリセットする。
関連テーブルの削除。
シーケンス
システム時間
初期化にかかる処理時間
実行
1テストケースで1SQL相当にする。
検証
selectはそうでもないが、update やdeleteは検証が難しい。
後処理
次のテストの初期化に任せて何もしない。
こうすると、失敗したテストのデータが残るので、失敗発生時に役立つ。
Junit3のころに作られたライブラリ。
cmtest-db
DbUnitをJunit4対応したラッパー。
その他のポイント
なるべくローカル実行
システム時間に依存しない
木村 貴由
統合テストの自動化
http://nekop.github.io/slides/Arq.html#/
自動化されていない統合テストをすると...
▶︎ 死んだ魚のような目でスクリーンショットを取り続ける人
arquillian(あーきゅりあん)
統合テストのフレームワーク。
モックするな!本物に近いテストをしよう!!というコンセプト。
本物の実行環境へデプロイしてテストすることが主機能。
IDE連携も出来る。
Reporterという機能でデスクトップをビデオ撮影できる。
▶︎ 大量のキャプチャ画像より映像化した方が便利かも?
和田 卓人 (TDDの話)
テスト駆動開発入門の書き出し「動作するきれいなコード」
TDDのサイクル
いつものサイクル。Red - Green - Refactor
TDDと黄金の回転
いつもの図。
リファクタリングやらなくなると回転が壊れる。
日々の作業にリファクタリングを埋め込むことが大事。
▶︎ 後回しにすると、リファクタリングするために許可を得る必要が出る。そうなると許可は出ない。
TDD導入効果(MS, IBM)
TDD導入によって、2社ともコード実装時間は増えるが、欠陥も減った。
実装時間が2割増えて、欠陥が7〜8割減るといった感じのデータ
TDD
開発工数は増える。が、デバッグ工数が減る。
デバッグ工数減る方が大きいので、全体的な工数は減る。
テストは品質を上げない。
体重計のように、どのぐらいの品質か把握するためのもの。
把握した後にどういう行動をとるかが大事。
カバレッジも計器の一つ。
カバレッジを上げる、100を目指すということにはあまり意味がない。
カバレッジに使われるのではなく、自分たちでカバレッジを使いこなす。
TDDは死んだ By DHH 2014/4/24
タイムリーな話題。
結論は...IS TDD DEAD? というサイトで現在進行形で議論されてる。
こだわるなかれ
テスト駆動にこだわるな
テストファーストにこだわるな
ユニットテストにこだわるな
テストの速さにこだわるな
テストの網羅性にこだわるな
▶︎ 自らが品質に安心できればそれでよい
テスト駆動開発とは、あなたとコードの間の話。
自分で手を動かして考えよう。
#jdt2014_C4
岩崎 浩文
1999 -> 2014の15年間で何が変わった?
J2EEが出た1999はISDNの時代。携帯も折りたたみの前のPHSみたいな形。
javaも当時はEnter priseでは使えないという烙印を押されていた。
EE7, SE8に対応したwebServerは公式のものしかない。
他はβ版なら動くものがちらほらあるぐらい。
昔の構成Struts ▶︎ 今の構成 JSF, JavaFX
開発環境
多くの人はeclipseで止まっている。
▶︎ 企業もStrutsで止まっている
2014年にキャッチアップしないと死んじゃうよー。
windows XP, Office2003死にました。
来年Windows Server2008も死ぬ。
EJBを使うところは変更なし。
JSF1系はヒドい。使うならJSF2系にしましょう。JSF1系ダメ、絶対。
Java EE7の標準はJSF2.2 これで作れば安心。
文字書き換えてリロードするだけで画面が更新される(やっと)
やっぱり移管するには書き換え多い。
【オマケ】
イベントのショップが出ていたので、JavaのTシャツとペンスタンドを購入。
帰り際にアンケートを提出して手帳をいただきました。
昨年度は帰り際にメモ帳をいただきましたが、こちらにはJava Day Tokyo 2013 と記載されていました。
今年もらった手帳には Oracle Java としか書かれておらず、少し残念ですが、質感は昨年のものより高級です。
入場先着200名のアイテムは、先述した通り迷いに迷ったため入手できませんでした。
以上。