← 一覧に戻る

【第93話】完成品から仕様を読み解く|ITパスポート 令和5年度 問39

~ツンデレ女子大生と東大パソコンオタクの、ちょっと不器用な勉強会~

第93話|第4部 場所:拓也の家

登場人物

美咲

美咲(みさき)

女子大生。就活のエントリーシートの資格欄が真っ白なことに気づき、慌ててITパスポートの勉強を開始。ITは完全に素人。高校時代は可愛くて人気者だったので、ちょっとプライドが高い。素直じゃない。

拓也

拓也(たくや)

美咲の高校時代の同級生。東京大学工学部。子どもの頃からパソコンばかりいじってきた生粋のオタク。実は美咲のことが好きだが、10年近く言い出せていない。教えるのは得意だが、口が悪いのが玉に瑕。

拓也の家

今日の問題

今日の問題

運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。

  • コードレビュー
  • デザインレビュー
  • リバースエンジニアリング
  • リファクタリング

第1幕:古いプログラムの発掘

3月、拓也の部屋。中学時代に作った古いプログラムのファイルを、拓也が久しぶりに開いていた。仕様書は当時から作っておらず、コードだけが残っている。

美咲

美咲

これ、何のプログラムか、あんた自身覚えてるの?

拓也

拓也

うっすらとしか。……あ、それ、今日の問題にちょうどいい話だ

美咲

美咲

自分の記憶があやふやな話からも繋げるの、器用ね

拓也

拓也

今回は本当に、この"仕様書のないコードを読み解く"作業がそのまま答えなんだって

第2幕:動きを変えず改善するやつでしょ

散らかった机の隅で、拓也がノートを広げる。

美咲

美咲

じゃあ答えるわね。これでしょ。『リファクタリング』

拓也

拓也

お、なんでそう思った?

美咲

美咲

だって、前にカフェで習ったばっかりでしょ。既存のプログラムをいじる話だったから

拓也

拓也

覚えててくれて嬉しいんだけど、実は"動きを変えずに改善する"のと"解析して仕様を明らかにする"のは、別の作業なんだ

美咲

美咲

え、違うの?

拓也

拓也

うん。リファクタリングは、動きを変えずに内部構造を"改善する"作業。今日の問題が聞いてるのは、コードを解析して、"仕様書を作る"作業なんだ

第3幕:コードを読み解いて、手順書にする

拓也は、画面に表示された古いソースコードを指さした。

拓也

拓也

このコード、仕様書が残ってないから、何をしてるプログラムか、コードを読みながら手順を書き起こしていくしかないんだ

美咲

美咲

うん、たしかに、探偵みたいな作業ね

拓也

拓也

そのとおり。完成品(ソースコード)を解析して、"どういう仕様で作られていたか"を明らかにする。これがリバースエンジニアリングなんだ

美咲

美咲

あ……!  "改善する"んじゃなくて、"読み解いて仕様書を作る"のが、今日の問題の答えってことね

拓也

拓也

そのとおり。正解はウ運用中のソフトウェアに仕様書がないとき、ソースコードを解析して仕様書を作成する。これがリバースエンジニアリングなんだ。前回のリファクタリングとは、目的も作業内容も違うんだよ

美咲

美咲

なるほどね……。似てるようで、"改善"と"解析"じゃ、全然違う作業なのね

第4幕:……あ、これ見なかったことに

コードを読み進めていた拓也の手が、ふと止まった。

拓也

拓也

……あ、これ見なかったことに

美咲

美咲

え、何?

拓也

拓也

い、いや、何でもない

美咲

美咲

気になるじゃない。見せて

美咲が画面を覗き込むと、コードのコメント欄に「みさきに見せたら褒めてもらえるかな」という、当時の拓也の手書きの一文が残っていた。

美咲

美咲

……それ消して!

拓也

拓也

消すよ!  今すぐ消す!

美咲

美咲

中学生の頃から、そういうこと考えてたわけ?

拓也

拓也

黒歴史すぎる……。今日一番の後悔かもしれない

美咲

美咲

別に、悪い意味じゃないけど……。まあ、今すぐ消しなさいよね

拓也

拓也

はい、即消去します

第5幕:残りの選択肢を片付ける

赤面したまま、拓也が気を取り直して続ける。

美咲

美咲

……気を取り直して。残りのも教えて

拓也

拓也

アの『コードレビュー』は、書いたコードを、他の人がチェックする作業。バグや改善点を、開発の過程でお互いに確認し合うんだ

美咲

美咲

イは?

拓也

拓也

イの『デザインレビュー』は、設計段階の内容を、関係者でチェックする作業。コードじゃなくて、"設計"そのものを確認するタイミングで行われるんだ

美咲

美咲

リバースエンジニアリングは解析して仕様書を作る、リファクタリングは動きを変えず改善、コードレビューはコードの確認、デザインレビューは設計の確認。……全部"確認・改善系"の作業だけど、タイミングも目的も違うのね

拓也

拓也

完璧な整理。"いつ、何を対象に行う作業か"を意識すると、この手の開発用語も迷わなくなるよ

問題文(再掲)

運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。

  • コードレビュー
  • デザインレビュー
  • リバースエンジニアリング
  • リファクタリング

まとめ:選択肢ごとの答え合わせ

選択肢内容正誤
コードレビュー(コードの確認作業)不正解
デザインレビュー(設計の確認作業)不正解
リバースエンジニアリング(解析して仕様書を作る)正解
リファクタリング(動きを変えず改善する)不正解

答えウ リバースエンジニアリング

覚え方のコツ

仕様書のないコードを読み解いて、手順書にする。それがリバースエンジニアリング。

エピローグ

黒歴史のコメントを削除し終え、拓也はぐったりとした様子で椅子にもたれた。

美咲

美咲

今日は、あんたの過去が発掘された日だったわね

拓也

拓也

もう、その話はやめて……

美咲

美咲

ふふ、まあいいけど。……昔から変わってないのね、あんた

拓也

拓也

それ、褒めてないよね

美咲

美咲

さあ、どうかしらね

拓也

拓也心の声

……昔から変わってない、か。それ、否定できないんだよな

美咲

美咲

なに黙ってるのよ

拓也

拓也

いや、なんでもない。……このプログラム、久しぶりに動かしてみる?

美咲

美咲

うん、見てみたい

古いコードが、画面の中でゆっくりと動き始めた。

今日のポイントおさらい

  1. リバースエンジニアリング=完成品を解析して、仕様を明らかにする手法
  2. リファクタリングは、動きを変えずに内部構造を改善する作業で、目的が異なる
  3. コードレビューは、書いたコードを他の人がチェックする作業
  4. デザインレビューは、設計段階の内容を関係者でチェックする作業
  5. 開発関連の確認・改善作業は、「いつ、何を対象に行うか」で区別すると混同しにくい

この記事はITパスポート試験 令和5年度 問39(マネジメント系/システム開発技術)の解説です。

← 一覧に戻る