yukungのブログ

yukungの技術ブログ兼駄文置き場 

渋谷 JVM に行ってきた #渋谷JVM

d-cube.connpass.com

JVM そのものではなく、JVM の上で動く言語についての会でした。申し込み人数が100人超えしていたけど、最終的には90人くらいに落ち着いてた。

出かける直前にサーバのアラートが来ちゃって*1、なんだかんだバタバタしてしまい10分くらい遅れて到着したけど、セッション自体はまだ始まってなかったのでセーフ。

まとめはこの辺

togetter.com

とか、

とか。shigemk2 さんの記事は素晴らしくまとまっているので、詳細な内容はそちらでどうぞ。


Scala セッション(@takezoen さん)

竹添さんの言語遍歴と Scala に出会ってからのお話。Java 以外にも LispHaskellClojure といろいろ変遷があって、人に歴史ありだなーと勝手に思ってました。会社入って早い段階でポール・グレアムの本を読んでいたとか、当時の自分は存在も知らなかったしすごいなーと思いつつ。2011年〜2012年辺りの Java の停滞感と、当時の ScalaJava にはなかった熱気が、竹添さんを Scala に誘ったといった辺りも、なるほどなぁと思いながら聞いてました。途中、Java の停滞期の話をしている途中で竹添さんの PC から Java アップデートのお知らせが来てスライドが中断するという奇跡が起こって会場が盛り上がってたw

Scalaコンパイル遅いとかもはやネタのように話されていたけど、全体的に関数型にこだわりすぎず、手続き型としても書けるしバランスの良い言語、という感じのトーンで話されていたのが印象的だった。Java の資産を有効活用できるのも魅力という点は、GitBucket は JGit や Apache MINA がなかったら作らなかったと話されていた点からも納得できるところ。

あとこれからの Scalaコンパイル速度とバイナリ互換性を解決するのに新しいコンパイラが開発されているそうだけど、やり方が余計に遅くなりそうなやり方なので、夏あたりの Scala Days でのアルファリリースを見てから、ということだそう。

Clojure セッション(@kawasima さん)

セッション中に川島さんもポール・グレアムの本を読んだと言っていたので、関数型言語に手を出すきっかけになりやすい本なのかなーと思ったりした。

ClojureLisp という面が強調されることが多いけど、川島さん曰く conceptual なところが面白いということだった。具体的には Clojure における Simple という考え方で、複雑なものではなく、シンプルなもので構成するという思想が言語に表現されているとのこと。複雑さの元は組合せであり、シンプルなもので Easy を実現するという考え方を、Clojure 設計者の Rich Hickey が提唱しているそう。"Simple made easy" でググるとそのプレゼンテーションが transcript 付きで読めるそうなので、後で読む。

そしてすべてが immutable で表現されていて、コレクションにも破壊的な操作は出来ないようになっているそう。Sharing Structure という概念で、返るコレクションは新しいものが返るけど、変更のないデータはそのまま共有されて省メモリになるような工夫がされているという話や、不変で同一なものを指す Identity / ある時点の Identity と結びついた Value の集合である State / 不変で永続的なデータ構造 Value / の3つで表現される Epochal time model の話、追記専用のデータベースとして最近ちょくちょく名前を聞く Datomic も、この辺りの Clojure 由来の思想とデータモデルが特徴を持っていて、聞いててなるほどなーと思いました。

他にも Clojure で特徴的な話として、

  • core.async というライブラリの2つの concurrency モデルの話
    • thread-based
    • coroutine-based
  • これらの非同期処理を言語仕様に手を入れることなくマクロだけで実装されていること

など、興味深い話が多かった。

あと、Clojure は取っ付きづらいイメージを勝手に持っていたけど、例えば Web 開発においては実は Ruby と同じようなアーキテクチャスタックだ、という話はイメージを変えるには十分で、これなら触ってみようかな、と思えるかも。

最後の Excel 芸の話は、懇親会でも別の Excel 芸の話で盛り上がってて秀逸でした。川島さんの凄いところは、こういうことをネタだけに終わらずに実用性のあるソフトウェアを実際に書いてリリースしているところで、この姿勢とその着眼点は見習いたいなぁと思うことしきりでした。ホントに勉強になります。

Groovy セッション(@uehaj さん)

JGGUG でおなじみの上原さんの Groovy のお話。会場でも Groovy を使ったことがある人は半分くらい手が上がっていて、自分が思ってたよりも多かった。Gradle が普及してきたのが大きいのかもしれないですね。

個人的に今回の JVM 言語の中では、立ち位置が難しいというか、Java8 が出た分特色が出にくい言語になってしまったかと思っていたけど、上原さんのお話は Java に寄り添う Groovy そのものと同じように、そっと寄り添うような語り口で話されていたのが印象的だった。まとめで言われていた通り、Java 開発者の能力を高めるツールである、というのが Groovy の立ち位置で、Groovy そのものが他の言語のように優れている面を持っている必要はなくて、Java 開発者にとって素直に理解できればそれでいいということ、それはこれからも変わらないと。そして、その中で特に Groovy を「DSL を表現する言語としての側面が特徴である」ということが強調されていたセッションだった。

それは、Spock や Gradle、Grails や Geb といった G* なプロダクトやライブラリも、それぞれの問題領域の DSL と言い換えることができることや、

といった特徴からも表れていて、特に動的型付けという特徴は、本質的に動的な対象についての DSL モデリングに自然に寄与しているということだった。そしてなぜ DSL なのかという問いには、ドメインモデルの表現を既存言語の文法や実装都合の制約にとらわれず、あるべき記法を追求するという、よりよいドメインモデルを探求するために必要なものであると結んでいて、この話を聞いて普段 Groovy をよく使う私にとっても、Groovy に対して違った観点を浮き彫りにしてくれたという意味でいろいろな気付きをもらったセッションだった。

Java セッション(@kis さん)

きしださんの Java 復活話とラムダの中身の話、Project Valhalla の話。

  • Value Types
  • Specialization

などなど。Project Valhalla の話はほとんど知らなかったので、どんなことをやろうとしているのか、それによって何ができるようになるのかといったところが大まかにでも掴むことができた。もう少し具体的になってくるともっと面白くなるかもしれない。個人的な状況としては、当面は Java8 使い込むところかなー。

パネルディスカッション&懇親会LT

ぶつかり合いというよりはそれぞれの言語の立場からの大人な意見という感じで、立場が浮き彫りになってた感じ。他の言語に負けないところという質問に対して竹添さんがコンパイル時間の長さと言っていたのは笑いをこらえられなかったw

懇親会も結構最後までダラダラLTをしながら楽しく酒飲みつつコミュニケーション取れて大変楽しかったです。登壇者の方々、運営の方々、お話してくれた方々、ありがとうございました。

*1:それまでまったくアラート出したことなかったおとなしい子だったのに、この日から長めの連休に入るとなった瞬間機嫌を損ねるとかね…