OO厨厨トレイン

~オブジェクト指向の現在過去未来~

オブジェクトの広場

田中 恒,佐藤 匡剛,菅野 洋史,大村 伸吾

Caution!!

オブジェクト指向の歴史という大それたテーマを扱っています。いろいろ間違えや大言壮語等あると思いますが、、、スルーせずにガンガン突っ込みください。ね。

OOかつエンタープライズ中心史観という立場を取っているため、IT業界における重要な出来事をすっ飛ばしている可能性があります。おそらくこれらの出来事もすべて確実にリンクしているのでしょう。

いろいろご容赦ください

このスライドの企画書..

「過去が希望をくれる」

最新の技術を追うことも大事ですが、過去を振り返り 自分達の立ち位置を確かめることも重要ではないでしょうか。 オブジェクトの広場のナビケートで、日本におけるOOの過去、 現在の世界の潮流、OOの未来へ辿る旅にでましょう。

時の列車デンライナー 次の駅は過去か?未来か?(OPナレーション)

自己紹介

オブジェクトの広場

株式会社オージス総研「オブジェクトの広場」の活動開始は前世紀末(1998年)にまで遡ります。当時は、日本のオブジェクト指向コミュニティを立ち上げてやろうという志で設立されました。

現在は、月に一度、オブジェクト指向関連の話題を取り扱うWebマガジンを発行しています。ネタはいつでも募集中!

自己紹介

佐藤 匡剛

菅野 洋史

大村 伸吾

旅の準備

オブジェクト指向って何

言語パラダイムからスタートして用法が拡大してきている。 ここでは敢えて区別しない!!

もくじ

OO厨々トレイン

現代編

佐藤 匡剛

オブジェクトの広場

http://ameblo.jp/ouobpo

Part1(現代)

オブジェクト指向を取り巻く現在の状況

DI + AOP

DI(依存性の注入)

DI + AOP

AOP(アスペクト指向プログラミング)

⇒ Java EE 5(EJB 3)も批判を受け入れて軌道修正した

サービス指向アーキテクチャ

オブジェクトからサービスへ

ドメイン駆動設計

オブジェクト指向の大本命

DDDパターン

OO厨々トレイン

過去編

菅野 洋史(yojik)

オブジェクトの広場

http://d.hatena.ne.jp/yojik

ここからは歴史をさかのぼっていきます

無理やり歴史区分に当てはめる

Part2(90年代末期-00年代前半)

近代編 ~J2EEとアジャイル時代~

エンタープライズ分野ではJavaが主流の言語になった。 ベンダーによるアプリケーションサーバからデータベース、場合によっては開発プロセスまでを含めた垂直統合モデルが誕生した。

またそれとは相反する流れとしてアジャイルな開発方法論が提唱された

JavaEE(J2EE)の歴史

日本でのJ2EE(JavaEE)開発スタイル

開発プロセス(RUP)の導入

Javaとフレームワーク

Strutsの普及

Patterns of Enterprise Application Architecture

PofEAAは大きなマイルストーン

モデリングブーム

UMLの普及によりOOモデリングが流行

実際案件で利用された例は...

アジャイルブーム

重厚長大なプロセスに対するアンチテーゼ

アジャイルブーム

Extreme Programing(XP)

オープンソースブーム

オープンソースが世界に認知されたのもこの時代

Part3(90年代後半)

近世編 ~コンポーネントと開発方法論時代~

Part3(90年代後半)

近世編 ~コンポーネントと開発方法論時代~

90年代後半、開発方法論は統一への道を歩む。 またソフトウェア業界の永遠の夢であるソフトウェアの部品化について様々な試みが行われた。 JavaやRuby、Pythonといったオブジェクト指向言語の登場時期でもある

コンポーネント指向の時代

1990年代の業界の話題はコンポーネントと分散オブジェクト

今(00年代後半)の技術の伏線はこの頃にある!

Javaの登場

1995年Javaが正式リリースされた

UMLの登場

1996年にver0.9が登場

開発プロセスの誕生

