エンジニアのためのライフスタイルメディア

キッカケアイトレンド

保有ポイント

0P

【未経験でもわかる】オブジェクト指向を●●に例えて分かりやすく解説しました

C++、Python、JavaやPHP…。多くのプログラミング言語で採用されているオブジェクト指向ですが、エンジニアとしての経験が浅い人にとっては難しく感じやすい仕組みです。オブジェクト指向は抽象的な概念が多く、初心者の中には勉強を挫折しかける人も少なくありません。システム開発の現場配属後に用語がわからず、焦りを感じるケースは多いのではないでしょうか?

 

本記事では、難しい専門用語をできるだけ減らしてオブジェクト指向の基礎を直感的に解説します。わかりにくい概念の部分はとあるゲームに例えてお話しします。明日からの実務コードの読み方や、転職後のキャリアアップに活かしてください。

更新日: 2026/08/24
タグ:

そもそもオブジェクト指向とは?

そもそもオブジェクト指向とは?

 

データと処理をまとめて書くスタイルのプログラム

各プログラムをオブジェクトという“モノ”として組み立てて、そのオブジェクトを組み合わせてシステム全体を構築するのがオブジェクト指向です。

 

従来の開発手法では、データと処理をバラバラに記述していました。オブジェクト指向は、関連するデータと処理を1つのグループにまとめるのが特徴。実務のコーディングでは、オブジェクト指向で書かれていることがほとんどです。

 

オブジェクト指向は1960年代に登場。コンピューターがどんどん発達して複雑な処理も可能になる中、ノルウェーのオーレ=ヨハン・ダールとクリステン・ニガードによって提唱されました。

 

その後1970年代にXerox PARCでアラン・ケイらがオブジェクト指向をベースにしたプログラミング言語「Smalltalk」を開発。1980年代以降になると今でも使われているC++やObjective-Cが生まれ、オブジェクト指向のプログラミング言語が広く使われるようになりました。

 

オブジェクト指向がわかりにくい理由

オブジェクト指向がなかなか理解できない大きな理由は2つ。1つはオブジェクト指向自体が抽象度が高いから、もう1つは教える側との知識の差があるからです。

 

カプセル化・ポリモーフィズムなど、参考書に出てくる用語は難解かつ実際のソースコードとの関係性がイメージしづらいものばかり。未経験エンジニアは用語だけでなく概念の理解に苦しむケースが多いです。内容を理解しようと、何度読んでも実務に落とし込みにくい抽象度の高さが難易度を上げています。

 

また、教える側と学ぶ側の認識のズレも、挫折を生む要因です。開発の全体像が見えていないにも関わらず、ベテランエンジニアは当たり前のように専門用語を使います。新人は言葉の意味を調べるだけで時間が過ぎ、「何もできなかった」と本人が焦ってしまって実務に集中できなくなります。

 

わかりにくさと焦りが、新人エンジニアを追い込んでいるともいえるでしょう。

 

なぜオブジェクト指向のプログラムがたくさん使われているの?

なぜオブジェクト指向のプログラムがたくさん使われているの?

 

一度仕組化すれば何度でも使い回せるから

オブジェクト指向最大のメリットが効率的な再利用性です。一度作成したプログラムの部品は、別の場所で何度でも再利用可能なので、特に大規模なシステム開発において開発期間の短縮につながります。バグが発生した際も、該当の部品を修正するだけで対応可能です。メンテナンスの手間が減るため、開発現場の負担を軽減します。

 

オブジェクト指向で書かれたコードは、仮に一部を変更しても全体に悪影響を及ぼしにくいので機能改修も簡単にできます。また一定のルールを守る前提なので、どのエンジニアでも同じコードを書くことができ、エンジニア間の意思疎通も容易になります。

 

誰でも同じものを出力でき、安全に拡張できるからこそ、多くの開発現場で採用されているのです。

 

超初心者でもわかる!オブジェクト指向のイメージ

超初心者でもわかる!オブジェクト指向のイメージ

 

設計図(クラス)と実体(インスタンス)

オブジェクト指向を考えるうえで非常に重要な概念が、クラス(Class:設計図)とインスタンス(Instance:実体)です。

 

クラスはオブジェクトを作るための設計図のようなものです。クラスを準備する際は、以下の要素を盛り込んで準備します。

 

要素名

役割

車で例えると

プロパティ

オブジェクトが持つ性質や属性など

車の色や性能、ガソリン量など

メソッド

オブジェクトが行う動作や振る舞い

走る、ガソリンを入れる、エアコンをつけるなど

 

