Appresso Engineer Blog

アプレッソのエンジニアが書く技術ブログです。

JavaOne 2015 5 日目 - Java をつくり、使っているひとたち

こんにちは、アプレッソ開発部の野口です。

色々ありましたが、どうにか無事に JavaOne の最終日を迎えることができました。

前日(4 日目)のレポートはこちらです。

appresso.hatenablog.com

最終日まで充実した JavaOne になりました!

参加したセッションは以下の 3 つ。

  • Java Community Keynote
  • Java Everywhere Again—with DukeScript
  • The Rise of 1.0: How Reactive Streams and Akka Streams Change the JVM Ecosystem

それから、

  • 蟹One

です!

Java Community Keynote

最終日最初のセッションは、Java Community Keynote。

と、実はこの前にも参加したいセッションがあったのですが、割とギリギリに起きてしまった&バスがなかなかこず、到着した時には例の「10 分前ルール」で会場は満員でした。無念。

ただ、幸いにも動画配信があるようなので、後日見てみようと思います。他にも見逃したものがこれでだいぶ補えそうで嬉しいです。

community.oracle.com

なお、動画配信があるならわざわざ何十万もかけてアメリカまで行かなくていいのではみたいな考え方もあると思いますが、参加してみて、そんなことはないと感じます。
後日まとめ記事を書くときにその辺の話もできたらいいかなと思っています。

IBM

さて、Community Keynote は IBM のプレゼンテーションから始まりました。

たぶん例年そうなのだと思いますが、初参加者としては、あ、そういう流れなんだ……という感じで、会場の温度もちょっと低めです。
会場が横に広く、中心の方はそこそこ盛り上がっていたのですが、端はそうでもなくて、温度にムラがあります。

序盤は IBM が考える現在と未来を語る内容で、これまでずっと具体的な話ばかり聞いてきたので、何となく抽象的で自分から遠い話のように感じてしまいます。(実際はそんなこともないのですが!)
だんだん bluemix や IBM の JDK / JVM、Apache Spark や Node.js と Microservices といったコードに近い話に移行してきて、面白くなってきました。

f:id:enk_enk:20151029122436j:plain ▲bluemix の話

というふうに盛り上がってきたところで、終了。

Null Pointers

セッションの開始前にもやっていた Null Pointers が再び登場します。
先日も出ていた @itohiro73 さんも出ていました。しかし今回は聴衆が段違いに多い!

The Beatles の Come Together をやっていました。

Community Keynote

そして待望の Community Keynote です。

Stephen Chin が登場した途端に会場の温度が上がり、人気の高さを感じます。
結果的にこの Community Keynote はまさにコミュニティが感じられる温かい雰囲気のもので、とても面白くて、これの前に出てくる IBM の人も大変だな……と思いました。

大きな流れとしては、赤いタイムマシンが用意されていて、Stephen がそこへ入っていろいろな年代にタイムスリップしながら Java と Java Community の歴史を掘り起こしていく、みたいな内容です。

f:id:enk_enk:20151029130029j:plain ▲2035 年のサンフランシスコ。Duke が暴れている……!

いろいろな人を連れてきてとにかく寸劇、寸劇の連続で、しょうもないけど面白い。

f:id:enk_enk:20151029130558j:plain ▲2009 年のパリ。フランスだからフランスパンを持って出てくるという雑な演出

f:id:enk_enk:20151029133519j:plain ▲James Gosling も登場します。初の生 Gosling 氏。

会場をさんざん笑わせたあとは、未来とは子どもたちのことだよ、というメッセージで終了。

f:id:enk_enk:20151029134417j:plain ▲JavaOne4Kids の様子

f:id:enk_enk:20151029134504j:plain ▲少年の堂々たるプレゼン

f:id:enk_enk:20151029134951j:plain ▲今年は Java 20 周年。そして 2035 年ってほんの 20 年後なのか……。

Java はただ 130 億のデバイスで動作しているだけじゃなくて、当たり前だけど、それを日々使って、考えて、改善している人たちが世界中にいるんだな、ということが感じられるようなセッションでした。

技術的に新しい発見があるわけではなかったですが、このセッションで JavaOne に参加してよかったと感じる度合いはだいぶ上昇しました。

Java Everywhere Again—with DukeScript

もともと違うセッションに出ようと思っていたのですが*1、ふと思い立って昨日の RIA のセッションでチラッと耳にした DukeScript のセッションに来てみました。

ところ、ハンズオン形式のセッションでした。
英語のハンズオン、初めてです。

f:id:enk_enk:20151029142518j:plain ▲まごうかたなきハンズオンです

