2012/05/31更新

[セミナー] JJUG CCC 2012 Springに参加してきました

このエントリーをはてなブックマークに追加      

2012年5月28日に開催されたJapan Java User Groupのカンファレンス「JJUG CCC 2012 Spring」に 参加してきました。 今日はそこで学び取った内容や感じ取った内容をブログに残したいと思います。

JJUG CCC 2012 Spring
引用元:http://www.java-users.jp/contents/events/ccc2012spring/




JJUG CCCとは

JJUG CCCとは、JJUGが年に2回行っている大きなカンファレンスで、 Javaやその周辺技術に関する最新情報や、最近ホットな技術トレンドについて知る事のできるカンファレンスです。
また今回から懇親会もあったので、Java仲間を増やす事もできました(`・ω・´)
JJUG CCCのカンファレンスは以下を参照。
http://www.java-users.jp/contents/events/ccc2012spring/index.html

以下では、参加したセッションで学んだ事/感じた事をずらずらと書きます(・∀・)




丸山先生のKeynote - Javaの現在とITの未来

画像
https://docs.google.com/file/d/0B04ol8GVySUuVVpVajBUcjJEVGc/edit

(メモと感想)
■Intel RiverTrail 2011年9月
JavaScriptでもマルチスレッド対応が進むかもしれない。ParallelArray()、ParallelArray(size elementalFunction, arg1, …, argN),..

■非同期プログラミング手法の導入
並列プログラミングとならび、今注目されてるところ
○Futureクラス
 ・・・executeはasyncだが、getする際に待たされる。ビミョー。
非同期プログラミングでも進んでいる言語は、.NETらしい。.NETスゴいね。

■IT環境の進化
・21世紀には最初携帯電話が爆発的に普及し、後半にはスマートフォンが普及した。
・Androidの数は、PCの数を超えようとしている。
・それらスマートフォンは、マルチコア化が急速に進んでおり、2015年には、2010年と比べて
 世界のトランジスター数が200倍になる。
・100ドルAndroidを出せれば、爆発的に普及すると考えられている。世界人口70億人をターゲットに商売できる。
・クラウドとクラウドでバイスの統合により新しいプラットフォームが形成される。
・新しいネットワークメディアの成立が起こる。GoogleCloud and Android, Amazon Cloud and Amazon Device, iCloud and iPhone。
・エンタープライス向けシステムでは、大規模化していく?

■JavaEE7への期待
・新しい多くのJSRが動き始めている。例えばJCache, Web Socketなど。
・新しいネットワークマーケットへの対応は、既存のエンタープライスシステムの拡張として対応していくだろう。
・エンタープライスクラウドは、今はまだ黎明期。これからどうなるかが楽しみ。
・クラウド技術のオープン化・標準化の声が強まっていく。それに対応できなければ「ロックイン」というインを押される。
・JavaEE7のPaaS化は、エンタープライスシステムのクラウド化の流れを一層押し進めることになるだろう。
・個人の可能性の拡大にも寄与するだろう。個人が飛行機のコックピットに座り、大きな機体を操縦できるという意味。
 最初のスタートアップで、最初から無数のお客さんを相手にすることができる。
・利用分野。エンタープライス、モバイルデバイス、オープンソース(ApacheやSpringなど)。
・課題。エンタープライスのクラウド移行の遅れ、軽量フレームワーク、軽量言語からの挑戦、Feature Phoneの陥落(=JavaME)とスマートフォンの躍進、Seasarの活動停止、ApacheなどのJCP離脱、Doug LeeのJCP EC辞任。
・これからのJavaの戦略的課題
 ・JavaEE7でのクラウドPaaS化
 ・Android
 ・Java is Openの堅持。エンジン部分は、JavaとScalaとなってきている(Facebook, Twitterなど)。
・Scala、Nashronに期待。
・Java is Back!のために。Open-ness、Community、若い世代の獲得、先進層の関心。

☆感想
Google vs Oracleの訴訟や、空白の6年間などJavaに対してあまり良い感想を持っていなかったが、
Javaはこれからまだまだ魅力的な言語だと感じた。
PHPなどの軽量言語の方が早く開発でき便利だし、.NETのような並行プログラミングや非同期プログラミングのような
メリットはまだ無いが、これから進化しそう。
また、FacebookやTwitterのエンジン部分をJavaで開発しているという話はスゴく魅力的と感じた。
Javaを今後も使っていこうと思いました。




浜本奈保子(オラクルアメリカ)さんのKeynote - JavaユーザグループとJCP : 勝利への方程式

JCPの説明とその参加を促す為のプレゼンテーションでした。
公開資料は見つかりませんでしたが、以下のような内容でした。途中からメモし忘れてましたが。。
世界で通用する為には、標準規格が必要であり、Javaは標準規格に合わせてある。

■Javaの標準規格
・JavaSE, JavaME, JavaEEともにJCPを通して開発されている

■How we do it
・Java Sertification Request(JSR):企画仕様提案の策定
・各エキスパートは、Spec, Technical Reference, RIを提供する必要がある。
・Javaの互換性テスト。「一度書くとどこでも作動する」
・ガバナンス。JCPの規則。 Java Specification Paricipation Agreement(知的財産など), プロセスドキュメント(レビュー手順など)。
・組織構造。JCP Chair, Program Management Office, Exective Community, Spec Lead, Expert Group, Member.
 ・Exective Committee。2つある。JavaMEとJavaSE/EE。
・メンバーシップ。jcp.orgにて登録ユーザー数は3700。個人やJUGは無料。




浅海 智晴さん - Object-Functional Analysis and Design


オブジェクト指向と関数型言語(=Scala)に関するお話でした。ちょー難しかった(>_<)
補足説明をご本人のブログ(→Modegramming Style)でもされているようです。
メモもいちおう掲載。
Scala(関数型プログラミング)とはどんなもので、オブジェクト指向とどう合わせるのか?

■導入
環境が変わる。環境が変わると技術も変わる。
○クラウド、プラットフォーム
 技術進歩が進んでいる。環境が変われば技術も変わる。
・故障、遅延が発生しやすい環境となってきた。たくさんのシステムとやり取りをする。
・大規模データ、大規模演算が要求される。クラウドを使う事で短時間で処理ができる可能性があり、
 それにより新しいビジネスが生まれる。そのビジネスでは大規模データや大規模演算は欠かせない。
 これがスペシャリストができるだけ無く、普通のエンジニアが作れるか否かが会社の強さとなる。
・高頻度イベントが発生するようになる、Location情報とか。そのために非同期、並列、分散を扱える必要がある。
・計算機科学を知る必要がでてくる。
○メニーコア
・並行プログラミング。マルチスレッドを行うとバグが出やすいし、バグが出てもデバックしづらい。
 これを誰がデザインして実装するか、それができる人が必要。
○Domain Specific Language
・モデル記述としてのDSL、自動生成、フレームワークAPIとしてのDSL。作りやすさの向上、開発量の激減。

上記の難しい事を、いかにスーパープログラマの力に頼らず、多くのエンジニアで行うか?
これに対応するひとつがScalaなのかもしれない。

■DSLについて
○アプリケーション、DSL、フレームワークの3層がある。
・アプリケーション・・・DSLの作法に従ってビジネスロジックを記述する。
・DSL・・・フレームワークを簡単に使用する為の専用言語。
・フレームワーク・・・OO、関数型の高度なスキル。優秀な人たちで作っていく。

SIerとしては、DSLやフレームワークを以下に揃えるかが重要となる。


■関数型プログラミング
・ラムダ計算が基礎となっている。代数や圏論がプリミティブとして入っていて、それを知らないと組めない。
・型クラス、代数データ型、モナドなど新しい概念が入っている。
・Jaskell、Scala(+scalaz)など
・(短所)昔は遅かった。関数実行のオーバーヘッドなど。スタックの使用量が読めない。
・(長所)数理科学の内容をプログラミングで用いることができる。群論、圏論、定理と証明など。

■代数的構造デザインパターン
・結合律。半群、モノイド、群。
・可換律。可換半群、可換モノイド

■圏論デザインパターン

■並列プログラミング


■Object Functional Programming(Object志向と関数志向の融合)
・トレイト
・モナド
・型クラス




白石俊平さん - Webフロントエンド開発の最新トレンド HTML5,モバイル,オフライン

画像
http://qcontokyo.com/data_2012/ShumpeiShiraishi_QCon.pdf

このプレゼンテーションはスゴく楽しかったです(*´∇`*)
自分が興味を持ってるHTML5に関することで、スライド内のサンプルもスゴく良い感じで、HTML5の実装モチベーションがスゴく上がりました☆
以下はメモ。
最近の流行:スクロールを使った面白い例:
www.nike.com/jumpman23/aj2012/

