[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

リバースエンジニアリング (reverse engineering)

pointこの用語のポイント

point完成系から材料や設計図などを推測する作業だよ

pointプログラムからソースコードを取り出すことだよ

スポンサーリンク

簡単に書くよ

リバースエンジニアリング (reverse engineering)とは

苺大福をじーっと眺めて、ぺろぺろ舐めて、パクっと食べて、苺大福を再現するために必要な材料やレシピなどを推測すること。
もう少し真面目に書くと

完成品を調べることによって、元の材料や設計図などを推測すること
です。
特にプログラミングの分野では

できあがっているプログラムから無理やりソースコード(プログラムの元ネタ)を取り出すこと
を指す場合が多いです。

image piyo

詳しく書くよ

一言で言えば「完成品から元となったものを推測すること」が「リバースエンジニアリング」です。

例えば、ここに苺大福があったとしましょう。

リバースエンジニアリング

苺大福は、食べたらなくなってしまいます。

リバースエンジニアリング2

なくなるのは哀しいです。

リバースエンジニアリング3

そこで、ピヨ子さんはピヨ太君に「この苺大福と同じものを作れるようになりなさい」と命令しました。

リバースエンジニアリング4

ピヨ子さんの命令は絶対です。

とはいえ、この苺大福は、どこかのお店が売っている商品です。
「同じのを作りたいので材料とか教えてくださ~い」と言っても、教えてはもらえないでしょう。

仕方がないので、ピヨ太君は苺大福を丹念に調べました。
見たり、舐めたり、においを嗅いだり、食べたり、ありとあらゆる手段を使って、苺大福を分析したのです。

リバースエンジニアリング5

その結果、ピヨ太君は「こんな材料を使って、こんなレシピで作っているのかな?」と推測できるようになりました。
実際に作ってみたところ、味も同じです。

試しにピヨ子さんに食べさせてみたところ、ピヨ子さんも満足してくれました。

リバースエンジニアリング6

ピヨ太君は、無事に任務を果たしました。
めでたし、めでたし。

この話において、ピヨ太君は完成品の苺大福から、材料やレシピを推測しました。
この「完成品から元を推測する」作業が、リバースエンジニアリングです。
時間を巻き戻して、そいつの成り立ちを解明するイメージですね。

なお、プログラミングの分野で「リバースエンジニアリング」と言った場合は、プログラムからソースコード(プログラムの元ネタ)を抽出する行為を指すことが多いです。

プログラムを作る際には、まずソースコードを書きます。

リバースエンジニアリング7

このソースコードに対して「コンパイル」と呼ばれる作業を行います。
そうすると、ソースコードを元にして、実際のプログラムができあがります。

リバースエンジニアリング8

大雑把ですが、これがプログラムを作る際の流れです。

ここで、コンパイルに注目してください。

リバースエンジニアリング9

コンパイルで行った作業を完全に逆の手順で行えば、理屈上、プログラムをソースコードに戻せるはずです。

リバースエンジニアリング10

このように、プログラムからソースコードに戻す作業も、リバースエンジニアリングと呼ばれます。
プログラムに対して「リバースエンジニアリングしてみる?」と言った場合は「ソースコードを引っこ抜いてみるか!」の意図である場合が多いでしょう。

とはいえ、あまり現実的な作業ではないですけどね。

プログラムをリバースエンジニアリングする際には、一般的には専用のソフトを使います。
そして、ソフトを使えば完全に元に戻せるかというと、そんなこともありません。

そもそも「やってみないと分からない」上に「それっぽくなったけど正しいか分からない」となることも少なくないはずです。
例えば「ソースコードがないプログラムなんだけど、機能追加したいんだよね~」とか頼まれても、お断りした方が無難だと思います。
「よっしゃ!リバースエンジニアリングして、機能追加して、大金ゲットしてやるぜ~!」とか考えると、地獄を見ることになります。

image piyo2

一言でまとめるよ

まぁ「リバースエンジニアリング」って単語が出てきたら「完成系から、その元(材料や設計図など)を推測することなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク