Scala Conference in Japan 2013に参加しました

2月28日(土)に開催されたScala Conference in Japan 2013に参加させていただきました。前日も終電帰りでしたが気合いで朝一のセッションから参加しました(開幕には間に合いませんでしたが…)。

「Up up and Out: Scaling Software with Akka」

TypesafeのJonasさんによるAkkaの概要的なセッションでした。
Akkaの基本的な使い方からRouterやSupervisorといった重要なコンポーネントの説明、アクターを使用したアプリケーションを設計する際の注意点(危険なタスクは死んでもいい末端のアクターでやらせる、防御的なプログラミングではなくクラッシュしてからリカバる)など、このセッションでAkkaに興味を持たれた方が多かったのではないでしょうか。

「Akka を用いたデータストリーム処理・解析プラットフォーム」

サイバーエージェントさんのセッション。前のJonasさんのセッションでAkkaに興味を持った方が多かったせいか立ち見が出るほどの人だかりでした。
リアルタイムなログ解析にAkkaを使いましたという話。Hadoopによるバッチ処理だと遅延が発生するので、Akkaでリアルタイムで処理。防御的なプログラミングではなく死んだら捨てればいいという考え方は(細かい信頼性を求められないという意味で?)大規模なログ解析に向いているとのこと。 Scala APIではなくJava APIを使っているらしいのですが、Scala APIでできることがJava APIではできなかったりするそうで、フィードバックして改善してもらっているとのことです。
お仕事のひとつでここ数年JavaのJMS実装の内部を見ているのですが、スレッドを使った非同期処理の実装の難しさを痛いほど感じているので、こういうものをアクターモデルで実装できないかなと思っています。ただ、JMSはもうスピード勝負みたいになってて各実装ともスレッドモデルでかなり最適化されているので単体の性能では厳しいかもしれませんね。単体のレイテンシをスケールアウトでカバーできるような用途がAkkaに向いているのではないかと思います。

「BRMS開発でのScala利用事例」

三菱UFJインフォメーションテクノロジーさんの土佐さんのセッション。BRMSをScalaで作っているそうです。
どちらかというとBIWORDというBRMSの紹介がメインで、Scalaを使ってよかった点としては再帰が書きやすいという点を挙げておられました。やはりScalaを標準の開発言語として採用するのは難しい、一部の優秀なプログラマScalaを使って開発した部品をJavaから呼び出すような使い方がよいのではないかとのことでした。既存のBRMSとBIWORDの違いをわかりやすく説明されており、Scalaというよりその部分が興味深かったです。

「LT大会」

お弁当を食べながらだったのでメモを取っていなかったので記憶で書いています。順番はうろ覚えです。1人10分と持ち時間が長かったのであまりLTという感じではなかったですね。ドラも二回しか鳴りませんでしたし。

  • Xitrumの作者であるゴックさん。前にブログでXitrumの紹介をしたときにコメントを貰ったことがあったので生でお話を聞けてよかったです。jEditを使っているのがビビりました。
  • 個人スポンサーの丸岡さん。Last One Mileは自分で埋めようというのは同意。Scalaって実際に使おうとするとまだまだ足りないものが多いですが、そこは自分で埋めればよいと思います。無いものは作ればいいです。幸いにしてJavaの資産は使いまわせるので他の言語と比べればだいぶ下駄を履いている状態なわけですし。
  • 横田さんは愛とか電波がすごかったですがw 仰る通りだと思います。昔はOSSの精神みたいなことでこういう話を聞くことが多かったのですが、最近はGithubで代弁されている感じがします。OSS=Githubというか。GithubOSSの精神を体現するというか促進するサービスということなのではないかと思います。
  • システムアートの益子さん。日本語DSLはスペースを入れるためにわかち書きの処理を入れているというのはなるほどと思いました。スライドの字が読めないくらい小さかったのが斬新でした。
  • クリスさんのアスキーアートジェネレータ。小田好先生がウケました。Hello Worldの次がこれというのはすごいですね。AWTを使って画像処理(画像をボックスに分割して色と濃度を解析)しているそうです。

「Coding in Style」