こうした要素を盛り込み、できあがるのが実体であり、オブジェクトであるインスタンスです。車の設計図がクラス、その設計図をもとに量産された車がインスタンスといえます。

 

ただ、まだイメージが湧きにくいかもしれません。そこで次章でもっとわかりやすいものに例えて解説しましょう。

 

オブジェクト指向をRPGに例えてみよう

ということで、この記事ではオブジェクト指向をロールプレイングゲーム(RPG)のパーティーに例えましょう。

 

RPGの登場人物には、何かしらの職業が割り当てられています。主人公はたいてい勇者で、魔法使いや踊り子、僧侶、パラディンなどいろいろな職業の登場キャラクターが存在します。この職業はいわばクラス。RPGの職業に例えるならこのようなイメージです。

職業名

使える武器

体力面での特徴

その他の特徴

勇者

HPが高い

固有スキルが多い

魔法使い

杖や魔導書

MPが高い

味方の援護が得意

パラディン

剣や弓

技能系の数値が高い

馬に乗った状態で戦闘可能

 

こうしたステータスはゲームを作った側が設定して、各キャラクターに当てはめられます。ただ、同じ職業でもステータスが全く一緒にはなりません。例えばこのようなイメージです。

名前

職業

HP

MP

使う武器

タロウ

勇者

100

50

大きな剣

ジロウ

勇者

130

55

小さな剣

 

同じクラスを用いて別のキャラクター、つまりインスタンスができあがります。インスタンスはプロパティによって差が出ることがあり、今回のようにタロウとジロウのステータスに差が出るのはよくあることです。

 

そして、インスタンス同士は干渉しないので、タロウがダメージを負ってもジロウの身には何も起きません。ジロウがレベルアップしてMPが増えても、タロウのステータスには影響が出ません。

 

続いてタロウとジロウ、そして魔法使いのハナコのパーティーがいるとしましょう。彼らは旅をする途中でモンスターに出会い、戦闘に入りました。この時に「たたかう」と指示を出して攻撃をすることになりますが、職業やキャラクターによって出す攻撃が変わることもよくありますよね。このようなイメージです。

 

タロウ…敵に近づいて大きな剣で切りかかる

ジロウ…小さな剣を投げる

ハナコ…その場にいるモンスター全員にダメージを与える魔法をかける

 

このように、オブジェクトそれぞれに同じ指示を出しても動作が変わります。同じ指示でも動作が変わるのも、オブジェクト指向ならではの特徴です。

 

この後、オブジェクト指向を理解するためのワードについて説明しますが、その中でもこのRPGのパーティーで例えながら説明していきましょう。

 

オブジェクト指向を理解するために重要な3つのワード

オブジェクト指向を理解するために重要な3つのワード

 

①カプセル化

データを外部から保護する仕組みがカプセル化です。内部の複雑な処理や重要なデータを隠して外部から勝手にデータを書き換えられるリスクを減らし、安全性を高める仕組みです。

 

これを施していないと、インスタンスの中身が簡単に書き換えられてしまいます。RPGにおけるパーティーの筆頭であるタロウのHPを勝手にゼロにして即死させる、もしくはかつてのバグ技のようにHPをシステム上扱える最大値にして無双するような操作もできてしまいます。これではゲームが面白くないですよね。

 

なので、どうしてもステータスを変えたいときは専用の処理を通すルールを設定。このとき不正な数値をチェックする機能を処理の内部に組み込めば、バグが発生しないよう制御もできます。

 

実務面では、開発者が他人が作った部品の内部を気にせず使えるため、開発効率が上がります。カプセル化はチーム開発を円滑にする知恵ともいえるでしょう。

 

②継承

既存の設計図を元に、新しい設計図を作る仕組みが継承です。過去の資産を引き継ぐため、開発のスピードが上がります。子クラス側での処理設定次第ではあるものの、原則親クラスに共通処理をまとめておけば修正箇所を集約しやすくなります。

 

先ほどのRPGのパーティーに、新しくパラディンのルイが加わったとしましょう。パラディンのステータスは勇者にかなり近く、違うところと言えば弓が使えて馬に乗れること。このパラディンのステータスを作る場合、「勇者の能力はそのままで、弓が使えることと馬に乗れることを追加する」と指示すればよいのです。

 

こうすることで重複するコードを書く無駄がなくなり、プログラムがすっきりします。その後のメンテナンスもしやすくなり、保守運用上のデメリットが大きく減ります。継承を上手に使いこなせば、開発の生産性は飛躍的に向上するでしょう。

 

③ポリモーフィズム

