谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

俺様とJavaOne 2013(後編)

いよいよJavaOne最終日です。
最終日はCommunity Keynoteと、いくつかのセッションを行なうだけで
夕方ぐらいには閉幕してしまいます。

Day 5 : 子供のプログラミング、どうしていますか?

Community Keynote

最終日、最初のセッションはコミュニティキーノート、
かつては、Gosling's Toy Showなどが行なわれていたイベントですね。
このキーノートで日本の皆さんにお伝えしたい事は、ただ一つ。


#てらだよしお が、Tシャツを投げていました!


あぁ、写真とか撮ってないです、すみません。
たぶん誰か撮ってます、そっちに期待してください。


私の席からは見えませんでしたが、James GoslingもTシャツを投げていたそうなので
この瞬間、てらだよしおはJames Goslingに匹敵するエンジニアだった、ということですね!


それはさておき、
このコミュニティキーノートで一番印象に残ったのは、教育の話です。
10〜14歳の子供を対象にしたDevoxx 4 kidsというイベントの様子が紹介され、
子供が「やった、動いた!」などと言いながら、プログラミングを楽しんでいました。


また、会場にはArun Guptaの10歳の息子、Aditya Guptaが登場して、
Minecraftというゲームをハックした時の考え方などを紹介しました。
「これはEclipseという開発環境で」「左側のソースファイルの一覧があって」などと
10歳の子供が説明するだけで会場は大盛り上がりなのですが、
恐らく、彼自身はなぜ会場が盛り上がっているのか分からなかったに違いありませんw


10歳の子供が、数千人(?)の大人を相手に、
大して緊張する様子もなく、声を震わすこともなく、説明しきった様子は圧巻でした。
会場のスタンディングオベーションも、決して過大評価ではなかったと思います。
本当に素晴らしかったです。


Devoxx 4 kidsの動画や、Aditya Guptaの発表を見るにつけ、
同世代の子供を持つ親としては、そろそろ子供に楽しいプログラミングを
教えてもいいかな、という気持ちになってきましたね。


私自身、プログラミングを始めたのは、この年代だったと記憶しています。
一つの素養として身につけるには、決して早くない時期でしょう。


今度、科学未来館に行って、プログラミングできるおもちゃを買ってくるかな。

[CON4695] Java Memory Hogs

OracleのNathan Reynoldsによるセッション。
Keynoteが終われば帰る人も多い中、部屋は満席で立ち見が出るほどでした。
やっぱりメモリ系やGC系セッションは人気があります。


本当はこの前にいくつかのセッションを入れていたのですが、
Community Keynoteの後にJames Goslingとの記念写真撮影に並んでいるうちに
予約していたセッションが満席になってしまったり、
ランチで少し遠目に出ているうちに逃してしまったりなどして、
最終日のセッションはこれ一本になりました。てへぺろ


さて、
このセッションのテーマはJOverflowを使ったヒープメモリの診断です。
というかJOverflowって、ただのヒープダンプを解析できるだけではなくて、
無駄なヒープの使い方を指摘する機能まであるんですね。いいですねこれ。


このセッションでは、実際のJavaEEアプリケーションのヒープダンプを取り、
それをJOverflowで診断して検出した問題について、改善方法や結果が示されました。


たとえば英数字しか入らないStringをcharではなくbyteで保持したら
7%ぐらいメモリ効率が上がったとか
同じ文字列のStringがたくさん重複していたからString.intern()で改善したとか
空の配列やCollectionがたくさんあったからLazy初期化するようにしたとか
そういう話です。


このセッションを通して感じたことは
「JOverflowは、ヒープダンプのFindBugs」だということですね。


たとえば空のCollectionがたくさんあるとか、
同じ文字列のStringの重複がたくさんあることなどは、
理論上は「減らせば良い」わけですが、Lazy初期化やinternを使った処理を書くとなると
パフォーマンスへの影響や、可読性の低下(処理の複雑化)は多少なりあるため
なかなか全ての場所で、理論通りにコーディングするわけにもいかないと思います。


その点、JOverflowを使い、実際に動かしたアプリケーションのヒープダンプを解析することで
「本当に問題になるところ」が分かるため、実際的に改善すべきポイントを掴めるわけです。
このアプローチ、まさにENdoSnipeと同じですね!(←これが言いたかったの?)


大事なことなのでもう一度言いますが、
「JOverflowは、ヒープダンプのFindBugs」です。
ぜひ試してみましょう。


JavaOne 2013最後のセッションでしたが、かなり面白い内容でした。

JavaOneを終えて、最後に。

そんなわけで、これでJavaOne 2013は終わりです。


今年のJavaOneで一番印象的だったことは、
もちろん私自身が初めてスピーカーを務めたことですが、それを除けば、
子供へのプログラミング教育の話でした。


同世代の子を持つ私としては、
Devoxx 4 kidや、10歳のAditya GuptaによるCommunity Keynote発表などは
非常に印象的でワクワクすると同時に、負けていられないという気持ちになりました。


一方で、Javaも転換期に来たのかな、という印象もありました。


少し話はそれますが、
先日、「教育」に関する有名ブロガーのつぶやきが話題になりました。
人が教育の話をしはじめるのは、自分の成長に限界が見えた時、
要するに「自分の成長よりも、後進の成長のほうが価値がある」と考えるようになった時だ、
というアレです。


この話も踏まえると、このJavaOneで「子供の教育」の話がなされるというのは
多くのJavaの開発者たちが、あるいは、Javaそのものが転換期に来た、
悪く言えば「焼きが回った」ところにさしかかったのかな、という印象になったわけです。
いや、たぶんに感覚的な話なんですけどね。


また、今回は新しい情報がほとんどないJavaOneでしたが、
個人的に(弊社的に)言えば、Flight RecorderやMission Controlの
裏側の仕組みや、今後目指すところを聞いたことで、
ENdoSnipeの開発も改めて頑張ろうという気になりました。


ENdoSnipeを、Duke's Choice Awardをとれるぐらいの秀逸なプロダクトにしたいなと、
そんな大きな野望を持ちながら帰国の途につきました。


よし、頑張ろう!