でも、ハンズオンってひっかかっている人に合わせながらゆっくり進むから、かえってついていきやすいですね。

DukeScript は Model を Java、View を HTML5 + CSS で定義してバインディングは Java コードへのアノテーションを通して行うことができる、という仕組みです。
Knockout によるバインディングを自動的に生成するため、JavaScript を書かずにクロスプラットフォームな GUI アプリケーションを作成することができます。

生成されるものの実体は HTML5 + JavaScript なので、Java が動作する環境では JavaFX WebView、iOS では RoboVM、Android では Dalvik、そしてもちろんブラウザではブラウザ自体のレンダリングエンジンを使用して動作します。

以下の URL から入門用の PDF / LeanPub を入手できます。

結果的には、今求めているものとはちょっと違うかな、と判断して、1 時間くらいで退出しました。
先日も紹介したように DataSpider Studio for Web の Sliverlight からの移行を検討しているのですが、別に Java で書ければそれでいいわけではなく、リッチなコンポーネントをいかに高速に動作させるか、というところが大きな課題なので……。

結局凝ったことをしようとすると JavaScript を書くことになりそうですし、Knockout の特性も把握する必要がありそうですし。
でも、そういうのもありか、と視野を広げることができました。

The Rise of 1.0: How Reactive Streams and Akka Streams Change the JVM Ecosystem

Typesafe の Konrad Malawski によるセッション。

JDK 9 に Reactive Streams が入る可能性があるということで、結構目玉に近いのでは? と個人的には思うのですが、着席率は 40% くらいでイマイチ盛り上がってない感が……。

概要

まずは Reactive Streams の歴史の解説から始まります。

  • .NET 3.5 で Reactive Extensions。初期のFRP。
  • 〜2013 年、Play、Akka、RxJava が続々と登場し、JVM 界隈で RP が受け入れられていく。
  • 2013 年 10 月に、Akka や Twitter の人によって Reactive Streams の Expert Group が発足した。Oracle の Doug Lea も参加する。
  • 2014年〜、Reactive Streams の仕様が策定され、 2015 年 4 月に 1.0 がリリース。また、Doug Lea によって JDK 9 に含めることが提案される。 (JEP-266 : "More Concurrency Updates")

The Reactive Streams Protocol

続いて、Reactive Streams とは何かについて具体的な解説が行われました。

ごく簡単に言うと、一種の非同期通信の仕組みで、Publisher と Subscriber がいるとき、データの流量制御のために(Subscriber 側のバッファが溢れないように)、Subscriber が処理可能な量を Publisher に通知し、Publisher は通知された量だけを送信する、というものです。

そういった仕組みのライブラリとして RxJava、Akka、Ratpack 等々様々な実装があるのですが、Reactive Streams の眼目は、それらを相互接続できるようにするための SPI(Service Provider Interface)ということのようです。

相互運用できるというのも大きいですが、やはり JDK の標準に入るというのが普及への力としてとても大きいと思います。

Akka Streams と Akka Http

その後は具体例として Akka Streams と Akka Http の解説が行われたのですが、こちらはほとんど理解できませんでした。
Scala 力、英語力、Reactive Streams の理解力すべてが不足しています……。

最後に、実際に JDK 9 に入るのかどうか……という話はほとんどありませんでしたが、可能性はまだあるようです。
今後の動向に注目ですね。

蟹One!

ついに JavaOne も最終日、のセッションもすべてが終わりました。
長かったようで、短かった。

f:id:enk_enk:20151029184814j:plain ▲太平洋が見えます

最終日は、蟹を食べます。
日本人参加者のうち、じつに約 30 人が集まりました。そんなにいたのか……。

f:id:enk_enk:20151029201459j:plain ▲蟹!

手がとんでもなく油まみれになりました。
しかし、うまかった。あと、でかかった。蟹に詳しいさくらばさんによると、今年のは時期の関係で特に大きかったそうです。

参加者の方々とも交流して情報交換をすることができました。
最終日にして初めてまともに日本語を話して、最初はすごく違和感がありました。笑

主催してくださったサムライズムの山本さん(@yusuke)、Microsoft の(!)てらださん(@teradayoshio)、および日本オラクルのみなさま、また参加者の皆さまありがとうございました。

後日まとめます

初めての JavaOne(かつ初めての海外)は想像していた以上に充実した日々になったと思います。
飛行機代、ホテル代、そしてもちろん参加費とお金はかなりかかりますが、Java を本気でやっている開発者なら一度は参加した方がいいイベントだと言えます。

……という話をしだすとまた長くなるので、後日改めてまとめ記事を書きます!

*1:メモリモデルのセッションとか! でも、動画配信であとから見られるようなので一安心です