登場人物
美咲(みさき)
女子大生。就活のエントリーシートの資格欄が真っ白なことに気づき、慌ててITパスポートの勉強を開始。ITは完全に素人。高校時代は可愛くて人気者だったので、ちょっとプライドが高い。素直じゃない。
拓也(たくや)
美咲の高校時代の同級生。東京大学工学部。子どもの頃からパソコンばかりいじってきた生粋のオタク。実は美咲のことが好きだが、10年近く言い出せていない。教えるのは得意だが、口が悪いのが玉に瑕。
今日の問題
今日の問題
既存のプログラムを、外側から見たソフトウェアの動きを変えずに内部構造を改善する活動として、最も適切なものはどれか。
- アテスト駆動開発
- イペアプログラミング
- ウリバースエンジニアリング
- エリファクタリング
第1幕:厨房が見えるカフェ
2月、二人はガラス越しに厨房が見えるカフェにいた。店員が忙しそうに立ち回っている。
美咲
あの厨房、動線とか道具の配置、なんか工夫してそうね。メニューも味も変わってないのに、前より提供早い気がする
拓也
あ、それ、今日の問題にちょうどいい話だ
美咲
厨房を見ただけで繋げるの、もう反射神経ね
拓也
今回は本当に、その"見た目は変わらないのに中身が良くなってる"って感覚がそのまま答えなんだって
第2幕:既存の仕様を逆算するやつでしょ
ドリンクを受け取り、拓也がノートを広げる。
美咲
じゃあ答えるわね。これウでしょ。『リバースエンジニアリング』
拓也
お、なんでそう思った?
美咲
だって、"既存のプログラムを"って言われたら、もう出来上がってるものをいじる話だと思ったのよね。前に少し聞いた、逆算する話みたいな
拓也
発想はわかるんだけど、実は"既存のものから仕様を調べる"のと"既存のものの中身を改善する"のは、目的が違うんだ
美咲
え、違うの?
拓也
うん。リバースエンジニアリングは、完成品を分解・分析して、仕様や設計を"調べる"活動。今日の問題が聞いてるのは、"外から見た動きは変えずに、中身の構造を改善する"活動なんだ
第3幕:味は変えずに、厨房だけ効率化する
拓也は、ガラス越しの厨房を指さした。
拓也
あの厨房、たぶん動線とか道具の配置を見直して、効率よく動けるようにしてるんだと思う。でも、お客さんから見たメニューや味は、何も変わってないよね
美咲
うん、たしかに。出てくる料理は同じだものね
拓也
それが、まさにリファクタリング。外から見た動き(メニューや味)は変えずに、内部の構造(厨房のオペレーション)だけを改善するんだ。プログラムも同じで、見た目の動作は変えずに、中のコードをより良い形に整理するのが、リファクタリングなんだよ
美咲
あ……! お客さんには気づかれないところで、ちゃんと改善が進んでるってことね
拓也
そのとおり。正解はエ。リファクタリングは、外側から見た動きを変えずに内部構造を改善する活動。バグを直すわけでも、機能を追加するわけでもなく、"あとで直しやすく、読みやすくする"のが目的なんだ
美咲
なるほどね……。見えないところの工夫って、大事なのね
第4幕:……あ、話聞いてなかった
説明を終えたところで、拓也がふと自分のノートを見返し始めた。
拓也
……このノート、もうちょっと構造を整理したいな。章立てとか、色分けのルールとか
美咲
うん、それは大事だと思うけど……
拓也は、美咲の返事もそこそこに、黙々とノートの書き直しを始めてしまう。ページをめくり、付箋を貼り替え、何かをぶつぶつ言いながら整理を続ける。
美咲
……ちょっと。勉強、進んでないけど
拓也
え?
拓也
……あ、話聞いてなかった
美咲
ノートのリファクタリングとやらに、本気で没頭してたわね
拓也
面目ない……。つい、気になって
美咲
気持ちはわかるけど、優先順位、間違えないでよね
拓也
はい、肝に銘じます
第5幕:残りの選択肢を片付ける
ノートを閉じ、拓也が気を取り直して続ける。
美咲
……気を取り直して。残りのアとイも教えて
拓也
アの『テスト駆動開発』は、先にテストを書いてから、それをパスするようにコードを書いていく開発手法。動きを変えずに改善するリファクタリングとは、進め方の発想が違うんだ
美咲
イは?
拓也
イの『ペアプログラミング』は、2人1組で、一人がコードを書き、もう一人がチェックしながら進める開発スタイル。今回みたいな"内部構造の改善"そのものを指す言葉じゃないんだ
美咲
リファクタリングは内部構造の改善、リバースエンジニアリングは仕様の調査、テスト駆動開発はテスト先行の進め方、ペアプログラミングは2人体制のスタイル。……全部、開発に関わる言葉だけど、視点がバラバラなのね
拓也
完璧な整理。"何をする活動か"を意識すると、この手の開発用語も迷わなくなるよ
問題文(再掲)
既存のプログラムを、外側から見たソフトウェアの動きを変えずに内部構造を改善する活動として、最も適切なものはどれか。
- アテスト駆動開発
- イペアプログラミング
- ウリバースエンジニアリング
- エリファクタリング
まとめ:選択肢ごとの答え合わせ
| 選択肢 | 内容 | 正誤 |
|---|---|---|
| ア | テスト駆動開発(テストを先に書いて進める手法) | 不正解 |
| イ | ペアプログラミング(2人1組で進める開発スタイル) | 不正解 |
| ウ | リバースエンジニアリング(完成品から仕様を調べる活動) | 不正解 |
| エ | リファクタリング(動きを変えず内部構造を改善する活動) | 正解 |
答えエ リファクタリング
覚え方のコツ
メニューと味はそのまま、厨房のオペレーションだけ効率化する。
- リファクタリング=外側から見た動きを変えずに、内部構造を改善する活動
- リバースエンジニアリングは、完成品を分解・分析して仕様を調べる活動。改善とは目的が違う
- テスト駆動開発はテストを先に書く進め方、ペアプログラミングは2人体制での開発スタイル
エピローグ
日が傾き始めたカフェの窓際で、二人は残りの勉強を進めていた。
美咲
今日は、あんたのノート愛が爆発した日だったわね
拓也
返す言葉もございません……。次からは、勉強中は我慢する
美咲
そうしてくれると助かるわ。……まあ、綺麗になったノート、あとで見せてよ
拓也
え、いいの?
美咲
別に、興味本位よ。大した意味はないから
拓也心の声
……興味持ってもらえるだけで、地味に嬉しいんだけどな
美咲
なに黙ってるのよ
拓也
いや、なんでもない。……今度、清書したノート持ってくる
美咲
うん、楽しみにしてる
窓の外の夕日が、テーブルの上のノートをオレンジ色に染めていた。
今日のポイントおさらい
- リファクタリング=外側から見た動きを変えずに、内部構造を改善する活動
- リバースエンジニアリングは、完成品を分解・分析して仕様や設計を調べる活動
- テスト駆動開発は、テストを先に書いてからそれをパスするコードを書いていく手法
- ペアプログラミングは、2人1組で役割分担しながら進める開発スタイル
- 開発関連の用語は、「何をする活動か」を意識すると混同しにくい
この記事はITパスポート試験 令和3年度 問48(マネジメント系/システム開発技術)の解説です。