UMLの登場後、開発プロセス(RUP)が生まれた

パターン運動

開発プロセスとは別の流れとしてパターン運動があった

基本理念は、コンピュータ・ユーザーが自分自身のプログラムを書くこと

パターン運動

パターン運動のひろがり

日本でのパターン運動

デザインパターン等が紹介された

パターン運動は成功したか

次代への伏線

Perl(1987),Ruby(1993?)やPython(1991)、PHP(1995)といった高機能スクリプト言語が広く認知された

Part4(90年代前半)

中世編 ~統合開発環境の時代~

Part4(90年代前半)

中世編 ~統合開発環境の時代~

90年代初めは、統合開発環境がリリースされ開発手法が大きく変わりつつあった。またGUIが一般化した時期であり、ビジュアルプログラミングに期待がもたれていた。

商用ビジュアル統合開発環境の登場

Next InterfaceBuilder

Objective-CはSmalltalkの影響を受けて、VisualWorksはNextの影響を受けるというループがある

統合開発環境の時代

InterfaceBuilderの影響を受けたIDEの登場

部品化とオブジェクト指向

最初期のOOはGUIライブラリとセットで語られていた

IoCやフレームワークという言葉もこの時代(のちょっと前)に生まれた

再利用可能な部品という意味でのクラスライブラリや、部品を動作させる枠組みとしてのフレームワークの実例としては最もわかりやすい

オブジェクト指向言語 in ビジネス案件

例:VisualWorksによる日本のビジネス案件

海外では金融、軍事、半導体などの業界でロジックを含めた案件例が多かった

日本では確かに「別にVBでいいじゃん」的な開発が大半であった。

オブジェクト指向はマイノリティだった

九大病院の失敗もこの頃

開発方法論の誕生

オブジェクト指向言語にあった開発手法が強く求められた

開発方法論の誕生

開発方法論が重視された理由

開発方法論の乱立

UML関係の書籍をあさると90年代初頭はまさに戦国時代

開発方法論の乱立

二つの流れ

当初、日本では構造派が重視され、振る舞い派はあまり紹介されなかった

開発方法論の流派

大島さんの日記に書かれていたumejavaさんコメント

http://d.hatena.ne.jp/squeaker/20050208#c1107958142

OMT, Booch <-> RDD, OBA, OOSE, OORAM などなどこのような手法の違いは、彼らがネイティブとしていたプログラミング言語によって生まれてきたといって、ほぼ間違いないと思います。ADA, C++ vs Smalltalk という図式が裏にあります。UMLは前者の人たちが大きな貢献をして出来ていったものと思います。
後者は長い間、大多数のモデラーから、「図も描かない野蛮な人たち」とさげすまれてきたのですが、Kent BeckのXP伝導により、今ではある程度の市民権を得ることとなったのです。

ソフトウェアの再利用性とオブジェクト指向

この頃からオブジェクト指向言語パラダイムを語る「言葉」が変わる

どちらにしろ、この時代の主流はDOAでウォーターフォール

サクサクSmalltalkとか

Part5(80年代後半)

古代編 ~AI研究時代~

Part5(80年代後半)

古代編 ~AI研究時代~

オブジェクト指向言語の日本への伝達の時代

オブジェクト指向の黎明期(1980年代)、日本に最初のオブジェクト指向を伝えたのはLispハッカーだった!!

日本への輸入1

日本に最初にオブジェクト指向を体系的に紹介されたのは

和田研究室のことも乗せておく。(あとでかく)

日本企業でのオブジェクト指向

富士ゼロックス、富士ゼロックス情報システム

OO関連の人材を輩出

以下のような研究がおこなわれていた

Star/JStar

当時最強のオブジェクト指向環境

この時代はAI研究の時代だった

どちらにしろ、この時代のビジネスの主流はDOAでウォーターフォール

Part6(70年代-80年代)

先史時代編 ~黎明期~

Part6(70年代-80年代)

先史時代編 ~黎明期~

オブジェクト指向誕生の時代。現在の我々から見れば伝説と神話の時代

