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

削除された内容 追加された内容
rvv
タグ: 手動差し戻し
4行目:
== オブジェクト指向の来歴 ==
[[ファイル:Alan Kay (3097597186) (cropped).jpg|サムネイル|222x222ピクセル|Alan Kay]]
オブジェクト指向(''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]]を標準[[モデリング言語]]として採用し[[統一モデリング言語|UML]]は、[[オブジェクト指向準拠のソフトウェア設計およびシステム設計工学]]に準拠したもスタンダードに位置付けらとして発表さている
[[OOPSLA]]中心の振興に伴って[[ソフトウェア工学]]視点からのオブジェクト指向研究も盛んになり、産業プログラミング界隈の主流であった構造化(''structured'')分野に倣うようにして、オブジェクト指向設計(OOD)オブジェクト指向解析(OOA)[[オブジェクト指向モデリング]](OOM)といった科目が立ち上げられた。それらの研究は[[形式手法]]の確立に繋げられて1991年に[[Booch法|ブーチメソッド]]と[[オブジェクトモデル化技法]]、1992年に[[オブジェクト指向ソフトウェア工学]]が発表され、いずれも[[形式言語]]化されていたのでオブジェクトモデリング言語という総称用語を生み出した。上記三種の考案者([[スリーアミーゴス]])は、後のIBMブランドになる[[ラショナル|ラショナルソフトウェア]]で合流して[[統一モデリング言語]](UML)を構築するに到り、1995年のOOPSLAで初回発表した。
 
1989年には[[IBM|IBM社]]、[[アップル (企業)|アップル社]]、[[ヒューレット・パッカード|ヒューレットパッカード社]]、[[サンマイクロシステムズ|サンマイクロシステムズ社]]、[[アメリカン航空]]などの11社がコンピュータ産業共同事業団体[[Object Management Group|OMG]](Object Management Group)を設立した。OMGの目的は、企業システムネットワークの基盤になる[[分散コンピューティング]]を構築するための基礎要素になる分散オブジェクト設計の標準化を図ることであった。ここでのオブジェクトもデータとメソッド(=コード)の組み合わせと定義されていたので、この業務用システムないしネットワークの構築を目的にした技術アーキテクチャも人々の共通認識としてオブジェクト指向にそのまま包括された。1991年に分散オブジェクトの規格パラダイムとなる[[CORBA]]が公開された。1997年に[[Object Management Group|OMG]]は前述の[[統一モデリング言語|UML]]を標準[[モデリング言語]]として採用し、[[統一モデリング言語|UML]]はオブジェクト指向準拠のソフトウェア設計およびシステム設計のスタンダードに位置付けられた。
 
==オブジェクト指向の分野==
21 ⟶ 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}} - 哲学分野
80 ⟶ 79行目:
 
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年頃 ====