http://www.sejuku.net/blog/wp-content/themes/voice_child/images/samurai_logo.png 侍エンジニア塾が運営するプログラミング入門者向け学習情報サイト

オブジェクト指向とは何か?わかりやすい例で説明してみた。

井上 慎也
書いた人 井上 慎也


侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!インストラクターの井上(@InoIno_iesa)です。

プログラミングに興味のある方は「オブジェクト指向プログラミング」という言葉を聞いたことがあるのではないでしょうか。

ただ、聞いたことがあっても、なんとなくしか理解していないという方も多いかと思います。

実際、色んな専門用語のカタカナ言葉も出てきますし、難しいプログラムで説明されていることが多いので、混乱するのも無理はないでしょう。

侍エンジニア塾が運営するプログラミング学習コミュニティの侍エンジニア塾Onineでも

「オブジェクト指向って何?」
「なんのためにあるの?」
「どういうものなの?」

といった質問をされることがあります。

そこで、ステップバイステップのシリーズ構成で、順番にできるだけ専門用語を丁寧に噛み砕いて解説をしていきます。

今回は、まず「オブジェクト指向の概念をざっくりつかむ」ということを目指しましょう!

多くの生徒さんの指導を通してウケが良かった例えも踏まえて説明していきます!

〜連載記事一覧!オブジェクト指向について〜
Vol.1 「オブジェクト指向とは何か?わかりやすい例で説明してみた。
Vol.2 「オブジェクト指向のクラスって?メソッドやインスタンスの関係を解説してみた

オブジェクト指向プログラミングとは?

プログラミングは、そもそもプログラムを作ることです。

プログラムを作ることは、コンピュータが理解できる言葉を並べて、プログラマの意図したとおりの順番でコンピュータが動作するようにすることです。

このとき、プログラムをどうやって表現するかということにも様々な種類があり、代表的なものは以下のとおりです。

  • オブジェクト指向プログラミング:「モノ」を組み立てるように表現して、コンピュータに動作をさせる
  • 手続き型プログラミング:上から下まで単調なルールで文章を読むように動作する
  • 関数型プログラミング:数学の関数のイメージでデータに何かしらの処理をして答えを取得するように動作する

現在ではオブジェクト指向言語が主流になっていますので、プログラミングをする上でオブジェクト指向の概念を押さえておくことは非常に重要です。

たとえば、以下のプログラミング言語はすべてオブジェクト指向言語です。

  • さまざまなプラットフォームで動作するJava
  • Webページに動きを与えるRubyPHPJavaScript
  • Mac OSやiOSのアプリ開発で使われるSwift
  • 商用のプログラミング言語として定評のあるC++
  • 意外なところでは、WordやExcelのマクロとして使用されているVBA

JavaやPHPにおけるオブジェクト指向について説明した記事がありますので、JavaとかPHPは分かるんだ!という方には、こちらの記事をお勧めします。

オブジェクト指向のメリット

オブジェクト指向をどのように使うのか、そのイメージを簡単に見てみましょう。

オブジェクト指向は、主に「モノ」と、その「モノができること(役割)」を決めます。

プログラムの中では、「モノA」、「モノB」のように何種類もの「モノ」を用意します。

そして、「モノA」が、「モノB」に対して「モノBができること」をお願いする形で、コンピュータを動作させます。

抽象的で少し分かりづらいと思いますので、例を出して説明しましょう。

例えば、オブジェクト指向プログラミングで「すごろく」を作る場合、

「ゲームマスター」
「プレイヤー」
「すごろく」(プレイヤーコマ、サイコロ、すごろく盤を含む)

というように何種類もの「モノ」を用意して、それぞれの「モノ」や「モノができること(役割)」を表現していきます。

スクリーンショット 2016 06 11 13 41 58

まず、「ゲームマスター」は、「プレイヤーに、(何か)指示できる」ことにします。

「プレイヤー」は、「すごろくに、サイコロを振るように指示できる」ことにします。

オブジェクト指向プログラミングでは、「モノ」の中に「モノ」を入れておいてもよいので、「すごろく」の中に、

「プレイヤーコマ」
「サイコロ」
「すごろく盤」

を作るという表現もできます。

「すごろく盤」は、(プレイヤーに)「サイコロ」を振るように指示されたら「コマ」を移動させることにします。

(高度なすごろく盤で、プレイヤーがサイコロを振るボタンを押したら自動的にコマが移動するイメージです。)

