オブジェクト指向の関数型プログラミング言語「Scala」に関する、日本で初めての大規模なカンファレンス「Scala Conference in Japan 2013」が2013年3月2日、東京工業大学で開催された。

 当日はScalaの開発の中核を担う米Typesafe社から4人の招待講演があったほか、国内でのScalaの採用事例など数多くの発表があった。同イベントは有料制だったが、200人分のチケットは1週間ほどで売り切れるなど、国内におけるScalaへの期待の高さをうかがわせた。イベント当日も、セッションによっては立ち見になるほどの盛況ぶりだった。

 Scalaは2003年に生まれた比較的新しいオープンソースのプログラミング言語だ。コンパイル後はJava VMで動かせるため、Javaの既存資産をそのまま生かせるのが特徴だ。Scalaの考案者であるMartin Odersky氏らが創業したTypesafe社が商用サポートや言語開発の中核を担っている。Typesafe社は2012年8月にベンチャーキャピタルから1400万米ドル(当時のレートで約11億円)の資金をシリーズBで調達しており、現在その資金を基にしてIDEやさまざまなフレームワークの開発を進めている。

Erlang/OTPをお手本に設計されたAkka

 そのTypesafe社からは、Scala向けの分散並行処理フレームワーク「Akka」とWebフレームワーク「Play2」などについて発表があった。

写真1●Akkaについて講演したTypesafe社CTOのJonas Bonér氏<br>ちなみに、Akkaとは同氏の住むスウェーデンにある山の名前という。
写真1●Akkaについて講演したTypesafe社CTOのJonas Bonér氏
ちなみに、Akkaとは同氏の住むスウェーデンにある山の名前という。
[画像のクリックで拡大表示]

 Akkaについては、Typesafe社CTOであり、Akkaの開発者でもあるJonas Bonér氏が登壇し、Akkaの設計思想である「let it crash」などについて語った(写真1)。Akkaでは「アクター」を分散並行処理の基本単位にしている。

 アクターはScalaの標準ライブラリにも用意されているが、Akkaのアクターはそれとは別物であり、関数型プログラミング言語として長い歴史を持つ「Erlang/OTP」を参考にして新たに設計されたものだ。Akkaが掲げる「let it crash」という設計思想は、もともとこのErlang/OTPから来た( Bonér氏によるブログ記事)。

 「let it crash」はシステムの耐障害性の向上に役立つ。Erlang/OTPでは、複数のアクター同士をツリー構造状に連携させ、ツリーの根に近い上位のアクターが下位のアクターを監視する。あるアクターが落ちても、それを上位のアクターが検出し、アクターを再始動することで、システム全体としての耐障害性を向上させるアプローチである(関連記事)。他のプログラミング言語でもスクラッチでこうした構造を構築することは可能だが、Erlangのライブラリである「OTP」にはこうしたアクターの相互監視用の階層構造がデフォルトで備わっている。

 Akkaにも、このErlangのOTPと似たツリー構造の階層構造(Supervisor Hierarchies)がすべてのアクターに対しデフォルトで備わっている。監視用の階層構造は、ノードをまたいで設定することも可能である。