3 日目となると、だんだん疲れてきます。睡眠時間も短いし。
ということで、今朝のキーノートは自主的にお休み。今朝は JavaOne のキーノートではなく、OpenWorld と Develop のキーノートなので、はじめからあまり出る気はありませんでした ^ ^;;
それはそうと、今日は中秋の名月。サンフランシスコでも月がキレイでした。
英語だと Harvest Moon というらしいです。というか、Harvest Moon というのは Neil Young のアルバムではないですか。そうか、中秋の名月のことだったのか...
ということで、今日聴講したセッション。
Technical Session
- S314774 Working with JavaFX Media
- S313289 Project Lambda: To Multicore and Beyond
- S313851 JavaFX Production Suite: Nonstop Evolution
Keynote
BOF
おまけ
今日はちょっと JavaFX について書く気がなくなってしまいました。その理由はあしたのレポートで。
Technical Session
S313289 Project Lambda: To Multicore and Beyond
Project Lambda はもともとは Java にクロージャ (というかラムダ式) を導入するためにはじまったプロジェクトです。
いろいろあって、現在はいわゆるラムダ式ではなくなってしまったのですが、そういう出自があったわけです。
で、その目的は効率的にパラレル処理を記述できるようにすることです。
いろいろあって、現在のラムダは、単一メソッドのアブストラクトクラスもしくはインタフェースを実装したクラスを表す簡易記法です。
単一メソッドのことを Single Abstract Method、略して SAM といいます。最近、ラムダのことを Lambda ではなく、SAMbda と書いてあるのは SAM の実装を簡単に書く記法になてしまったからです。
それがいいかどうかは、いろいろと議論がありますが...
個人的にはレキシカルスコープはいらないものの、関数型は導入して欲しかったなぁと思います。
それはそうと、たとえば コレクションの filter を行なうための op メソッドを実装した Predicate インタフェースの実装を書く場合は次のようになります。
Predicate<Student> p = # { Studeent s -> s.gradYear == 2010 }
# { } がラムダ式を表し、-> の前がラムダ式に対する引数の定義、後ろがラムダ式で行なう処理です。
実行する場合は、通常のメソッドと変わりません。
p.op(studeent);
もちろん、既存の Runnable インタフェースや ActionListener インタフェースを実装したオブジェクトを記述することにも使うことができます。
したがって、たとえば Student クラスというのがあって、卒業年度と成績をフィールドに持つとします。この時、2010 年度に卒業した学生のの最高得点を求める場合、普通に書けば次のようになります。
double max = students.filter(new Predicate<Student>() { public boolean op(Student s) { return s.gradYear == 2010; } }).map(new Extractor<Student, Double>() { public Double extract(Student s) { return s.score; } }).max();
ちなみにこの記述の方法は Ruby などのコレクションのイテレーションと同じですね。
Java の for 文を使ったイテレーションは外部イテレーション (external iteration)、ここでの書き方は内部イテレーション (internal iteration) といいます。
これがラムダ式を使用して記述すると、ここまで簡略して書けます。
double max = students.filter(# { Student s -> s.gradYear == 2010 }) .map( # { Student s -> s.score }) .max();
さらに型定義を省略することができます。どのように型の推論を行なっているのかはいまいち分らなかったのですが、この場合はジェネリクスのパラメータを使用しているとのことです。
double max = students.filter(# { s -> s.gradYear == 2010 }) .map( # { s -> s.score }) .max();
さらに、関数型はなくなったものの、メソッドへの参照が取り入れられることになりました。
たとえば、Collections クラスの sortBy 関数をラムダで書くには次のようになります。
Collections.sortBy(peoples, # { p -> p.getLastName() ));
ラムダ式の中では Person クラスの getLastName メソッドをコールしているだけです。これをメソッドの参照を使うと次のように記述できます。
Collections.sortBy(peoples, #Person.getLastName);
# の後にメソッドを指定することで、メソッドの参照を意味します。メソッドであってもカッコ () はいりません。
後半はライブラリをどのように変化させていくかということに言及しました。特にコレクションの扱いです。
キーとなるのは、イテレーションを内部イテレーションから外部イテレーションに対応させることです。
実をいうと、Collections クラスの sortBy 関数などは外部イテレーションということができます。そこで、すでにある実装を使用して Collection インタフェースを外部イテレーションに対応させるという方法が提案されています。
public interface Set<T> extends Collection<T> { public int size(); ... public extension T reduce(Reduce<T> r) default Collections.<T>setReducer; ... }
メソッドの定義に extension キーワードを付加すると、デフォルト実装を指定できるようになります。デフォルト実装は、ミックスインのようにここで記述するのではなく、メソッドへの参照を使用して記述します。
ext JSR 166y への言及はなかったものの、Porject Lambda が Java SE 8 になったとしたら、ext JSR 166y も一緒に導入ということになるのではと予想しているのですがどうなるでしょうね。
Brian Goetz |
Alex Buckley |
Keynote
Oracle OpenWorld Keynote
今日の午後のキーノートは、前半が InfoSys の CEO の Kris Gopalakrishhnan、後半が Larry Ellison。
Kris Gopalakrishhnan はシルエットで登場 |
Larry Ellison のプレゼンは日曜のキーノートの焼き直し。ただ、日曜がグダグダだったのにくらべ、今日は Ellison 節がかなり戻ってきました。
でも、彼のスタイルはもう古いような気がします。ようするに仮想的を作って、それを攻撃しながら、自分たちの製品を売り込むというスタイル。
分らないではないですけど、ちょっと退屈。
と思ったら、Larry Ellison のプレゼンの最中でもゾロゾロと人が出ていくじゃないですか。日曜日のグダグダなプレゼンだったら出ていきたい気持ちは分りますけど、今日はそんなにひどくないんじゃないの?
実をいうと、Larry Ellison がずーっと話し続けているせいで、次のセッションが始まる時間になってしまったのでした。
私も次のセッションのために途中退出してしまいました。
それはそうと、Larry Ellison の資料の中でちょっとこれはという部分を発見。
いろいろな技術・製品のこれからをまとめた資料にそれはありました。右側がそれの拡大写真。
こんなんでいいのか、Oracle!!
BOF
S313960 JavaFX Graphics
今日は Keynote の後に 1 枠だけ BOF があります。そのせいで Moscone へ往復しなくてはならないわけです。どうにかしてもらえないかなぁ。
それはそうとして、このセッションは JavaFX の新しいグラフィックエンジンについて。新しいグラフィックエンジンは Prism という名前です。
Prism では DirectX 9.0c と OpenGL 2.0 に対応していてます。シェイプやイメージ、3D 変換などいろいろなところでハードウェア灰汁レーションを使用するのようになっています。
また、ハードウェアアクセレーションが使えないシステムでは、Java2D のソフトウェアパイプラインを使うようになっています。
最終的なリリースは JavaFX 2.0 になりますが、実験的に JavaFX 1.3.1 でも使えるようになっています。
使い方は JavaFX の起動オプションに -Xtoolkit prism を付加するだけです。
櫻庭も早速やってみたのですが、シェイプなどの描画はかなり速くなった感じ。重たいアニメーションも、軽快に動きます。しかし、文字のレンダリングはダメダメ。
普通に使えるようになるには、もうちょっとという感じです。
Jim Graham |
Kevin Rushforth |
おまけ
Oracle Appreciation Event
今日はいつもより早く終了。BOF も 1 コマだけ。じゃあ、何があるのかというとライブです。
去年までの JavaOne で行なわれていた After Dark Bush と同じようなイベントが行なわれます。しかし、規模が全然違います。
サンフランシスコから対岸のオークランドを結ぶベイブリッジの途中にトレジャーアイランドという島があります。トレジャーアイランドにはライブ会場や小さな遊園地などがあるのですが、なんとそこを貸し切り。
オラクル太っ腹です。
しかも、ライブに出演する人が今を輝く Black Eyed Peas!!!!!!!!! 去年、ビルボードで最も長く 1 位をとっていたバンドではないですか!!!!!
もちろん、櫻庭はゾウ (Elephunk)、サル (Monkey Business) と来て The END も持ってますよ。
Black Eyed Peas の前座が Berlin。すごい懐かしい。まだやってたんだ。
映画トップガンの挿入歌の Take My Beath Away を歌っていたバンド。もう 20 年ぐらい前ですよね。
あの当時、ボーカルの Terri Nunn が髪をまだらに染めて、ミュージックビデオの中で連獅子のようにぐるぐる回していたのをよく覚えています。
そして、Black Eyed Peas の後は Steve Miller Band。うー、渋い。これも見たいけど、開始時間が 11:30。明日のことを考えるとちょっと無理かな。
ライブ会場は 2 つあって、Black Eyed Peas は野外ステージ。もう 1 つ屋内ステージがあって、そこのメインはなんと Eagles の Don Henly。
こっちも見たいけど... Eagles だったら見にいってただろうな。ちなみに、Eagles が再結成する前に、高校生のころ、櫻庭は Don Henly のライブにいったことがあったのでした。
Don Henly の前座と後のバンドは知らない人でした。
シャトルバスで Moscone Center などからトレジャーアイランドに連れていってくれます。Black Eyes Peas の開始時間は 8:45 なので、7 時ぐらいに出ればいいと思っていたわけです。
で、7 時に Moscone West にいったら、すごい行列。
今回の Java or OpenWorld はあまり行列ができないんですけど、この行列はすごかったなぁ。上の写真のように Moscone West の外周をぐるりと 3/4 ぐらい。ちょっと甘く見てました。
トレジャーアイランドに着いたら、すでに Berlin のライブは始まっていました。ここで、一緒にいた @nobeans さんや @ttddyy さんとはぐれ、その後 @ooyama さんともはぐれてしまいました。
これだけ人がいたら絶対に見つからないですね。
Berlin のボーカルの Terri Nunn は昔のようにまだらに染めてはいませんでしたけど、内側が黒、外側が金に染めてました。どっちが地の色なんだろう。それにしても年取ったなぁ。もう 50 才は超えていると思うので、しかたないですけど。
Take My Beath Away しか知らないかなぁと思ったら意外に知っている曲が多かったです。というか、往年の曲ばかりやっていて、最近の曲はやってないんでしょうね。
で、Take My Beath Away はアンコールでした。
Balck Eyed Peas のセットチェンジの合間に、どんどん前に進んでかなり前の方へ。柵があってそれよりは近づけないところまで。
そこより前には関係者らしい人がいるだけ。ステージまではほとんど障害物もないので、これはいいところをとったと思ったわけです。
しかし、Black Eyed Peas の開始が近くなると、隣接したテントからわらわらと人が出てきて、その空いたスペースに入ってくるのです。
ようするに、そこは OpenWorld の VIP 用の場所だったわけです。今期の JavaOne は OpenWorld との差別がいたるところにあったのですが、ここでもそうだったか!!
ところが、後で聞いたところによると、私も VIP 席にいけたかもしれなかったらしいのです。でも、そういう情報は事前には何にもくれないんですよね。後から聞いてもなぁ、というところです。
まぁ、それはそれでしかたないというわけで Black Eyed Peas です。
1 曲目からノリノリでしたね。いやあ、カッコいい。そして、will.i.am の独断場も用意されていてなかなかいいです。
でも、ちょっと残念だったのが Auto Tune を使いまくりだったこと。彼らはサルとゾウの時は Auto Tune を使わないでいたんですけど、END からは全面的に採用。その流れで今回も Auto Tune だらけということなんでしょう。
それにしても、Auto Tune ってこういうライブでも使えるんですね。知らなかった。
途中までは写真を撮っていても何もいわれなかったのですが、Black Eyed Peas のライブが中盤にさしかかった頃、急に写真をとるなと。
柵の一番前で一眼構えていると目立つのか、その後も写真も撮っていないのに、レンズを出しておくなと注意されてしまいました。
完全に目をつけられてしまったのが分ったので、そこからはおとなしくしてましたよ。
でも、VIP 席の人たちは写真やビデオ撮りまくり。そっちには全然おとがめナシというというのはなんかイヤですね。
とはいうものの、Black Eyed Peas だけでも 200 枚ぐらい写真撮っちゃいました。
帰りのシャトルバスはホテルによってルートがあり 1 番からずらっとバス停 (?) が並んでます。私は 12 番のバス。
ふと見ると、そこには LIMOS と書かれたところが。なんのことはないリムジンがずらっと並んでいました。たぶん、VIP の人たち用なんでしょうね。
さて、帰りのバスは大変。シャトルバスで大渋滞。トレジャーアイランドは小さい島なんですけど、島を出るまで 40 分ぐらいかかってしまいました。バスにはすぐ乗れたのでいいのですが...
トレジャーアイランドを抜けたらホテルまでは 10 分もかからずにホテルに到着。バスから見た Harvest Moon はキレイでしたよ。
0 件のコメント:
コメントを投稿