カッコいいズームセレクト
http://www.chronozoomproject.org/

WebGL技術で作られた街
http://alteredqualia.com/three/examples/webgl_city.html


2012年中に、HTML5をモバイルアプリに適用しようと考えている開発者は?というアンケートで、
79%がYES。
・FlashがiOSで動かない
・古いブラウザを考慮しなくてよい
・Webアプリでできる事が多くなってきた
・多様なデバイスに対応できる
・デバイスの様々な機能にアクセスできるようになってくる
・オフラインWebアプリケーション。例)titanium mobileのリファレンスはオフライン対応されている。
 早い!サーバー負荷も減らせる!
 CACHE MANIFESTを使うとできる。読み取るWebサイトを作るならすぐこれで!
・ローカルでデータベースやファイルシステムを利用可能。
 →デスクトップアプリ作りと変わらない。Webではなくそっちの作りに近い。
 例)ds-indexeddb.qw.to。RSSリーダーをIndexedDBで作成して、読み込み時にFeedを読み込んでしまう。体感速度が上がる。これからのWebアプリは体感速度がどんどん上がる。
 IndexedDBの使い勝手は良くないが、jdb.jsを作りました。
・File APIが使えるようになりました。例えば動画ファイルを読み込んで再生できます。
 File API, FileAPI:Writer, File API:Systems and Directoriesを使うと、ドメイン毎にファイルシステムを使えるようになる。
 File APIで読み込めるファイルは、ファイルアップロードやドラッグ&ドロップしたデータのみ。
