COBOL技術者にRubyを


松江市の高額医療・高額介護合算制度システム開発プロジェクト・メンバー
[画像のクリックで拡大表示]
 島根県松江市はRubyで「高額医療・高額介護合算制度」に基づく支給額を算出するシステムを構築する。開発は経済産業省が実施する自治体へのオープンソフトウエア導入実証事業として行われるが,市役所で実際に市民サービスに使用する。約4万5000人を対象とし金額計算を行を扱う基幹システムである。

 開発を担当するテクノプロジェクトは,松江市の最大手IT企業である。島根県の介護保険システムなどを請け負った実績を持つ。「3月,松江市長に,Rubyを市の業務で使うにはどういったものが適しているだろうか,と尋ねられたことからこのプロジェクトは始まった」(テクノプロジェクト 代表取締役専務 吉岡宏氏)。吉岡氏は新規システムへの適用が適切と提案,2008年4月から開始される「高額医療・高額介護合算制度」がターゲットとなった。

 このシステム開発での大きな課題は,大規模な開発チームで,必ずしもRubyに習熟していない開発者も加わった体制で開発を効率的に進ることができる手法を確立することだ。実際に,この開発プロジェクトはテクノプロジェクトで13名(フルに関わるメンバーが7名)に加え,ネットワーク応用通信研究所,伊藤忠テクノソリューションズなどを含め全部で37名と,Rubyによるシステムとしてはかなり大規模な体制になっている。

 特に業務アプリケーション部分は,COBOL技術者がRubyでの開発を進められるようにする。業務に精通したSEの知識をRubyで生かす。

コーディング規約を作成,公開へ

 そのために重要になるのがコーディング規約だ。Rubyは同じ処理を実現するのに様々な記述方式を取ることができる。好きな記述方法を選択できることは,短いプログラムを少人数で作る際には非常に有用だが,多人数で進めるプロジェクトでは,読みやすさを優先して記述方法を統一することが望ましい。

 また行政システムでは,大量データのバッチ処理が発生する。住民当たり平均10件程度,数十万件のデータを処理しなければならない。「バッチ処理は朝の始業時までに終わらせなければならない。いかにI/Oを少なくするか,ミリ秒単位で競ってきた」(テクノプロジェクト 吉岡氏)。Ruby on Railsの生産性を生かしながらバッチ処理を行うために,ネットワーク応用通信研究所を中心に「Railsのデータ・アクセス・モジュールであるActiveRecordを改良して実現することを検討している」(ネットワーク応用通信研究所 研究員 前田修吾氏)。

 さらに,大量の伝票の印刷も課題だ。大量印刷のための専用プリンタを制御しなければならない。こちらは,RubyからJavaのライブラリを呼び出して制御する方針だ。

 高額医療・高額介護合算制度システムは2007年12月までに開発し,2008年1月から導入を開始する。このプロジェクトで開発されたコーディング規約やライブラリなどのノウハウは,オープンソース・ソフトウエアとして公開される予定である。

 テクノプロジェクトも,Rubyの生産性を高く評価する。「製造工程が全体に占める割合は3割に過ぎず,ここだけ効率化しても全体から見れば劇的な改善は望めない。しかしRuby on Railsはテスト用コードも自動生成するので,全工程でCOBOLやVBに比べ4割から5割生産性が向上しそうだ」(テクノプロジェクト 吉岡氏)。「全社の仕組みをRubyに向かうようにしたい」と,Rubyを全社標準とする方針だ。