kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

JavaOne Tokyo 2012 JVM言語BoF #jt12_b101に参加してきました

早い話が、ScalaJP(Scala)、日本JRubyユーザ会(JRuby)、JGGUG(Groovy)のJVM上で動作する言語処理系のコミュニティが集まって、バトルするという趣旨のBOFでした。勝敗は、BOF終了時点までに、Twitter上に、

  • #jt12_b101 #scala
  • #jt12_b101 #groovy
  • #jt12_b101 #jruby

の三つの組み合わせのうちどれが一番多く流れたかを競うものですが、一人あたりの投票制限などは一切無しです。どちらかというと、言語自体の優劣を競うというよりどれだけ聴衆に言語(コミュニティ)の面白さ・便利さをアピールできるかを競うイベントだったように思います。

私もScala紹介のために少し 発表しましたが、添え物みたいなものです。はっきり言って、このBOFの醍醐味はコーディング大会とLTにあったと言えると思います。

コーディング大会では、各コミュニティごとに、それぞれの言語「らしい」やり方で問題を解いていて面白かったです。ベンチマークでわかった事ですが、Groovy++が予想以上に高速な事に驚きました。また、JRubyもinvokedynamicを効果的に活用する事で大幅に高速化できる事を知る事ができたのは非常に有意義でした。Groovyのgradleは、ビルドシステムとして完成度が高そうで、最近とんどGroovyに縁が無い私でも一度試してみたくなりました。

コーディング大会から派生したパネルディスカッションでは各言語のDISり合い(必ずしも本気ではない)が始まり、お祭り騒ぎのようで、非常にノリノリで楽しめました。コーディング大会については、ScalaJP側からは多忙な中、 @gakuzzzz (以下敬称略)にお願いしてコーディング大会に参戦してもらいました。おかげさまでイベントが非常に盛り上がったと思います。

LTについては、ScalaJP側からは、@yuroyoro, @halcat0x15aが発表してくれました。どちらの発表も面白かったですが、特に、@yuroyoro の、音声認識エンジンを使って自動的にtweetするネタは非常に意表を突かれました。@halcat0x15a のScalaで型レベルペアノ数は、ネタをわかる人の絶対数が少ないのとLTという時間枠では若干厳しかったかもしれませんが、Scalaではこんな面白い事もできるアピールにはなったのではないかと思います。

JRubyとGroovyについても言及しておくと、言語自体の好みはともかくとして、周辺環境(標準ライブラリ等)がScalaに比べると成熟しているなあという印象を受けました。Scalaは標準ライブラリがまだイマイチ弱いので、正直その辺りはうらやましいです。

ともあれ、非常に楽しいイベントでした。このBOFを企画してくださった皆さん、聴衆の皆さん、どうもありがとうございます。

ちなみに、ベンチマーク大会でGroovy++がScalaよりも高速になっていましたが、コードを解析・逆アセンブルなどしてみたところ、Scala版のコードは特に遅くなりそうなコードになってはいませんでした。ひょっとしたら、Groovy++版との細かいアルゴリズムの違いが影響したのかもしれません(Scala版はLLRBで、Groovyはlazy RB)。この辺り、時間があったらGroovy++版のコードをScalaにそのままポーティングして比較してみたいところですね。