同じ命令に対して、異なるオブジェクトがそれぞれの動きをする仕組みがポリモーフィズムです。先ほど紹介したRPGにおいて、同じ指示を出してもやることが違うと話しましたが、これこそポリモーフィズムの最たる例です。パーティーが4人になった今、「たたかう」のコマンドを入れるとこんな動作をします。

 

タロウ…敵に近づいて大きな剣で切りかかる

ジロウ…小さな剣を投げる

ハナコ…その場にいるモンスター全員にダメージを与える魔法をかける

ルイ…一番HPが残っているモンスターに向けて弓を放つ

 

仮に新しいインスタンスが加わっても、命令を出す側のコードを変更なしで攻撃できます。周囲への影響を最小限に抑えながら、新しい機能を追加できる設計です。柔軟性の高いシステムを作るために、プロのエンジニアが多用する技術です。

 

ここまで取り上げた要素を合わせてオブジェクト指向の3原則・3要素と呼びます。

 

抽象化を含むこともある

今までお話しした3原則に共通の性質を抜き出す作業である抽象化を加えることもあります。抽象化とは、共通する性質や振る舞いを抜き出し、必要な情報だけを扱えるようにする考え方です。勇者・魔法使い・パラディンをすべて「キャラクター」として扱い、共通する行動だけをまとめるイメージです。

 

抽象化を行うとコード変更による影響力を調整しやすくなり、仮に問題が起きても特定の変数のみの影響に抑えることができます。カプセル化の一部として説明することも多いですが、独立して紹介している教材もあるので、簡単に紹介しました。

 

実務で活かせるオブジェクト指向のコーディングテクニック

実務で活かせるオブジェクト指向のコーディングテクニック

 

コードを読むときはクラスの役割を特定する

基本の考え方を理解したところで、実務で活かす際の注意点をいくつか紹介します。まずはすでに組まれているソースコードを読むときの注意点です。

 

何千行もある複雑なコードを前にすると、誰でも迷子になります。まずは、ファイル名やクラス名を見て「何の設計図か」を確認してください。設計図の目的がわかると、全体の流れが見えやすくなります。

 

わかりやすい設計では、1つのクラスには1つの役割を割り当てていることが多いです。なので、クラスごとに何が書かれているか把握できればプログラムの全体像も把握しやすいでしょう。

 

丁寧な現場では、クラスの役割が日本語で解説されていることもあります。大枠の役割を頭に入れてから、細かい処理を読み進めていくとスムーズです。焦らずに、オブジェクトの関連性を紐解いていきましょう。

 

コードを書くときは1クラスに1つのことを書く

次に、コードを書くときの注意点です。コードを書く際は必ず1つのクラスに1つの要素のみを盛り込みましょう。

 

オブジェクト指向において重要な原則の一つに、単一責任の原則というものがあります。1つのクラスは一つの責務を持つべきだ、という意味です。今から作るクラスにどんな動作をさせたいか、どんな目的でクラスを作るのか具体的に考えてから作業をしましょう。

 

この1クラスに1つの要素という原則を守らずなんとなくコードを書き始めると、ほかのプログラムに転用しづらくなり、オブジェクト指向のメリットである再利用性が大幅に下がってしまいます。1つのクラスに様々な機能が盛り込まれると、修正が難しくなるだけでなく、プログラムが正常に機能しなくなる可能性が大きく上がります。必ずクラスに搭載したい機能を具体的に考えたうえでコーディングを始めましょう。

 

一歩リードしたい人向けのおすすめ書籍

書籍名

著者

価格(税込み)

購入リンク

なぜ,あなたはJavaでオブジェクト指向開発ができないのか

アクロクエストテクノロジー株式会社

小森裕介

2,398円

https://www.amazon.co.jp/o/ASIN/477412222X

新わかりやすいJava オブジェクト指向徹底解説

川場隆

3,278円

https://amzn.asia/d/0cLYvNwB

 

なぜ,あなたはJavaでオブジェクト指向開発ができないのか

オブジェクト指向を使う言語の代表格であるJavaの習得を行いながら、オブジェクト指向の基礎から実践への橋渡しをしてくれる良書です。2004年発売のため、記載されているコードそのものは古めかしいものの、オブジェクト指向の考え方の根幹は現代にも生かせる内容です。Javaに限らず、他の言語にも応用できる内容なのもおすすめポイント。研修を受けたけれど、文法や考え方がイマイチピンと来ていない若手エンジニアに最適な1冊です。

 

関連記事

Javaの求人数・案件数の動向

 

新わかりやすいJava オブジェクト指向徹底解説