・Geolocation APIによる位置情報へのアクセス。
・Device Orientation Event。html5rocks.com/にあるみたい。
・カメラやマイクからメディアデータを取り込む。Chromeでは有効化すれば使えるらしい。
 navigator.getUserMedia("video", function(stream) {
  var url = URL.createObjectURL(stream);
  video.src = url;
}
・(これから)音声によるテキスト入力、センサー、バイブレーション、アドレス帳やギャラリーからの取得、バッテリー、ネットワークの状態アクセスなど
 →ネイティブアプリとの機能差がどんどん縮小している。
・デバイス感の実装にかなりのばらつきがある。
  mobilehtml5.orgで対応状況を確認することが出来る。
 →今は、機能の一番悪いブラウザに合わせて実装するようになっている。
  Facebookによるモバイル実装状況の断片化を解消しようとしている
  ringmark(Facebook)でベンチマーク。内側の輪っかほど、重要なもの。

・様々なスクリーンサイズに対応できる。
 レスポンシブWebデザインにより、単一のソースコードで複数のスクリーンサイズに対応することができる。
 gravitatedesign.com。ブラウザのサイズによりレイアウトを変える。
 Fluid Gridによるレイアウト。
 Media QueriesによるCSSの切替。
 モバイルファーストで書く。
 万能なわけではない。コンテンツや画像のファイルサイズがモバイルにとって大きすぎて、読み込みに時間がかかるとか。

・google field guide to web application。本のページめくり、オフライン、レスポンシブ、

・様々なデバイスに対応できる
 HTML5にマルチプラットフォーム性がある。
 例えばjQuery Mobileが多数のプラットフォームをサポートしている。
 jQuery Mobileはスマートフォン向けのWebサイト構築フレームワーク。
 ネイティブアプリに近い操作感(フレームワークがJSやCSSを頑張っている)
 フォームやページ遷移がネイティブに近い。
 jQueryMobileのドキュメントがデモとなっている。
 デーマの切替を行う事で、iPhoneっぽいからWindowsっぽいのもできる。
 デスクトップを含め、22のプラットフォームに対応できる。
 DODAなど, ascii.jpスマフォサイトまとめでどこが使っているかが分かる。

・Appcelerator/IDCの調査には続きがある。
 HTML5のみと考えている人は6%のみ。ネイティブより機能がかなり制限されている。
 インストール型アプリのUIをネイティブアプリで作る。

??iPhoneの組み込みWebで、ネイティブアプリを使えるのか?




水島宏太さん - Scala最新状況報告など

Scalaという言語を、最近すごく良く耳にするようになったので、初めてSessionを聞こうと思って参加しました。
自分にとって高度なお話でしたが、楽しかった(*´∇`*)
・Scala Days 2012。国際的なScalaのいべんとで、国際学会をかねている。
・Scalaとは。オブジェクト指向関数型言語。ハイブリッドではなく統合したもの。
 強力な静的型付けができる。
 超強力なコレクションフレームワーク処理ができる
 Javaと同等の実行速度がある
 コードが簡潔(対Javaで平均1/4くらい)
・Twitter, Amazon.com, Foursquare, Linkedln, VMWare, Kloug, Tumblrなどで既に活用されている。
 国内ではまだ中小企業が採用しているくらい。これから。
・現在のScalaは、2.9.2がStable。ただ諸事情により2.9.1を使っている人がまだ多いが。
・Scalaの開発体制。Typesafe + 世界中のコントリビューター。
 決定権は数名のTypesafeメンバによる議決。
 githubでのオープンな開発。Paul Phillipsさんが管理。

■Scala Days 2012
・London, 参加者数400、同時進行トラック4
・Guy Steele & Simon Peyton-Jonesが豪華ゲストとしてきた。
・Scala2.10新機能の紹介、Scalaの今後について、多数の応用例。
・All-in-oneパッケージの提供。Typesafe Stack。重要なScalaツールを①パッケージで配布する。
 sbt(Simple Build Tool), gitter8, Akka, Play 2.0 Frameworkを含む。
・バイナリ互換性問題への対処。Minor Release間での互換性は維持する。Major Release間では互換性を保証しない。
・Scala IDEへの注力。Typesafe社が業務として開発。Scalaを考慮したデバッガ、自動リファクタリングを更に追加。
 現在はコンパイル時間へのストレスがあるが、IDEを使えばImplementalなので、ストレスが減るかも。
・更なるパフォーマンス改善。Primp my libraryパターンを多用するとGCに負荷がかかる。
 AnyValを継承したクラスが作成可能を使用すると、ヒープ使用量が0に。
・学習コストの削減。Language Modularization。言語機能のモジュール化。高度な開発者が使う機能はデフォルトOFF。
・参加する意義。開発コアメンバーに合える。他の参加者とF2Fで議論できる。世界でのScalaを詳しく知ることができる。
 空気感を知ることが出来るのが大きな意義。発表だけなら外からでも分かる。

■その他
・日本Scalaユーザーズグループがあります。




佐々木陽 - Mobile5 最新動向


これも自分のすんごい興味ある内容で面白かったです。
モバイルに注目してHTML5の実装であったり、WebGL, WebCLでのグラフィックのスゴいアプリであったりの紹介が楽しかったです。
またスマートフォンで、Tizen,、BlackBerry、Mozilla Phoneの紹介も面白かった。
以下はメモ。
・iPhoneとAndroidはHTML5への対応がスゴく遅い。
 Tizen, Boot to Gecko、Black Berry 10などのHTML5対応が早く、ここが伸びるかも。
 Windows Phoneは、Windows8で仕切り直しとなる。
 Tizenはネイティブアプリはなく、全てWebアプリ。ローカルにHTMLやJSやCSSをZIPにして実行する。
 Mozilla Phoneも、そろそろアプリマーケットが出るらしい。
・クリエーターがiPhoneとAndroidに集中してしまったので、HTML5への囲い込みも行われる。
・Marketplace for HTML5。
・Mozilla Phoneは自分でビルドして、端末を作ることができる。
・Tizenは、HTML5でプラットフォーム統一ができるので、拡張しやすい。
・Black BerryはAndroidランタイムも動くし、HTML5も動くし、Flashも動く。
・Androidはデフォルトブラウザよりも、3rdパーティ製の方がHTML5実装が進んでいる。OperaならWebGLが動く。
・iPhoneも実はWebGLが搭載されているが、クローズドAPIとなっている。

・ネイティブアプリのユーザー体験をブラウザで再現するのは、かなり時間がかかるという印象。
・Tizenの方がChromeよりHTML5実装が進んでいる。WebGLも対応している。描画は10〜100倍早い。
 JSでの計算は遅いので、それをWebGLに落とす方向で進むか。
・残された問題は、タッチイベント。市販機には解決されるか?

・Phone GapからApache Cordovaへ。
 デバイス周りのAPI(カメラとか)が標準化されていく。

・プラットフォームがHTML5へ強まっている。もうAndroidやiPhoneで市場を巻き返すのは難しいのではないか。

・Future of HTML5?
 Web CLというものが実装されないと、計算処理が遅くて使いものにならない。JSはいまのところ遅い。

・Windows8は、ネイティブと同じように実行されるが、JSの実行エンジンを通すのでネイティブより遅くなる。
・ブラックベリー10も同じような感じ。ただBlackberry用のUIライブラリを使うと、BlackBerryでしか動かなくなる。
 BlackBerryはHTML5の実装が一番進んでいる。
・TizenはWebアプリがネイティブと区別が無くなっている。HTML5で一番スゴい端末。
・Mozilla PhoneはGallerxy S2にビルドできる。
・短期的に見るとiPhoneとAndroidがメインストリームだが、数年後への投石が3つされたのではないだろうか。
・AppleもGoogleもネイティブ重視であり、HTML5アプリの実行環境をオフィシャルに提供するとの情報はない。
 3rdパーティが頑張る系となっている。
 ブラウザ上のユーザー体験は、チップ上でのチューニングが必須。Androidは端末が多数あるので、その
 チューンナップにコストと時間がかかりそう。この問題によりなかなか進化していない。

■HTML5アプリの考察
・開発言語の統一がされつつある。W3Cで策定されている。統一されているからツールもたくさんある。
・フラグメントが発生している。UI周りやDevice周りは書くプラットフォーム毎に作り直さないといけない。
・演算処理の高速化。ネイティブアプリのユーザー体験に近づける為に、WebGLやWebCLへの対応と、
 タッチイベント体験の構築が急がれる。今はネイティブの何百倍もJSは遅い。


☆☆Web CLを調べてみよう☆☆




他にも

自分は参加できなかったですが、以下のカンファレンス資料が公開されています。
■寺田佳央さん - はじめての Java Persistence API


■池田尚史さん - Play! Framework


■長谷川裕一さん - まだまだSpring〜3.1




最後に

得た情報を全て書き出したいと思っていたら、すんごい長い記事となってしまったw。
JavaカンファレンスだけどあまりJavaのお話は聞かず、HTML5関連のお話ばっかりに注目してしまいました。
JavaはTwitterなどの会社が、コアシステムに採用しているなど、前向きな情報を得られて良かった。
Javaは、今後もつきあっていきたい言語です。

大変な長文、最後までお読み頂きましてありがとうございました。






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。