TypesafeのJoshuaさんのセッション。Scalaでコードを書く上でのお作法を話しつつ、Scala 2.10ではこう書けるようになる、という紹介をされていました。最後にScala 2.11についても触れられていました。
個人的にはScala 2.10の新機能や2.11の方針などはすでに把握していたので新鮮味はありませんでしたが、お話されていた中で「なにをするのか」と「どうやるか」を分離する、という格言にはハッとさせられました。わすれがちなことですが、APIを設計する際には常に意識するようにしたいです。
Scala 2.11では新機能の追加ではなくFaster、Smaller、Stablerがゴールということなので、現在感じているScalaの問題点のいくつかが解決されるのではないかと期待しています。
ちなみにJoshuaさんにはSBT in Actionがいつ出るのかを聞きたかったのですが、すっかりわすれていたので家に帰ってからドキドキしながらTwitterにメンション投げてみました。一度はお返事をいただけたのですが、SBT in Actionの出版時期については教えていただけませんでした(ちょっと失礼だったかも…)。

「エレガントなデータベース操作を実現するScala ActiveRecordのすすめ」

ASEの吉野谷さんのセッション。SquerylをラップしてActiveRecord風に使えるようにしたScala ActiveRecordというORMの紹介でした。
個人的にはSQLDSLってどこまで行ってもそれだけではシステムは作れない(必ずネイティブSQLが必要になるケースがある)と思っています。現状のScalaベースのORMだとネイティブSQLはサポートしていても、動的なネイティブSQLをサポートしているものは皆無なので、DSLの使い勝手よりもそちらのほうが課題だと思っています。
で、これって実はJavaでも似たような感じで、海外製のJavaベースのメジャーなORMで動的なネイティブSQLをサポートしてるのって実はMyBatisくらいなんですよね。海外ではあまり需要がないのかな?まあ日本固有のニーズだとすれば、それこそ独自に頑張るならそういう部分なんじゃないかなと思います。
ActiveRecordだと当たり前のことなのかもしれませんが、モデルにメソッドを定義したり、トリガみたいなことができるのは面白いなと思いました。

オブジェクト指向から視る "Better Java" としての Scala

望月さんのセッション。「オブジェクト指向言語としてのScala」という当たり前のようだけどあまり取り上げられることのない切り口でトレイト、自分型アノテーション、abstractオーバーライドという3つのScalaならではの機能を紹介されていました。
じっくりお聞きしたかったのですが、次が自分のセッションなのでスライドの調整をしたりしていてあまり集中して聞けなかったのが残念でした。

「使ってわかったScalaのここがダメ!Play2によるシステム開発事例」

自分のセッション。Scala、Play2のdisでしたが、まあ、内容的にはどこでも言われているような話だったかと思います。
言いたかったのは個々の問題点ではなく、以下の二点です。

  • Scalaは充分に実用的な言語ですが、Javaと同じ感覚で使うと痛い目を見ることもあるので注意して欲しいということ(一度でも失敗例が出て悪いイメージが定着してしまうとそれを払拭するのは大変なので…)
  • Scalaは周辺ツールフレームワークも含めてまだいろいろと問題もあるけど、むしろだからこそ今はScalaの成長に貢献できる絶好のタイミングでもあるということ

それと、開発環境はIntelliJを使うといいと思いますw
スライドについては話す用に順番を入れ替えたり、省略している部分があったりするので少し手直ししてから公開しようと思います。少々お待ちください。

「Play Framework - The modern web framework that packs a punch」

TypesafeのJamesさんのセッション。Playのライブコーディングでしたが、完全にIntelliJの凄さを見せつけるセッションになっていました。
ていうかTypesafeの人なのにScalaIDE使わなくていいんですかw
コードテンプレートを準備されていたのだと思いますが、スニペットを駆使してもの凄いスピードでコーディングしていきます。一日いろいろとセッションを聞いてそろそろ疲れてくる頃、リラックスして楽しめるセッションでした。

まとめ

運営がとても素晴らしかったです。入念に準備されていたのがわかりました。また、セッションの順番(特にTypesafeの方々のセッションの配置)もよかったんじゃないかと思います。
客層は判断の難しいところですが、当初はScalaに興味のある人、Scalaの導入を考えている人向けのイベントと捉えていましたが、有料のセッションに自腹で参加されているということを考えると、すでにある程度Scalaにコミットしている方が多いのは自然なことではないかと思います。Scalaの現状を考えても、あまりターゲットを決め打ちせずに「日本でのScalaの祭典」というスタンスでもいいのかなと思いました。
ともあれ、こういうイベントでの参加は久しぶりでしたし、ここ数か月仕事で忙殺されていたのでいい気分転換になりました。水島さんをはじめスタッフの皆様、お疲れ様でした!!