特許や論文などの無料検索サービスや技術者向け転職支援サービスなどを手掛けるベンチャー企業のアスタミューゼは、自社サービスの開発言語をすべてScalaに統一している。約10万ステップのScalaコードを、わずか3人の自社エンジニアで約6カ月で開発した。現在は開発から運用まで5人でこなす。

 システムの開発に当たって同社が重視したのは「何よりもScalaの実用性」(同社でサービス開発を統括する三木隆史プラットフォーム事業部部長)だ。Scalaのコードはコンパイルすると、JavaVMの上で動かせる「クラス・ファイル」となる。開発段階では品質や生産性の向上が可能な関数型プログラミング言語を使いつつ、ソフトの実行環境については成熟したJava VMをそのまま使用できる(表1)。新しい言語に付きものである、実行環境の未熟さや不具合とは無縁だ。世の中にある膨大なJavaのライブラリーをそのまま利用できる利点もある。

表1●Scalaの特徴と利用事例
表1●Scalaの特徴と利用事例

 Scalaは言語仕様の面でも現実路線であり、関数型プログラミング以外の作法も認めている。同社はその点も評価した。例えば、関数型言語の王道とも言えるHaskellではバグを抑えやすくしようとの観点から、一度代入したデータ(変数)は再度変更できないようにする関数型特有の思想を厳格に貫いている。一方、Scalaは局所的には通常のプログラミング言語のような変数の値の更新を認める。「関数型に不慣れな技術者がチームに加わった際も、関数型ではない記述スタイルを含められる点で、Scalaであれば安心感がある。メンバーのスキルの向上に応じて、関数型プログラミング本来の記述スタイルを増やしていけばいい」(三木氏)。

 名古屋大学は学内にある約700台のスイッチの運用や設定、保守に使う管理ツール「NGMS」をScalaで開発した。関数型プログラミングを得意とするSIerのITプランニングがScalaの採用を提案した。発注側である名大大学院工学研究科の河口信夫教授が過去に関数型プログラミング言語を研究したことがあり、「関数型に全く抵抗がなかった」(同氏)ことも奏功し、採用に至った。

 他のSIerも含め6人の技術者が2万500ステップのコードを約6カ月で開発した。ITプランニングは「OCaml(オーキャムル)」という別の関数型プログラミング言語を得意とするが、NGMSではJavaの既存ライブラリーを使う必要があった。このため、同案件では既存資産との連携の容易さを考慮し、Scalaを選択した。