こちらもJavaをベースにオブジェクト指向を学ぶ書籍ですが、前者と比べて図解が多く、視覚的に学べます。文字だけの説明で挫折しかけている人に適しています。基礎知識を体系的に整理し直す際に役立つ内容です。学生向けに書かれた本なので文章の解説もわかりやすく、例外処理やラムダ式など現場でもよく使う応用処理も学べる本です。

 

まとめ

オブジェクト指向は、システム開発をスムーズに進めるための便利な道具です。概念を一度理解すれば、様々なプログラミング言語の習得が簡単になります。この記事ではRPGのパーティーメンバーに例えてお話ししましたが、少しでもオブジェクト指向の考え方がわかれば幸いです。よりじっくり学びたい場合は、Javaなどオブジェクト指向を使った言語をベースにした書籍を読んでみるとより学びが深まるはずです。日々の実務や研修のストレスを減らして、エンジニアとしての自信に繋げていきましょう!

Recommended
おすすめコンテンツ

【エンジニアの投資傾向が明らかに】エンジニアのAI関連株保有率37.0%、非エンジニアより 20.5ポイント高い結果に【職種によって異なる投資スタイルと成果を調査】~技術者視点が生む独自の投資戦略が、比較調査で明らかに~

【エンジニアの投資傾向が明らかに】エンジニアのAI関連株保有率37.0%、非エンジニアより 20.5ポイント高い結果に【職種によって異なる投資スタイルと成果を調査】~技術者視点が生む独自の投資戦略が、比較調査で明らかに~

株式会社キッカケクリエイション (本社:東京都渋谷区、代表取締役:川島 我生斗)は、現在、個別株の金融商品へ投資をしているITエンジニアと非エンジニア各200名を対象に、エンジニアと非エンジニアの金融投資に関する比較調査を実施しましたので、お知らせいたします。

調査リリース
【年収600万円超え高年収エンジニアの時間の使い方とは】7割以上が、年収向上のため時間の使い方を意識、 平日・休日問わず「スキル学習」に最も時間を投資~キャリアアップに直結する“成功の時間術”が明らかに~

【年収600万円超え高年収エンジニアの時間の使い方とは】7割以上が、年収向上のため時間の使い方を意識、 平日・休日問わず「スキル学習」に最も時間を投資~キャリアアップに直結する“成功の時間術”が明らかに~

株式会社キッカケクリエイション (本社:東京都渋谷区、代表取締役:川島 我生斗)は、年収600万円以上のITエンジニア400名を対象に、高年収エンジニアの時間の使い方に関する調査を実施しましたので、お知らせいたします。

調査リリース
婚活市場で注目のITエンジニア、その魅力と婚活戦略を徹底解説!

婚活市場で注目のITエンジニア、その魅力と婚活戦略を徹底解説!

「出会いがない」と悩むITエンジニアの婚活事情とは?婚活市場でITエンジニアは安定収入や将来性の観点から人気な職業です。ご自身の強みを活かし、忙しい中でも婚活を成功させる戦略的なポイントを解説します。

サービス紹介
サーバーエンジニアの年収はどのくらい?キャリアパスや将来性も詳しく解説

サーバーエンジニアの年収はどのくらい?キャリアパスや将来性も詳しく解説

サーバーエンジニアは専門性の高い仕事ですが高年収が期待できます。将来性も明るいエンジニア職です。この記事では年収を上げる方法やキャリアパスの選び方、未経験からサーバーエンジニアになる方法などを詳しく紹介します。

職種紹介
フロントエンドエンジニアの年収を徹底解説!おすすめのスキルと資格も紹介

フロントエンドエンジニアの年収を徹底解説!おすすめのスキルと資格も紹介

フロントエンドエンジニアの平均年収は高水準であり、スキルアップすれば年収1,000万円以上を稼ぐこと可能です。本記事では、フロントエンドエンジニアが年収を上げる方法や将来性などについて解説します。

職種紹介
サーバーサイドエンジニアの年収は?キャリアパスや将来性も詳しく解説

サーバーサイドエンジニアの年収は?キャリアパスや将来性も詳しく解説

サーバーサイドエンジニアの年収は経験年数やスキルによって差がありますが、600万円前後が平均です。本記事では年収アップの方法や必要なスキルなどについて詳しく解説します。

職種紹介

Point Topics
ポイント獲得トピック

ITRENDクイズ

情報収集を効率化するChrome拡張機能とは?

獲得ポイント20ポイント

ITRENDクイズ

【実態調査】エンジニアの「技術志向」が表れる人気の投資先とは?

獲得ポイント20ポイント

ITRENDの活用方法を紹介させてください!