まずは国内企業におけるHaskellの事例をみていく。

 Haskellは、多くの関数型プログラミング言語の中でも、関数型らしい特徴を最も豊富に備えており、関数型プログラミング言語の王道とも呼べる言語だ(表1)。関数型プログラミング言語の研究者らが中心となって言語仕様などをメインテナンスしている。

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

 「Haskellなど全く知らなかった10人のSEが一から勉強を始め、金融機関が求める水準の高品質なパッケージソフトをつくり上げることができた」。新日鉄住金ソリューションズの内田康夫金融ソリューション事業本部シニア・マネジャーは胸を張る。

 同社は金融機関向けの時価会計パッケージ製品「BancMeasure」をHaskellで開発した。HaskellではJavaなどと比べて短い記述が可能なため比較は難しいが、コード行数は約2万3000ステップである。プロジェクト発足時にはJavaのスキルしか持たなかった同社の10人の開発人員が、Haskellの習得期間を含めて約6カ月で製品を完成させた。企業会計基準委員会から、銀行が保有する金融商品のすべてを時価会計で計算する改正指針が出たことを受け、急スピードで開発した。現在、25社を超える金融機関がBancMeasureを用いて金融商品の時価を算出し、決算資料を作成している。

 新日鉄住金ソリューションズがHaskellを採用したのは、ソフトの品質を最重要視したからである。財務諸表の基になる金額の算出に使う会計パッケージにバグがあれば、有価証券報告書などの訂正にもつながる。計算誤りなどのバグは許容できない。そうした厳しい品質要件を達成するため、コンパイラのチェック機能が強力な関数型プログラミング言語に目を付けた。「本音を言えば形式手法の一種である『定理証明』を使って、仕様と実装に乖離がないことを論理的に証明しながら開発したかった」(内田氏)という。

 ただし、定理証明は支援ツールは存在しているものの、自動化できるようなものではなく、使い手に高度なスキルが必要だ。「現段階ではさすがに定理証明はハードルが高くあきらめたが、関数型プログラミング言語は形式手法と相性が良い。将来、段階的に定理証明を導入することも想定して言語を選定した」(内田氏)。

 Haskellを用いることで、実装工程の生産性の高さも実感できた。HaskellはJavaと比べてコードを約5分の1にでき、些末な記述をせずに済むため、コーディング時の効率も高い。コードが短くなることで、コードの見通しが良くなり、保守性も高められる。