2020年1月20日どうも、iOSエンジニアで、プログラミングスクール「テクテック」を主宰しているクウルス(@Qoo_Rus)と申します。エンジニアとしてお仕事をされている方で「オブジェクト指向プログラミング」という言葉を聞いたことのない方はおそらくいないでしょう。私もエンジニアになるための勉強をスタートして間もない頃に、オブジェクト指向プログラミングという言葉に出会いましたが、Google先生にオブジェクト指向プログラミングの意味を聞いてもイマイチピンとこない説明ばかりでした。オブジェクト指向プログラミング言語の概念は、大きく分けて2つの解釈が存在して、2つの解釈の境界がしばしば曖昧に語られてしまうので、訳わからん説明になりやすいのです。アラン・ケイが初めて「オブジェクト指向」という言葉を創ったときの解釈ビャーネ・ストルヴストルップが「オブジェクト指向」の考え方を再定義したときの解釈という2つの解釈が存在しているのですが、どちらの解釈も混ぜてしまうと意味わからん感じになります。この記事では、主にプログラミングを勉強して間もない方に向けてオブジェクト指向プログラミングで解釈の分かれない共通部分オブジェクト指向プログラミングの2つの解釈の区別を順番に解説していくことにしましょう。オブジェクト指向プログラミングの解釈は要チェック解釈の分かれない共通項「クラス、オブジェクト」まず、オブジェクト指向プログラミングを語る上で解釈の分かれない部分について解説します。オブジェクト指向プログラミング言語に分類されるものはクラスオブジェクトという言語仕様を備えています。Simulaまだ世の中にオブジェクト指向プログラミングという概念が生まれる前に、Simulaというプログラミング言語がありました。Simulaは広く普及することのなかった言語ですが、その後の言語開発に多大な影響を与た言語です。クラスとオブジェクトを初めて備えた言語であり、オブジェクト指向プログラミングという言葉を計算機科学者のアラン・ケイが生むきっかけになりました。クウルスSimulaがオブジェクト指向プログラミングの草分け的な存在Simulaに影響されてできた2つの言語から概念が作られたSimulaから影響を受けて開発されたプログラミング言語がいくつか存在するのですが、その中でも代表的な言語が2つあります。https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A9%E3%83%B3%E3%83%BB%E3%82%B1%E3%82%A4)オブジェクト指向プログラミングという言葉を創ったのはSmalltalk開発者のアラン・ケイです。現在主流になっているオブジェクト指向プログラミングの解釈は、提唱者であるアラン・ケイが定義した意味とは異なっています。システムが体現した「パーソナルコンピューティングに関わる全てを『オブジェクト』とそれらの間で交わされる『メッセージ送信』によって表現すること」を意味していた。設計を通じて整理し発表した「『継承』機構と『多態性』を付加した『抽象データ型』のスーパーセット」という考え方として広く認知されるようになった(カプセル化、継承、多態性)。現在は、両者の渾然一体化した曖昧な概念として語られることが多い。https://ja.wikipedia.org/wiki/Smalltalk)クウルス提唱者アラン・ケイのことが語られることが多いのに、現在の主流の考え方と違うのがややこしいポイントSmalltalk由来の言語(メッセージパッシング重視の言語)iOSアプリ開発の現場で現在も使われているObjective-Cが代表的なSmalltalk由来の言語です。私は詳しくないのですが、他にもSelfというプログラミング言語もSmalltalk由来とのこと。クウルスこちらはアラン・ケイの解釈で考えた方がいいかもC++の影響を受けている言語(カプセル化、継承、多態性の原則を踏まえた言語)C++における考え方が現在主流になっているだけあって、有名な言語が数多くあります。iOSアプリ開発に使われ、私が普段書いている言語であるSwiftもどちらかといえばC++側です。(Objective-Cの影響も受けていますが、メッセージパッシングを重視していません。)他にもJavaPythonRubyJavaScriptC#Kotlinなどがあります。オブジェクト指向プログラミングの解釈は要チェックオブジェクト指向プログラミングの意味を理解するのが難しい理由についてご紹介していきました。大きく分けて二つの解釈が存在し、主流となった解釈が提唱者のものとは異なるのがややこしさの大きな原因です。2つの解釈を混ぜていたのだとしたら要注意です。どの文脈で相手がお話しているのか、自分と相手の解釈にギャップがないかどうか、必ずチェックしながらやり取りすると良いでしょう。Smalltalkを動かしてみました。2020スポンサーリンクプログラミングを学びたい方へ!2020年1月から3月までの期間限定でプログラミング指導を100人に行う企画をやっています!!エンジニア/プログラミングスクール講師クウルス京都大学を中退してベンチャー企業の経営をしている26才エンジニア。スポーツ動画分析アプリ「GENSEKI」の開発に取り組みながら、プログラミングスクール「TEKUtech(テクテック)」を主催。趣味はゲーム(特に格闘ゲーム)と音楽(特にエレクトーンとゲーム音楽)で、そちらについてもブログをちょこちょこ。q3taskえれぴこ!どうも、アプリエンジニアで、京都のプログラミングスクールを主催しているクウルス(@Qoo_Rus)です。q3taskえれぴこ!どうも、iOSエンジニアでプログラミングスクール「テクテック」を主宰している、クウルス(@Qoo_Rus)です。