先日、訪問したシステム開発会社で面白い相談を受けた。
その会社に、ある大手電機メーカーから「COBOLプログラムのレガシーシステムをJavaに変換したい」という案件が来た。社内の担当部署に見積もらせたら、ハードウエアを含めて10億円以上という数字が上がってきたという。非常に大規模な案件である。
まず、COBOLのプラグラムをリバースエンジニアリングで解析するのだが、その検証作業で、私が知っているニアショア企業を使えないかというのである(国内の地方企業に開発作業を委託することをニアショア開発という)。
他社製ソフトの中身を分解して「盗用」するケースも
リバースエンジニアリングとは何か?
ハードウエアとソフトウエアで、リバースエンジニアリングの方法は異なる。ハードウエアのリバースエンジニアリングは、「分解・解体」から始まる。目に見えて形のあるものだから、やることはそれほど複雑ではない。NECのパソコン「PC98シリーズ」をセイコーエプソンがリバースして「互換パソコン」を作ったのは有名な話である。
一方、ソフトウエアのリバースエンジニアリングは、既存のソフトを分解し、ソースコードなどを分析する。通常、システム開発には「要件定義(概念設計)→ 基本設計 → 詳細設計 → プログラミング → テスト(稼働)」という大まかな流れがある。それを名前の通り「逆に」流していき、ソフトを分解していくのである。
通常、ソフトウエアのリバースエンジニアリングは、老朽化(レガシーシステム化)した自社システムを再構築するための手段として用いられる。まれに、自社が開発したソフトの瑕疵(バグ)の確認などに使用する場合もある。それらの場合は、著作権や特許権・使用権許諾などを巡って問題になることはない。
だが、リバースエンジニアリングが行われるのは、そうした正当な理由がある場合だけに限らない。他社製品を分解し、ソースコードから「ロジックやアイデアなど」を流用し、自社の製品に引用しようとたくらむ企業も存在する。