「このプログラム、オブジェクト指向(Object-Oriented)で設計されてないから、拡張性が低いね」

エンジニアの先輩が眉をひそめて言いました。私は「オブ……ジェクト……? 指向……? なんだか、高い目標(志)に向かって突き進む、ストイックな性格のことかな?」と、情熱的なプログラムを想像していました。

とりあえず 「高い志、大事ですよね!」 と拳を握ってみましたが、先輩からは「……いや、モノを中心とした考え方のことだよ」と教えられ、またしても「精神論パニック」で赤面する羽目に(笑)。

実は「オブジェクト指向」は、複雑なプログラムを「賢い部品の集まり」として整理する、とっても合理的な考え方のことです。今回は、 「RPGの登場人物」 に例えて、その正体を3分でやさしく解説します!

オブジェクト指向とは? 一言でいうと「プログラムを『意思を持った独立した部品(モノ)』として作る考え方」

結論から言うと、オブジェクト指向とは、「プログラムを『モノ(オブジェクト)』の集まりとして捉え、モノ同士がメッセージをやり取りすることで全体の処理を進めていく設計手法」 のことです。

人気の 「RPG(ロールプレイングゲーム)」 に例えてみましょう。

  • 従来の作り方:世界全体の「巨大な脚本」があり、全キャラの動きを一箇所ですべてコントロールする。一人変えるだけで脚本全部を書き直すハメに。
  • オブジェクト指向「戦士」「魔法使い」「宿屋の主人」といったキャラ一人ひとりを、『独立した部品(オブジェクト)』として作る。

各キャラ(オブジェクト)は、自分の「ステータス(データ)」と「特技(処理)」を自分で持っています。

「勇者」が「宿屋の主人」に「泊めて!」とメッセージを送れば、主人は自分のルールに従って勝手にお会計をしてくれます。このように、「自分自身のことは自分でやる賢い部品」 を組み合わせて世界(システム)を作るのが、オブジェクト指向の魔法なのです。

ビジネスの現場でオブジェクト指向という言葉が出る場面

開発の設計思想や、メンテナンス性の議論で頻繁に登場します。

1. 「オブジェクト指向の『カプセル化』によって、中身を知らなくても部品を使えるね」

意味:
「魔法使いが中でどうやって呪文を唱えているか(複雑なコード)を知らなくても、『攻撃しろ!』というボタン(命令)を押すだけで魔法が使えるように、中身を隠して使いやすくしよう」ということです。

2. 「ポリモーフィズム(多態性)を活かして、同じ命令で違う動きをさせよう」

意味:
「『戦え!』という一言の命令に対して、戦士は『剣』で、魔法使いは『杖』で、それぞれの得意技で勝手に判断して動いてくれるような、賢い仕組みを作ろう」ということです。

3. 「大規模な開発には、オブジェクト指向による再利用性の高い設計が欠かせないよ」

意味:
「一回作った『勇者という部品』を別のゲーム(システム)でも使い回せるように、バラバラに独立させて作っておけば、効率よく仕事ができるね」ということです。

オブジェクト指向の「三種の神器」

この考え方を支える3つの柱を、キャラ作りで整理しました。

用語意味たとえ話
カプセル化中身を隠して守る鎧を着て 弱点を見せない
継承親の特徴を引き継ぐ親ゆずり の伝説の剣を使う
ポリモーフィズム同じ命令で形を変える「変身!」 と言えばそれぞれの姿に

この3つを使いこなすことで、プログラムは驚くほど整理され、修正や拡張が楽になります。

まとめ

この記事のポイントは次のとおりです。

  • オブジェクト指向は、プログラムを「モノ」の集まりとして作る考え方
  • 「自分のことは自分でやる」賢い部品を組み合わせることで効率を上げる
  • 修正に強く、大人数での開発に向いている世界標準の設計手法

今すぐできる確認方法

あなたの周りにある「オブジェクト指向」的なものを探してみましょう。

  1. 車の運転: アクセルを踏めば走る。エンジンがどう爆発しているか知らなくても「アクセル」というボタン(命令)だけで動かせる。これがオブジェクト指向の理想です。
  2. 家電のリモコン: 「再生」を押せばDVDが動く。中身の基板を触らなくていい。これも一種のオブジェクト指向的なUIです。
  3. 会社の組織: 「総務部」「営業部」という独立した部品が、お互いに依頼(メッセージ)を出し合って会社を回している様子を想像してみる。

「オブジェクト指向」という言葉を知るだけで、複雑なシステムが「一人の天才が書いた長い文章」ではなく、「たくさんの賢い小人たちが連携し合う賑やかなチーム」のように見えてきませんか?