いや、まだだから

やまだの仮想庭園 ~ いつか実体の伴う日まで

目次

Blog 利用状況

記事カテゴリ

書庫

日記カテゴリ

リンク

餅は餅屋

ネタ元: Ognac さんの 何か違うぞ

まぁ、ネタ元で挙げられている事例がわかりやすいか、わかりにくいか、例として妥当かそうでないかは置いておきまして < をい

自分だったら、どう説明するかなぁ、と思って、以前、何も知らない新人相手にオブジェクト指向の概念的な説明をしてくれといわれたときの話を思い出しました。

時間がなかったこともあり結構やっつけネタだったのですが、意外とアプローチの違いが見えて面白いなぁ、と。

 

そのときの自分は、オブジェクト指向だからといって「まったく継承のことなんて説明することは考えもつかなかった」ようです。

もう記憶だけになりますが、どんな形の話をしたのかをざっとまとめてみます。


みなさんは、「おいしいお餅を食べたい」って思ったときどうしますか?

餅の作り方を一から手順を追って、勉強していきますか?

もち米から作りますか?じゃあ、水田の確保から始めて、どの時期に種まきをしていつ収穫するかの計画を立て、肥料をやり、害虫を駆除し、刈り取って、そのもち米から餅をついて、……。

これらは、餅を手に入れるためにはすべて事前に必要になってくる作業です。これを一づつ順にこなしていくのが、オブジェクト指向以前のいわゆる「手続き型」といわれるものですね。

 

でも、一人でそれだけのことをすべてやろうと思うのは無理があります。必要な作業といえど、全部自分でやる必要もありませんよね。

もち米の収穫まではお百姓さんに、もちの加工は別の業者さんにお願いすればよいことじゃないですか。

任せられるところは任せていきましょう。お百姓さんからいただいたお米を、業者さんにお渡しすればよいことですよね。

これがいわゆる「モジュール化」の考え方です。

 

でも、さらに考えてみてください。お百姓さんたちに私たちが直接お願いする必要がありますか?

私たちはおいしいお餅を食べたいだけなんです。どうしてお餅の作り方まで気にしないといけないんですか?

お餅の作り方を気にするのはお餅屋さんだけで良いんです。

私たちはお餅屋さんに「おいしいお餅を売ってください」それだけ言えば良いんです。 

餅は餅屋、これが「オブジェクト指向」の考え方なんですよ。

 

では、それで何がよくなるのか考えてみましょうか。

お餅を食べてみて、それがおいしくなかったらどうしましょう?

米が良くないのかもしれません、加工の仕方が悪いのかもしれません。

全部自分で調べますか?それは、「手続き型」の一番非効率な形ですね。

「モジュール化」ができていたとしても、お百姓さんに文句を言うべきか、業者さんに文句を言うべきか、それを判断するためには自分で調べないといけません。

「オブジェクト指向」だったら?お餅屋さんに文句を言えば良いのですよ。

でも、お餅がどうやって作られているか私たちにはわかりませんね。文句を言ってもおいしくなる保証はない?だから、ちゃんと中身の見える「手続き型」が確実?……ちょっと待ってください、「オブジェクト指向」の場合、もっと確実な手段がありますよ。

おいしいお餅を売ってくれる『別の』店から買えば良いだけです。餅屋はいっぱいありますからね。


# リアルで餅屋がいっぱいあるかはどこかに置いとくとしまして < をい(またかよ)

 

当時の私は、継承というよりはインタフェース(とカプセル化)こそオブジェクト指向の真髄だと信じていた気がします。

カプセル化で閉じているからこそ部分最適に集中でき、部分最適が集まって結果として全体最適につながる、という。

そういう意味では、モジュール化の先にオブジェクト指向があるって考え方でまったく違和感がなかったなぁ。

 

と、とりあえず、たらたらとオブジェクト指向について語ってみたところで(笑)、来週末にはオブ熱ですねー。

こんなエントリとはまったく何の関係もなく(苦笑)、わんくまの精鋭たちがオブジェクト指向への熱い思いを語りますっ(^_^)

 

