「このプログラム、オブジェクト指向(Object-Oriented)で設計されてないから、拡張性が低いね」
エンジニアの先輩が眉をひそめて言いました。私は「オブ……ジェクト……? 指向……? なんだか、高い目標(志)に向かって突き進む、ストイックな性格のことかな?」と、情熱的なプログラムを想像していました。
とりあえず 「高い志、大事ですよね!」 と拳を握ってみましたが、先輩からは「……いや、モノを中心とした考え方のことだよ」と教えられ、またしても「精神論パニック」で赤面する羽目に(笑)。
実は「オブジェクト指向」は、複雑なプログラムを「賢い部品の集まり」として整理する、とっても合理的な考え方のことです。今回は、 「RPGの登場人物」 に例えて、その正体を3分でやさしく解説します!
オブジェクト指向とは? 一言でいうと「プログラムを『意思を持った独立した部品(モノ)』として作る考え方」
結論から言うと、オブジェクト指向とは、「プログラムを『モノ(オブジェクト)』の集まりとして捉え、モノ同士がメッセージをやり取りすることで全体の処理を進めていく設計手法」 のことです。
人気の 「RPG(ロールプレイングゲーム)」 に例えてみましょう。
- 従来の作り方:世界全体の「巨大な脚本」があり、全キャラの動きを一箇所ですべてコントロールする。一人変えるだけで脚本全部を書き直すハメに。
- オブジェクト指向:「戦士」「魔法使い」「宿屋の主人」といったキャラ一人ひとりを、『独立した部品(オブジェクト)』として作る。
各キャラ(オブジェクト)は、自分の「ステータス(データ)」と「特技(処理)」を自分で持っています。
「勇者」が「宿屋の主人」に「泊めて!」とメッセージを送れば、主人は自分のルールに従って勝手にお会計をしてくれます。このように、「自分自身のことは自分でやる賢い部品」 を組み合わせて世界(システム)を作るのが、オブジェクト指向の魔法なのです。
ビジネスの現場でオブジェクト指向という言葉が出る場面
開発の設計思想や、メンテナンス性の議論で頻繁に登場します。
1. 「オブジェクト指向の『カプセル化』によって、中身を知らなくても部品を使えるね」
意味:
「魔法使いが中でどうやって呪文を唱えているか(複雑なコード)を知らなくても、『攻撃しろ!』というボタン(命令)を押すだけで魔法が使えるように、中身を隠して使いやすくしよう」ということです。
2. 「ポリモーフィズム(多態性)を活かして、同じ命令で違う動きをさせよう」
意味:
「『戦え!』という一言の命令に対して、戦士は『剣』で、魔法使いは『杖』で、それぞれの得意技で勝手に判断して動いてくれるような、賢い仕組みを作ろう」ということです。
3. 「大規模な開発には、オブジェクト指向による再利用性の高い設計が欠かせないよ」
意味:
「一回作った『勇者という部品』を別のゲーム(システム)でも使い回せるように、バラバラに独立させて作っておけば、効率よく仕事ができるね」ということです。
オブジェクト指向の「三種の神器」
この考え方を支える3つの柱を、キャラ作りで整理しました。
| 用語 | 意味 | たとえ話 |
|---|---|---|
| カプセル化 | 中身を隠して守る | 鎧を着て 弱点を見せない |
| 継承 | 親の特徴を引き継ぐ | 親ゆずり の伝説の剣を使う |
| ポリモーフィズム | 同じ命令で形を変える | 「変身!」 と言えばそれぞれの姿に |
この3つを使いこなすことで、プログラムは驚くほど整理され、修正や拡張が楽になります。
まとめ
この記事のポイントは次のとおりです。
- オブジェクト指向は、プログラムを「モノ」の集まりとして作る考え方
- 「自分のことは自分でやる」賢い部品を組み合わせることで効率を上げる
- 修正に強く、大人数での開発に向いている世界標準の設計手法
今すぐできる確認方法
あなたの周りにある「オブジェクト指向」的なものを探してみましょう。
- 車の運転: アクセルを踏めば走る。エンジンがどう爆発しているか知らなくても「アクセル」というボタン(命令)だけで動かせる。これがオブジェクト指向の理想です。
- 家電のリモコン: 「再生」を押せばDVDが動く。中身の基板を触らなくていい。これも一種のオブジェクト指向的なUIです。
- 会社の組織: 「総務部」「営業部」という独立した部品が、お互いに依頼(メッセージ)を出し合って会社を回している様子を想像してみる。
「オブジェクト指向」という言葉を知るだけで、複雑なシステムが「一人の天才が書いた長い文章」ではなく、「たくさんの賢い小人たちが連携し合う賑やかなチーム」のように見えてきませんか?