リバースエンジニアリングとは?
リバースエンジニアリングとは、出荷された製品を入手して分解や解析などを行い、その動作原理や製造方法、設計や構造、仕様の詳細、構成要素などを明らかにすることを意味している。
リバースエンジニアリングのあれこれ!
企業などが他社製品のリバースエンジニアリングによって得ることのできた情報は、類似製品や互換製品の開発、同等の機能の実現などのために利用されることが多い。しかし、自社特許の侵害が無いか調査するといった目的で行われる場合もある。
ソフトウェアの場合には、実行可能形式のプログラムから逆アセンブルや逆コンパイルなどを行い、(不完全な)ソースコードを取得して動作を解析することが多くある。他の工業製品の場合と同じように、互換製品などを開発するために行われる。その他に、コンピュータウイルスなどマルウェアの動作を詳細に調べ対策プログラムを開発したり、ソフトウェアの保安上の弱点(脆弱性)を探し出すなどセキュリティ上の目的で行われる場合も多い。
リバースエンジニアリングを行うこと自体は合法であるが、抽出したコンピュータプログラムを丸ごと複製して自社製品に組み込むといった行為は著作権違反、企業秘密(営業秘密)として保護された製法や構造などを割り出して無許諾で模倣した場合は不正競争防止法違反などに問われる場合がある。
このような権利侵害を避けるため、リバースエンジニアリングを行うチームが外形的な仕様などを記述し、隔離された別のチームが書面を元に同じ働きをする実装方法を独自に考案するという手法が使われることがある。これをクリーンルーム設計(クリーンルーム手法)という。ただし、この方式では特許権や意匠権の侵害を避けることはできない。
○CAE(Computer Aided Engineering)
CAEとは、工業製品の設計や構造の解析、机上の試験などにコンピュータシステムを導入して効率的に行うことである。また、そのような工程を支援するソフトウェアやシステム(CAEツール、CAEシステム)を指す場合もある。