http://www.wankuma.com/seminar/20080405tokyo19/Default.aspx
わんくま同盟 東京勉強会 #19

 

僕は行けるかどうかわからないよー(TーT) < マテ

 

では、そゆことで、ライブ中継でお会いしましょう(笑)

投稿日時 : 2008年3月26日 1:14

Feedback

# re: 餅は餅屋 2008/03/26 1:27 Ognac

BlackBoxのモジュールをどう認識するか..でしょうね
既存の機能を作成者を意識せずに単なる部品とみなす姿勢も必要だな...って最近思えるようになりました。

# re: 餅は餅屋 2008/03/26 1:51 やまだ

Ognacさん、コメントどうもです。

そう、以前は BlackBox は中身がどうなってるかわからないから心配で仕方なかった。
で、オブジェクト指向になるときに、BlackBox の中身を知らなくて問題ないようにインタフェース切りましょうよ、それによって本来の意味での部品化ができるよ、と、そういう話なのかと。

そう考えると、これは要求定義につながっていくなぁ(笑)。

# re: 餅は餅屋 2008/03/26 7:28 さかもと画伯


ライブでこっそり参加します。
ライブであいましょー。

# re: 餅は餅屋 2008/03/26 9:30 IIJIMAS

>僕は行けるかどうかわからないよー(TーT)

リアルの勉強会に行ける可能性もあるということですね!

# re: 餅は餅屋 2008/03/26 9:42 シャノン

よく言われる話ですが、オブジェクト指向には2つの流派があります。
一方はSmalltalkに端を発するもの。Objective-CとかJavascriptはこの流儀を受け継いでいます。
もう一方はC++に端を発するもの。言わずもがなJavaやC#はこっちの系統に連なります。
で、
> 継承というよりはインタフェース(とカプセル化)こそオブジェクト指向の真髄だと信じていた気がします。
というのは、Smalltalk流のオブジェクト指向の説明としてはまったく正しいものです。

# re: 餅は餅屋 2008/03/26 11:43 凪瀬

私も近い意見ですが
「ポリモフィズムと契約に基づくプログラミングがOOPの真髄」
と考えていますね。
設計技術的にはポリモフィズムが理解できて自在に操れるようになると非常に楽しい。

# re: 餅は餅屋 2008/03/26 16:08 IIJIMAS

そういえば本文にコメントしていませんでした。。。

>そういう意味では、モジュール化の先にオブジェクト指向があるって考え方でまったく違和感がなかったなぁ。

「モジュール化」と「オブジェクト指向」の差はなんでしょうか。。。

# re: 餅は餅屋 2008/03/27 1:47 やまだ

みなさん、コメントありがとうございます。

画伯
> ライブであいましょー。
画伯はリアルタイムでのああいうチャットは苦手と見たけど。
途中で、用もないのにコンビニとか行ってなかったっけ?
行けるかどうか、ライブに参加できるかどうか、今のところどっちも未知数だったり。

シャノンさん
オブジェクト指向に流派があるっていうより、その実現方式に流派があるのでは?
概念としては、一つにまとまってて良いものではないかと思うんですけどねぇ。

凪瀬さん
では、OOA や OOD ではどうなんでしょう?
ポリモフィズムは確かに楽しいです……が、意外と使い道がそれほど多くない気もします。

IIJIMASさん
> リアルの勉強会に行ける可能性もあるということですね!
そこにしか興味はないんかい…… orz
だからわたしゃ芸人じゃないんだってば。
> そういえば本文にコメントしていませんでした。。。
いいんです。どーせそういう扱い…… orz
>「モジュール化」と「オブジェクト指向」の差はなんでしょうか。。。
ということは「お前の説明じゃわからん」ってことですね…… orz
トップダウン・ボトムアップのようにトップとボトムの上下関係のあるのが一般の「モジュール化」、対等な関係にある(どちらも上位になり得る)のが「オブジェクト指向」と考えていますが。
#これ、エントリ内容の言い換えなので、エントリでわからなければ、これでもきっとわからないよなぁ…… orz

タイトル
名前
Url
コメント