このように、それぞれの「モノ」に意味を与え、「モノができること(役割)」を作っていく考え方が、オブジェクト指向プログラミングです。

意味を与えた「モノ」(ゲームマスターやプレイヤー)という単位で、役割(動作)を決定していければ、わかりやすく開発が進められそうな気がしますね。

オブジェクト指向プログラミングにはさまざまなメリットが有りますが「分かりやすくプログラムを表現できる」というのが最大のメリットです。

オブジェクト指向の原則とは

せっかくですので、少し難しい話も書いておきましょう。

オブジェクト指向には「原則」と呼ばれるものがあります。

  • カプセル化:できるだけ他のプログラムから干渉されないように/他のプログラムに干渉しないようにする仕組み
  • 継承:再利用性を高める考え方
  • ポリモーフィズム:振る舞いを様々に変えられる仕組み

原則については、ここで説明するとボリュームが大きくなってしまいますので、別の記事になっています。ぜひご覧ください!

オブジェクト指向を理解していないことへのデメリットとは

前述したようにオブジェクト指向のプログラミング言語が主流となっている現在、オブジェクト指向を理解することは非常に重要です。

概念を理解せず、なんとなくわかったつもりでは、オブジェクト指向プログラミングをするときに苦しくなります。

簡単なプログラムの改修程度なら、わかったつもりでも対応できるかもしれません。

しかし、自分でクラスやメソッドを追加したり、機能を追加する場合は、オブジェクト指向を理解していなかったら曖昧なままプログラミングをすることになり、うまくいきません。

もし、正常に動作しなかったら、その原因を探し出すことに苦労するでしょう。

そのため、オブジェクト指向については、概念や仕組みをしっかりと把握しておきましょう

オブジェクト指向を理解しておけば、どんなオブジェクト指向言語でも応用できるようになりますので、少し頑張ってみてくださいね!

オブジェクト指向プログラミングをマスターしよう!

オブジェクト指向言語プログラミングでは、「クラス」「メソッド」「インスタンス」を活用することは必須となります。

オブジェクト指向言語を本格的に活用するためには、それぞれの役割を知り、正しく設計することが非常に大切です。

詳しくは、以下の記事で説明していますので、ぜひご覧ください。

オブジェクト指向データベース

オブジェクト指向プログラミングに近い考え方を取り入れたデータベースも開発が進められています。

そのようなデータベースを管理するシステムは、オブジェクト指向データベース管理システム(OODBMS)オブジェクトデータベース管理システム(ODBMS)と呼ばれています。

オブジェクト指向プログラミング言語のデータ構造を採用することで、アプリケーションとデータベースのとの間でオブジェクトを共有できるという仕組みです。

オブジェクト指向プログラミングで大きなデータ(オブジェクト)を取り扱うことになった場合は、オブジェクト指向データベースの採用を検討することになるでしょう。

オブジェクト指向エクササイズ(9つのルール)

オブジェクト指向エクササイズという考え方があります。

詳細を説明すると長くなってしまいますので、9つのルールだけ紹介しますね。

  1. 1つのメソッドにつきインデントは1段階までにすること
  2. else句を使用しないこと
  3. すべてのプリミティブ型と文字列型をラップすること
  4. 1行につきドットは1つまでにすること
  5. 名前を省略しないこと
  6. すべてのエンティティを小さくすること
  7. 1つのクラスにつきインスタンス変数は2つまでにすること
  8. ファーストクラスコレクションを使用すること
  9. Getter, Setter, プロパティを使用しないこと

オブジェクト指向プログラミングを始めてみようという今はまだピンと来ないと思いますが、しばらく開発を進めてから振り返ってみると、このルールは大切!と思えるでしょう。

まとめ

なんとなくオブジェクト指向のメリットはおわかり頂けましたでしょうか?

オブジェクト指向は『モノの関係性を作っていく考え方』ということが分かればスムーズに理解できます。

ぜひオブジェクト指向言語の考え方を理解していただいて、プログラミングができるようになりましょう!

関連記事


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

井上 慎也

井上 慎也

侍エンジニア塾のインストラクター。フリーでWEB制作の受託や自身の事業の傍ら、侍ではWEBプログラミング方法の指導やプログラミング学習コミュニティの運用を行っている。
好きなショートカットキーは、command + w 。愛機はMac Book Pro。ブラウザのタブを大量に開きがち。