PR

Haskellを使うだけでは品質も生産性も上がらない

 11月号の特集ではOCamlだけでなくHaskellも取り上げています。NTTデータでHaskellを使ったサービス開発を推進している岡田譲二氏に、現場での開発経験に基づいた解説をお願いしました(ITproの参考記事「『Haskellは企業でも十分実用になる』、NTTデータがソースコード解析サービスの舞台裏を披露」)。

 一般に、Haskellのメリットとして「コードの品質が上がる」「開発における生産性が上がる」という点が挙げられることがあります。しかし、岡田氏は「Haskellを単に導入しただけでは品質も生産性も上がることはない」と指摘します。Haskellの特徴を生かすように工夫しなければ、宝の持ち腐れになってしまうのです。

 そのため、NTTデータでは独自に定義したコーディング規約や夕会でのコードレビューといった工夫をしています。例えばコーディング規約には「if文、case文の使用禁止。パターンマッチもしくはガードを利用する」「do構文の使用禁止」といったことが定められています。

 実際にはHaskellでも手続き型プログラミングのような書き方は可能です。しかし、そうした書き方ではHaskellのメリットは生かせません。そこでこうしたコーディング規約によって、きちんと関数型のメリットが生かせるようなプログラミングができるようにしているのです。

 Scalaによるソフトウエア開発事例が徐々に出てきていることから、関数型プログラミングに興味を持つ企業も増えているでしょう。しかし、ScalaもHaskellと同様に、導入するだけで品質や生産性が自動的に上がることはありません。NTTデータの事例は、関数型プログラミングの導入を真剣に検討している企業にとって、とても大きなヒントになると思います。

■変更履歴
記事公開時、本文3ページ目で「Scalaはオブジェクト指向言語であるJavaで実装された関数型言語です。」としていましたが、正しくは「Scalaはオブジェクト指向言語であるJavaの仮想マシンで動作するように実装された関数型言語です。」です。お詫びして訂正します。本文は修正済みです。[2014/09/26 15:30]