長崎県庁が、職員、会計、予算、税務など汎用機上の基幹系システムをLinuxサーバー上に移すダウンサイジングプロジェクトを進めている。利用しているのはOpenCOBOL。日本で生まれ、現在では国際的なコミュニティのもとで開発されている、オープンソースのCOBOLコンパイラだ。

日医の診療報酬システムで生まれたOpenCOBOL

 筆者がOpenCOBOLを知ったのは約10年前。診療報酬計算システム「日医標準レセプトソフト」の開発が始まったころだ。日医標準レセプトソフトは日本医師会によりORCAプロジェクトとして開発が進められ(関連記事)、2002年にオープンソースソフトウエア(OSS)として公開された。導入医療機関の数は、全国の病院と診療所の約10%、1万件に達している(関連記事)。OpenCOBOLは、日医標準レセプトソフトのために開発されたCOBOLコンパイラだ。

 日医標準レセプトソフトは、当時少数のベンダーによる寡占状態にあったレセプトシステム市場を変えるという目的のもと、OSSとして公開された。そのためミドルウエアもすべてOSSである必要があった。OSはLinux、データベース管理システムにPostgreSQL。OpenCOBOLトランザクション処理モニター(TPモニター)のMONTSUQIは日医標準レセプトソフトのために開発された。開発を担当したのはRubyの作者まつもとゆきひろ氏がフェローとして在籍するネットワーク応用通信研究所。OpenCOBOLを開発したのは当時同社に在籍していた西田圭介氏だ。MONTSUQIも当時同社に在籍していた現WASP 代表取締役の生越昌己氏である。

 日医標準レセプトソフトのリリース後、西田氏はOpenCOBOLの管理者を離れる。現在はドイツ在住のRoger While氏が管理者となっており、2007年12月にバージョン1.0が正式リリースされた。

JCLはPerlに変換、印刷はPDFに

 長崎県庁では、ITコスト削減などを目的に、汎用機システムのダウンサイジングを進めている。税務システムのダウンサイジングにあたって採用したのが、汎用機上のCOBOL資産をOpenCOBOLで動作させるという方法だった。

 職員、会計、予算のシステムを合わせると約1万5000本、500万ステップのプログラムがある。これを他の言語で書き直すことは現実的ではない。UNIXなどのオープンシステム上で動くCOBOLはほかにもあるが、長崎県ではコストや、何より特定のベンダーに依存しないことを重視して、オープンソースソフトウエアを積極的に採用している。すでに実績のあるOpenCOBOLが有力な候補となった。

 足りない機能は作成した。発見したバグは修正しOpenCOBOLコミュニティに提供している。それでも「利用料を払い続ける必要はなく、仮にベンダーがいなくなったとしても開発やバグ修正を行うことができる」(長崎県 総務部理事 島村秀世氏)。

 OpenCOBOLの改良を担当したのはランカードコム。長崎県では、地元IT企業の育成を目的に、地場の小規模企業が受注しやすいようシステム案件を小規模に分割して発注している。2001年以前にはゼロだった地元企業の受注は、現在、件数で8割を超えている。ランカードコムも、地元長崎の企業だ。県職員が仕様を作成し、分割発注、OSSを活用し作成したシステムはOSSとして公開する長崎県の手法を、ながさきITモデルと呼ぶ。

 課題は、JCL(ジョブコントロールランゲージ)と印刷だった。JCLは、COBOLプログラムを呼び出してバッチ処理を行う手順を記述したプログラムである。オープンソースのJCLで基幹業務に耐えられそうなものはさすがに見当たらない。そこで、既存のJCLをPerlに自動変換して動かすことにした。

 汎用機の印刷は、ラインプリンタを独自の制御コードで操作している。新システムでは、COBOLプログラムからの印刷出力をPDFに変換するプリンタエミュレータを作成した。PDFに変換することで、どのようなプリンタからでも出力できるようになるほか、ファイルとして配布することも可能になる。

 またデータベースにはMySQLを採用した。Perlを呼び出せるようにOpenCOBOLを改良。Perlを介してMySQLを呼び出している。「OpenCOBOLのソースコードが公開されているから実現できた」(ランカードコム 代表取締役 峰松浩樹氏)。

 現在、汎用機上のCOBOLプログラムの約95%をOpenCOBOLプログラムに自動変換できているという。長崎県では、2013年を目標に汎用機を完全に撤去する予定だ。

ソフトウエアは“放流”で成長する

 「正月、部屋にこもってひたすらコードを書いていた」---。日医標準レセプトソフトの取材では、西田氏からそんなエピソードを聞いたことを憶えている。しかし、日医標準レセプトソフトがリリースされてから後は、OpenCOBOLについての記事を書いたことはなかった。10年ぶりに“再会”したOpenCOBOLは、国際的なプロジェクトになり、県の税務システムがその上で動こうとしていることに、驚きと感慨をおぼえた。放流した稚魚が大海で育ち、大魚となって戻ってきたようなものだろうか。

 だが、振り返ってみれば、このようなケースは決して珍しいものではない。フィンランドで生まれたLinuxはRed Hat LinuxやAndroidを生み、東京証券取引所のシステム、携帯電話やスマートフォンを動かしている。日本で生まれたRubyからはRuby on Railsが育ち、米国でTwitterを支えているのだ。優れたコードを解き放つと、時に作者も予想しなかったことが起きる。OSSの世界では実はそれは“よくあること”なのかもしれない。