日々の細かい改変の影響調査や対象プログラム抽出を容易に

背景

郷商事は、主要な建設機械メーカーに対して、油圧ホースをはじめとする油圧関連部品、樹脂・ゴム・電装品関連部品などを販売している商社です。取り扱い商材の製造は、日吉工業(福島県喜多方市)などのグループ会社が担っています。郷商事の基幹システムは、IBMのオフィスコンピュータ「IBM i(旧名称:AS/400、)」上で稼働しています。このシステムはRPG言語を使って開発されています。現在では、1台のIBM i(Power System)上で、販売(郷商事)、製造(日吉工業など)、海外子会社の業務システムを、区画を分けて運用しています。海外子会社は例外的に、自社開発のシステムではなく、ERP(統合基幹システム)パッケージソフトの「Movex」(現在の「Infor M3」)を運用しています。一方、郷商事や日吉工業の業務システムは、長期にわたり、RPG言語を使って自社で開発・メンテナンスを行ってきました。
自社開発のシステムは、2008年以降、大部分について、概要設計のみを郷商事で実施し、開発工程を外注化しています。人員不足により、郷商事の開発体制が小さくなっていたことが、外注化を進めた理由の1つです。
現在、郷商事では、開発を外注化していることから、基本的には、本システムに大きな変更を加えることはありません。しかし、取引先との間でデータをやり取りする機能については、今後も小規模な開発や頻繁な修正が必要です。
ハードウエア(Power System)については、数年後リプレースする予定ですが、本アプリケーション・システムについては、今後5〜6年は現行システムを運用・保守し続けるつもりであり、RPG言語による開発と保守が必要です。
こうした状況に対し、郷商事でRPG言語を使える技術者は年々減ってきており、東京地区で3人、大阪地区で1人、合計で4人しかおらず、開発の余力がほとんどないのが実情でした。







挑戦

このように郷商事は、RPG言語が分かる技術者が4人という体制で、RPG言語の業務システムを保守・運用していかなければなりませんでした。よって、こうした状況を解決するため、本システムを効率よく調査できるツールの導入の検討を始めました。
調査ツールの導入を検討した直接のキッカケは、現行システムの外貨対応です。外貨に対応させるため、本システムの改変が必要になりました。改変にともなう影響を調べるために、現行システムの構造を解析し、影響個所を抽出するツールが必要になったのです。
もちろん、根源的な課題であるソフトウエアのブラックボックス化を解消したいというニーズもありました。長期にわたって様々な社内人員や外注人員により、開発・修正してきた経緯から、業務アプリケーションの中身がブラックボックス化していたのです。
さらに、RPG言語が分かる技術者の高齢化も問題となっていました。現行のアプリケーションを可視化することによって、調査にかかる生産性の低下を解消したかったのです。







ソリューション

ツールの選定にあたっては、5つの製品を比較検討しました。いくつかの検討項目を決めて比較した結果、郷商事の要件を最も多く満たせるツールとして、カナダのFresche Solutionsが開発、国内ではGxPが日本語化や導入支援を行なっている「X-Analysis Advisor」を採用しました。
X-Analysis Advisorの主な機能は、ファイルフィールドおよびソースコードを修正した場合の影響範囲の調査、ソースコードの複雑性と品質の測定、リレーショナルデータモデルの生成、ドキュメントの自動生成、ビジネスルールの抽出と合致検索、システム資産の問題分析などです。
ツールの選定時に機能面で重視した項目は、修正による時系列で変わるソースコードの違いを比較する機能、ソースコードの難易度を分析する機能、データベーステーブルの妥当性などを検査する機能、などです。いずれも、X-Analysis Advisorが優れていました。
サーバーモジュールが、IBM iで動作することも、他のツールと比べたX-Analysis Advisorのメリットでした。ツールによっては、Windows Serverなどの外部のサーバーを用意し、いったんソースコードを外部サーバー側にテキスト形式でエクスポートしてから解析する仕組みで動作するものもあります。
X-Analysis Advisorなら、IBM i上だけで動作するため、外部サーバーを維持する必要がありません。さらに、ソースコードだけでなく、そのコンパイル先であるオブジェクトも含めて解析できます。さらにソースコードが無いオブジェクトを解析できることも強みです。







結果

郷商事は、X-Analysis Advisorを、主としてソースコード変更時の影響調査や、コードの改変が必要な対象プログラムオブジェクトの抽出作業に活用しています。ソースコードに変更を加えた際に影響が及ぶ範囲が短時間で判明するので、大幅な工数の削減につながりました。プログラムオブジェクト同士の依存関係として、特定の親プログラムにひも付いた子プログラムを抽出できるだけでなく、反対に、特定の子プログラムにひも付いた親プログラムを抽出できます。機能追加や仕様変更などの際に、改変しなければならないソースコードを調べることも簡単にできます。キーワードを入力して検索するだけで、対象となるソースコードの具体的な行を抽出できます。他の人が作成したソースコードの構造を容易に可視化できるので、保守・改修の作業に取り組みやすく、モチベーションアップにつながっています。