業務系ならJava、Web系ならRubyなどの軽量言語──。10年以上続いたプログラミング言語選定の常識が今、覆りつつある。Javaの10倍の生産性を持ち、Rubyなどより手軽に高品質で拡張性のあるアプリケーションを開発できる。そんな「関数型プログラミング言語」がついに実用期に入り、急速に普及し始めている。その実力を紹介しよう。
(進藤 智則)

「少数精鋭の開発メンバーで、短期間に新しい検索サービスを始められた」。特許情報などの無料検索サービスで200万人以上の会員を抱えるアスタミューゼ。同社でサービス開発を統括する三木隆史プラットフォーム事業部部長は、こう語る。スピードの秘密は、開発言語選びにあった。
同社が採用したのは、業務系システムの開発で主流になっているJavaでも、Webシステムで人気を博すRubyやPythonでもない。「関数型プログラミング言語」と呼ばれるオープンソースの開発言語の一つ、「Scala(スカラ)」だ。
Scalaは今、世界的な注目を集める。米ツイッターや米リンクトイン、英ガーディアンなど海外の名だたる企業が自社サービスの開発に採用したことで一気にその名を知らしめた。Scalaの推進企業である米タイプセーフは2012年8月に1400万米ドル(約11億円)の資金を調達。Webアプリケーションや分散処理システムに向けたフレームワークを拡充している。
三拍子そろった言語
冒頭のコメントが象徴するように、日本でも採用する企業が増えている。「最近は中国でも流行し始めている。一部の中国企業がScalaのスキルを持つ技術者の採用に乗り出している」(アスタミューゼの中国人技術者)という。
Scalaは2003年に生まれたプログラミング言語だ。そのScalaが2012年の今、注目を集めるのはなぜか。最大の理由は、JavaやRubyにはない三つの特徴を持つからだ。迅速に開発できる、バグを抑えやすい、アプリケーションの性能を向上させやすい、というものだ(図)。これらの特徴は、Scala以外の関数型プログラミング言語にも共通する。
開発スピードを上げられるのは、コードを短くできる仕組みを備えるからだ。一般に実装工程において、Javaの10倍の生産性と言われる。
コンパイラによるプログラムのチェック機能が豊富なため、軽量言語ほど大量の単体テストをこなす必要もない。バグを防ぐ仕組みを言語本体に備えているわけだ。
複数のCPUを使った並列処理に適したアプリケーションの開発にも向く。スピード、品質、拡張性と三拍子そろった言語なのだ。
これらの特徴を最も生かせる用途が、収益に直結する新しいサービスの開発だ。最近はトヨタ自動車やホンダなどのテレマティクスサービスのように、一般企業がソフトウエアを駆使して新規事業や新サービスを創作する、あるいは商品やサービスの付加価値を高める機運が高まっている。
新サービスは素早くリリースして機能変更を繰り返しながら、ニーズに応じてサービスを拡大・拡充していく必要がある。Scalaをはじめとする関数型プログラミング言語は、そうしたアジャイル開発にうってつけだ。
「言語選定が競争力に直結」
基幹系や業務系などの開発であればCOBOLやJavaなど定番の言語があり、改めて言語選定を見直す必然性は低いかもしれない。だが、稼ぐための新サービスの新規開発には、Scalaのような関数型プログラミング言語が向く。
「近い将来、言語の選定が企業の競争力に直結するようになる」。Javaやモデリングなどの技術に精通する匠Labの浅海智晴フェローは断言する。「自社の商品やサービスの競争力を高めるためにも、企業のシステム部門は関数型プログラミング言語を今すぐ研究するべきだ」(浅海フェロー)。
続きは日経コンピュータ9月27日号をお読み下さい。この号のご購入はバックナンバーをご利用ください。