「オブジェクト指向」の版間の差分

削除された内容 追加された内容
rvv
タグ: 手動差し戻し
UML関連を修正
6行目:
オブジェクト指向(''object-oriented'')という言葉自体は、1972年から80年にかけてプログラミング言語「[[Smalltalk]]」を開発した[[ゼロックス|ゼロックス社]][[パロアルト研究所]]の計算機科学者[[アラン・ケイ]]がその言語設計を説明する中で初めて生み出されている<ref name="EarlyHistoryOfSmalltalk">{{Cite web|url=http://worrydream.com/EarlyHistoryOfSmalltalk/|title=The Early History Of Smalltalk|accessdate=2019-01|publisher=}}</ref>。本人の述懐によると、大学院時代のケイがプログラミング言語「[[Simula]]」に感化されて日夜プログラミング・アーキテクチャの思索に耽っていた1967年頃、今何をしているのかと尋ねてきた知人に対して「''object-oriented programming''だよ」と咄嗟の造語で答えたのが発端だという。このオブジェクト指向が知名度を得るようになったのは1981年頃からであり、当時のマイコン専門誌[[バイト (雑誌)|BYTE]]によるSmalltalkの誌上紹介が契機になっている。オブジェクト指向の中でケイ自身は[[メッセージング]]という考え方を重視していたが、世間の技術的関心は[[クラス (コンピュータ)|クラス]]と[[インスタンス]]の仕組みの方に集まり、オブジェクト指向の解釈はケイの考えとは異なる方向性で推移していった。[[クラス (コンピュータ)|クラス]]を初めて導入した言語はSimulaの1967年版だったので、こちらも後付けでオブジェクト指向の源流に位置付けられている<ref>[http://kristennygaard.org/FORSKNINGSDOK_MAPPE/F_OO_start.html How Object-Oriented Programming Started]</ref>。Simulaに結び付けられたオブジェクト指向と、Smalltalkで提唱されたオブジェクト指向の性格は全く異なるものだったので、双方の解釈に数々の齟齬を生じさせている<ref>{{Cite web|url=https://www.cs.cmu.edu/~charlie/courses/15-214/2014-fall/slides/25-history-oo.pdf|title=OO History: Simula and Smalltalk|accessdate=2019-02|publisher=}}</ref>。1983年に計算機科学者[[ビャーネ・ストロヴストルップ]]がSimulaのオブジェクト指向をモデルにした言語「[[C++]]」を公開し、このC++が人気を博した事でオブジェクト指向は本来のSmalltalkではなく、後付けのSimulaスタイルの方で認識されるようになった。
 
1986年から[[Association for Computing Machinery|ACM]](計算機協会)が[[OOPSLA]](オブジェクト指向会議)を年度開催するようになり、オブジェクト指向は[[コンピュータサイエンス]]の一つのムーブメントになった。[[OOPSLA]]初期のチェアパーソンは、[[Smalltalk]]が生まれた[[ゼロックス|ゼロックス社]][[パロアルト研究所]]のフェローが務めることが多かった。Smalltalkは正確にはプログラミング言語と[[グラフィカルユーザインタフェース|GUI]]運用環境を合わせた[[フレームワーク]]であり、[[Alto|ゼロックスAlto]]機上の[[オペレーティングシステム|OS]]または[[ミドルウェア]]として開発されていた。Smalltalkは70年代の[[アラン・ケイ]]が構想していた[[ダイナブック]]のための[[グラフィカルユーザインタフェース|GUI]]環境でもあった。[[ダイナブック]]はパーソナルコンピュータの原型に位置付けられているものである。[[Alto|ゼロックスAlto]]は[[GUI]]を初めて汎用的にサポートしたコンピュータと[[オペレーティングシステム|OS]]であり、かの[[スティーブ・ジョブズ|スティーブ・ジョブス]]を啓発して[[Macintosh]]のモデルになったことはよく知られている。こうした背景からオブジェクト指向は、上述のプログラミング云々よりも、[[グラフィカルユーザインタフェース|GUI]](グラフィカル・ユーザー・インターフェース)を始めにした当時の先進的な[[ソフトウェア設計|ソフトウェアデザイン]]と[[ソフトウェアアーキテクチャ]]のための開拓的なモデル理論として受け止められる方が好まれた。[[デザインパターン (ソフトウェア)|デザインパターン]]、[[リファクタリング (プログラミング)|リファクタリング]]、[[モデル駆動工学]]、[[ドメインモデル]]、[[ドメイン固有言語]]、[[アジャイルソフトウェア開発]]といった数々のトピックが[[OOPSLA]]からまれている。具体的に応用された最初の例は、[[データベース]]開発と[[NEXTSTEP|NeXTSTEP]]などの[[オペレーティングシステム]]開発および各種システムに向けた[[ユーザーインターフェース]]デザインであ設計が最初の活用対象になった。
 
1989年には[[IBM|IBM社]]、[[アップル (企業)|アップル社]]、[[ヒューレット・パッカード|ヒューレットパッカード社]]、[[サンマイクロシステムズ|サンマイクロシステムズ社]]、[[アメリカン航空]]などの11社がコンピュータ産業共同事業団体[[Object Management Group|OMG]](Object Management Group)を設立した。OMGの目的は、企業システムネットワークの基盤になる[[分散コンピューティング]]を構築するための基礎要素になる分散オブジェクト設計の標準化を図ることであった。ここでのオブジェクトもデータとメソッド(=コード)の組み合わせと定義されていたので、この業務用システムないしおよびネットワークの構築を目的にした技術アーキテクチャも人々の共通認識としてオブジェクト指向のカテゴリそのまま包括さ入れられた。1991年に分散オブジェクトの規格パラダイムとなる[[CORBA]]が公開された。また1997年に[[Object Management Group|OMG]]が標準モデリング言語として採用した[[統一モデリング言語|UML]]は、[[オブジェクト指向準拠のソフトウェア工学]]設計およびシステム設計のスタンダード準拠し位置付けられものとして発表されている
 
==オブジェクト指向の分野==
19行目:
* [[オブジェクト関係データベース]] - 1990年代から
* [[オブジェクト指向分析設計]] - 1990年代から ←({{仮リンク|オブジェクト指向デザイン|en|Object-oriented design|label=オブジェクト指向設計}}、[[オブジェクト指向モデリング]])
* [[統一モデリング言語|UML]] - 1997年から ←([[Booch法|ブーチメソッド]]、[[オブジェクトモデル化技法]]、[[オブジェクト指向ソフトウェア工学]] - 1990年代から
* [[統一モデリング言語|UML]] - 1997年から ←([[Booch法|ブーチメソッド]]、[[オブジェクトモデル化技法]])
* {{仮リンク|オブジェクト指向マネージメント|en|Object-oriented Management|label=}} - 2000年代から
* {{仮リンク|オブジェクト指向存在論|en|Object-oriented ontology}} - 哲学分野
27 ⟶ 26行目:
 
=== コンセプト ===
1970年代に[[ゼロックス|ゼロックス社]][[パロアルト研究所]]で誕生し、1981年頃から知名度を得るようになったオブジェクト指向(''object-oriented'')は同時に発案者である[[アラン・ケイ]]の手を離れて[[プログラミングパラダイム]]から[[ソフトウエア工学知識体系|ソフトウェア工学]]分野へと認識拡大し、1986年以降は[[Association for Computing Machinery|ACM]](計算機協会)開催の[[OOPSLA]](オブジェクト指向会議)が中心的な担い手の役割を果たしていた。70年代から80年代前半にかけてのオブジェクト指向は[[Smalltalk]]言語仕様の一環としてそれに当たることで一定の理解を得られたが、80年代後半以降は事情が異なっている。

ここではアラン・ケイの語るオブジェクト指向についてをまとめる。
 
==== 1989年頃 ====
79 ⟶ 80行目:
 
2003年にとある知人からオブジェクト指向の意味を尋ねられた[[アラン・ケイ]]はこのようにメール上で答えている<ref>{{Cite web|url=http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en|title=Dr. Alan Kay on the Meaning of “Object-Oriented Programming”|accessdate=2019-1|publisher=}}</ref>。{{Quotation|''OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.''
<br>(僕にとってのオブジェクト指向とは、メッセージング、ステートプロセスの局所保持かつ保護かつ隠蔽、徹底的な遅延バインディング、なんとこれだけの意味だった。)|Alan Kay}}
 
「''messaging''」「''state-process''」「''late-binding''」のうち一番目と二番目は、''object-oriented''と同様にケイの造語で注意が必要ようである。一番目はオブジェクト同士のコミュニケーションを指しており[[メッセージパッシング]]に類似の言葉であるが、プログラム用語的にはケイの造語である。二番目のステートプロセスは状態処理が適訳と思われるが、元々が造語であるため詳細は漠然としている。
 
==== 2020年頃 ====