登場人物
美咲(みさき)
女子大生。就活のエントリーシートの資格欄が真っ白なことに気づき、慌ててITパスポートの勉強を開始。ITは完全に素人。高校時代は可愛くて人気者だったので、ちょっとプライドが高い。素直じゃない。
拓也(たくや)
美咲の高校時代の同級生。東京大学工学部。子どもの頃からパソコンばかりいじってきた生粋のオタク。実は美咲のことが好きだが、10年近く言い出せていない。教えるのは得意だが、口が悪いのが玉に瑕。
今日の問題
今日の問題
運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。
- アコードレビュー
- イデザインレビュー
- ウリバースエンジニアリング
- エリファクタリング
第1幕:古いプログラムの発掘
3月、拓也の部屋。中学時代に作った古いプログラムのファイルを、拓也が久しぶりに開いていた。仕様書は当時から作っておらず、コードだけが残っている。
美咲
これ、何のプログラムか、あんた自身覚えてるの?
拓也
うっすらとしか。……あ、それ、今日の問題にちょうどいい話だ
美咲
自分の記憶があやふやな話からも繋げるの、器用ね
拓也
今回は本当に、この"仕様書のないコードを読み解く"作業がそのまま答えなんだって
第2幕:動きを変えず改善するやつでしょ
散らかった机の隅で、拓也がノートを広げる。
美咲
じゃあ答えるわね。これエでしょ。『リファクタリング』
拓也
お、なんでそう思った?
美咲
だって、前にカフェで習ったばっかりでしょ。既存のプログラムをいじる話だったから
拓也
覚えててくれて嬉しいんだけど、実は"動きを変えずに改善する"のと"解析して仕様を明らかにする"のは、別の作業なんだ
美咲
え、違うの?
拓也
うん。リファクタリングは、動きを変えずに内部構造を"改善する"作業。今日の問題が聞いてるのは、コードを解析して、"仕様書を作る"作業なんだ
第3幕:コードを読み解いて、手順書にする
拓也は、画面に表示された古いソースコードを指さした。
拓也
このコード、仕様書が残ってないから、何をしてるプログラムか、コードを読みながら手順を書き起こしていくしかないんだ
美咲
うん、たしかに、探偵みたいな作業ね
拓也
そのとおり。完成品(ソースコード)を解析して、"どういう仕様で作られていたか"を明らかにする。これがリバースエンジニアリングなんだ
美咲
あ……! "改善する"んじゃなくて、"読み解いて仕様書を作る"のが、今日の問題の答えってことね
拓也
そのとおり。正解はウ。運用中のソフトウェアに仕様書がないとき、ソースコードを解析して仕様書を作成する。これがリバースエンジニアリングなんだ。前回のリファクタリングとは、目的も作業内容も違うんだよ
美咲
なるほどね……。似てるようで、"改善"と"解析"じゃ、全然違う作業なのね
第4幕:……あ、これ見なかったことに
コードを読み進めていた拓也の手が、ふと止まった。
拓也
……あ、これ見なかったことに
美咲
え、何?
拓也
い、いや、何でもない
美咲
気になるじゃない。見せて
美咲が画面を覗き込むと、コードのコメント欄に「みさきに見せたら褒めてもらえるかな」という、当時の拓也の手書きの一文が残っていた。
美咲
……それ消して!
拓也
消すよ! 今すぐ消す!
美咲
中学生の頃から、そういうこと考えてたわけ?
拓也
黒歴史すぎる……。今日一番の後悔かもしれない
美咲
別に、悪い意味じゃないけど……。まあ、今すぐ消しなさいよね
拓也
はい、即消去します
第5幕:残りの選択肢を片付ける
赤面したまま、拓也が気を取り直して続ける。
美咲
……気を取り直して。残りのアとイも教えて
拓也
アの『コードレビュー』は、書いたコードを、他の人がチェックする作業。バグや改善点を、開発の過程でお互いに確認し合うんだ
美咲
イは?
拓也
イの『デザインレビュー』は、設計段階の内容を、関係者でチェックする作業。コードじゃなくて、"設計"そのものを確認するタイミングで行われるんだ
美咲
リバースエンジニアリングは解析して仕様書を作る、リファクタリングは動きを変えず改善、コードレビューはコードの確認、デザインレビューは設計の確認。……全部"確認・改善系"の作業だけど、タイミングも目的も違うのね
拓也
完璧な整理。"いつ、何を対象に行う作業か"を意識すると、この手の開発用語も迷わなくなるよ
問題文(再掲)
運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。
- アコードレビュー
- イデザインレビュー
- ウリバースエンジニアリング
- エリファクタリング
まとめ:選択肢ごとの答え合わせ
| 選択肢 | 内容 | 正誤 |
|---|---|---|
| ア | コードレビュー(コードの確認作業) | 不正解 |
| イ | デザインレビュー(設計の確認作業) | 不正解 |
| ウ | リバースエンジニアリング(解析して仕様書を作る) | 正解 |
| エ | リファクタリング(動きを変えず改善する) | 不正解 |
答えウ リバースエンジニアリング
覚え方のコツ
仕様書のないコードを読み解いて、手順書にする。それがリバースエンジニアリング。
- リバースエンジニアリング=完成品(ソースコードなど)を解析して、仕様を明らかにする手法
- リファクタリングは、動きを変えずに内部構造を改善する作業。目的が違う
- コードレビューはコードの確認、デザインレビューは設計の確認。それぞれ対象とタイミングが異なる
エピローグ
黒歴史のコメントを削除し終え、拓也はぐったりとした様子で椅子にもたれた。
美咲
今日は、あんたの過去が発掘された日だったわね
拓也
もう、その話はやめて……
美咲
ふふ、まあいいけど。……昔から変わってないのね、あんた
拓也
それ、褒めてないよね
美咲
さあ、どうかしらね
拓也心の声
……昔から変わってない、か。それ、否定できないんだよな
美咲
なに黙ってるのよ
拓也
いや、なんでもない。……このプログラム、久しぶりに動かしてみる?
美咲
うん、見てみたい
古いコードが、画面の中でゆっくりと動き始めた。
今日のポイントおさらい
- リバースエンジニアリング=完成品を解析して、仕様を明らかにする手法
- リファクタリングは、動きを変えずに内部構造を改善する作業で、目的が異なる
- コードレビューは、書いたコードを他の人がチェックする作業
- デザインレビューは、設計段階の内容を関係者でチェックする作業
- 開発関連の確認・改善作業は、「いつ、何を対象に行うか」で区別すると混同しにくい
この記事はITパスポート試験 令和5年度 問39(マネジメント系/システム開発技術)の解説です。