オブジェクト指向言語の誕生

Simula(1968)

オブジェクト指向言語の誕生

Smalltalk(1971,1972,1980)

オブジェクト指向言語の誕生

C++(1979,1983)

オブジェクト指向言語の誕生

Objective-C(1983)

オブジェクト指向における二つの流れ

静的と動的

この流れが、現在のプロセスや言語に影響を与えている。(と思う)

この二つの流れがずっーと尾を引いているのだ

なお、当初「オブジェクト指向」は、この“オブジェクトへのメッセージ送信”を意味するものであったが、後に C++ の設計者であるビアルネ・ストラウスラップが 1986年に発表した“抽象データ型のスーパーセット”という「カプセル化、継承、多態性」に代表される考え方に置き換えられてゆくことになる。現在は、両者をミックスした概念で語られることが多く、これが「オブジェクト指向」を難解なキーワードにしてしまう原因のひとつとも考えられる。また、“オブジェクト指向プログラミング言語”に2つの元祖があるのはこうした背景による(後者の「オブジェクト指向」の立場での元祖は SIMULA )。

初期オブジェクト指向にあった共通概念

静的OO言語でも動的OO言語でも共通のテーマがある

OO厨々トレイン

未来編

大村 伸吾

オブジェクトの広場

Part7(未来編)

オブジェクト指向から見えてくる近未来!?

DDDの発展形としてのDSL

背景

DDDの発展形としてのDSL

要求される技術

関数型言語の力をオブジェクト指向言語に取り込む

以下のような力をもった言語が必要になる

オブジェクト指向の言語と関数型言語の特性をもった言語が望ましい。 Scalaなど

分散処理から分散プログラミングへ

背景

分散処理から分散プログラミングへ

必要となる技術

分散処理から分散プログラミングへ

ちなみに

アクター理論はオブジェクト指向の影響をモロに受けています

Part8(まとめ) ~時代は廻る~

過去の人たちも同じような問題に同じように悩んでた!! それを知り引き継いで先に進もう

ありがとうございました

突っ込み大歓迎でございます!!

Thanks To ...

参考書籍:現在編

参考URL:現在編

Martin Fowler,"Inversion of Control コンテナと Dependency Injection パターン"
http://kakutani.com/trans/fowler/injection.html
Gregor Kiczales他 "Aspect-Oriented Programming",ECOOP,1997
http://www.parc.com/research/projects/aspectj/downloads/ECOOP1997-AOP.pdf
Domain-Driven Design
http://domaindrivendesign.org/

参考書籍:過去編

参考URL:過去編

オブジェクト指向の概念の発明者は誰ですか?
http://d.hatena.ne.jp/sumim/20040525/p1
脇見運転 [Smalltalkから学んだこと]タグ
http://d.hatena.ne.jp/suikan/searchdiary?word=%2a%5bSmalltalk%a4%ab%a4%e9%b3%d8%a4%f3%a4%c0%a4%b3%a4%c8%5d
思い出のJStarワークステーション
http://hp.vector.co.jp/authors/VA030421/ym030701.htm
Alto、Star、Smalltalk、Lisa、Mac、Win の関係をはっきりさせよう
http://sumim.no-ip.com:8080/collab/19
Alto、Star、Smalltalk、Lisa、Mac 年表
http://sumim.no-ip.com:8080/collab/24
UML導入に関する考察 第1回 UMLの現状
http://www.thinkit.co.jp/free/compare/12/1/

参考書籍:未来編

参考URL:未来編

John Hughes, "Why Functional Programming Matters," 1984
http://www.md.chalmers.se/~rjmh/Papers/whyfp.html [邦訳]
Martin Fowler, "Language Workbenches: The Killer-App for Domain Specific Languages?," 2005
http://martinfowler.com/articles/languageWorkbench.html
Martin Fowler, "Domain Specific Languages."
http://martinfowler.com/dslwip/
アクターモデル(Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB
The Scala Programming Language
http://www.scala-lang.org/