続・オブジェクト脳

こんにちは

構造化プログラミングになれてしまっている人は、なかなかオブジェクト指向プログラミングには切り替わらないようだ。私もそうだった。構造化言語は、プログラムを構造化することで読みやすくしたものであり、オブジェクト指向も読みやすくしたものである。そのため、オブジェクト指向プログラミングというのは、構造化プログラミングの延長線上にあるはずなのだが、思想が違うためそこにはギャップがあるようだ。

構造化言語は、コマンドを組み合わせるものである。一方、オブジェクト指向とは、オブジェクトと呼ばれるミニシステムに分けて、システマチックにシステムを構成する方法である。構造化プログラミングは、プログラミング自体に視点が置かれているが、オブジェクト指向では、プログラムデザインやモデリングといったことに視点が置かれている。

単にプログラムするという観点から、オブジェクト指向の優位点は見いだせない。なぜなら、オブジェクト指向で組めばオーバーヘッドが存在するからだ。オブジェクト指向でなければ出来ないこともさほど存在しない。オブジェクト指向では、プログラムよりプログラムデザインが重要なのである。オブジェクトというミニシステムをいかにうまくデザインできるか、が重要なのである。

オブジェクトがなぜミニシステムなのかというと、インターフェースと処理、データをすべて持っていて、単体で動くことが出来るからである。すなわち、オブジェクト指向プログラムは、単体で動くことが出来るミニシステムをつなぎ合わせていく手法であり、プログラムそのものは手段であって目的ではない。極端な話、オブジェクト指向ではプログラムをほとんどせずにシステムを作り上げることもあり得る。それにどちらかといえば、いかにプログラムせずに作り上げるかが優れたオブジェクト指向なのである。

オブジェクト指向になれていない人は、なぜ、こんな面倒なことをやるんだ、構造化言語ならもっと簡単に記述できるのに、と言うがそれは正しい。実は、面倒なものは組まなければいいのだ。オブジェクト指向では、プログラムは組むことより利用することが重要である。端的に言えば、ミニシステムの役割を果たすオブジェクトは世界で1つあればよく、他の人はそれを使えばよい。全く同じ物を手間暇かけて組むのはムダである。最先端の技術をやっている人以外の、いわゆる普通のシステムを作る場合は、それをやるためのミニシステムであるオブジェクトは探せばいくらでもある。それを一から作ろうとするから面倒なのであって、作ろうとせず利用すればムダなことはしなくて済む。

だから、実はオブジェクト指向というのはプログラムという観点から入るよりも、公開されていて自由に利用できるオブジェクトのリストを作成し整理し、それを以下に自分が活用できるか、という観点からスタートすべきなのだ。オブジェクトは作るのは難しいが利用するのは簡単であり、要するに利用することによって初めてメリットが得られる仕組みである。

だが、残念なのは構造化プログラム出身の方はどうも利用することよりどうしても作ろうとしてしまうようだ。だから、さまざまな苦労をしているようで、オブジェクト指向は嫌だ、面倒だと思ってしまうのではないだろうか。オブジェクトは利用ということが大事だから、オブジェクト指向ではプログラマーというよりも、モデリングという作業が重要になる。構造化言語に慣れ親しんだプログラマーの方は、なかなかそこが切り替わらないようである。

ではまた

乗り移り人生相談

こんにちは

日経BPのサイトのアクセスランキングでたまたま見つけた島地 勝彦氏の人生相談が興味深い。あまり堅い内容や説教などではなく、ユーモアと知性にあふれるちょっと大人向けな内容になっている。

http://www.nikkeibp.co.jp/article/nba/20090512/151798/

いいかシマジ、平等や民主主義なんてものは人生に何も生んでくれやしないんだ。上質な脳みそに裏打ちされた、えこ贔屓を享受できる人生を歩まなければダメなんだよ。えこ贔屓されるようにならなきゃ一人前とは言えない。皆と同じように行列に並んでいてはいけないんだ」

シバレンさんが言ったようにえこ贔屓されるには上質な脳みそが必要なんだ。上質な脳みそを土台にした人間的な魅力があってこそ、周囲の人間はこの人のために何かしてあげたい、この人に喜んでもらいたいと思う。

上の引用した言葉だけ読んでも何のことかわからないだろう。これらには前後があってこそ意味が理解できる内容だ。とはいえ、前後を読んだら理解できるかと言えば、俺にはまだ人生経験が浅いから、全文を読んでも言葉じりは分かっても、その意味する本質まではよく分からない。そう思うと、自分の未熟さがうらめしい。

こういうためになる話は金を払ってこそ読めるものだと思っていたが、インターネットで無料で見れるとは驚きだ。本になったらぜひ買って家に置いておきたい。

ではまた

デジタルフォトフレームはどこにおけばいい?

デジタルフォトフレームってどこにおけば良いんだろうって思う。リビングかダイニングかベッドルームか玄関かトイレか。今まではリビングのテレビの前にあったけど、テレビとデジタルフォトフレームは存在自体がかぶってて相容れないものがある。ダイニングは今以上にケーブルを増やしたくないし。トイレは、目に見える位置に置くところがない。玄関は電源がない。バッテリー駆動じゃないと置き場に困るのよね。ソニーさんは何かやってくれると期待しているけど。

デジタルフォトフレームっていいよ

こんにちは

先日、友達のうちに花火を見に行って、デジカメでたくさん写真をとってきた。さっそくうちに帰って、おくさんに見せようとしたが、デジカメの電池が切れていた。うちのカメラはコンセントから直接電源駆動は出来ないから、電池を充電しないとだめ。なんとかして写真を見せたいなと方法を考えてたら、そういや、うちにあるデジタルフォトフレームDPF-D70で見れいいじゃんと気がついた。
デジカメからSDカードを取り出して、DPF-D70に入れてすぐさまスライドショーで再生。DPF-D70なら、画質がとてもきれいだから、単なるプレビューではなく、写真を現像したよりもきれいに見れる。SDカードには今日以外のも入っていたから、今日撮ったものをリストから選んで選択。そしてスライドショー再生ボタンで、すぐさま今日撮ったばかりの写真が映し出されていく。
デジタルフォトフレームはあらかじめ撮っておいたお気に入りの写真を再生するというのもいいけど、今取ったばかりのものをデジカメのプレビューじゃなく、もっと大きな画面で簡単に見るという用途にも使える。取ったばかりのものを見る方がユーザーエクスペリエンスが大きいと私は感じた。デジカメをテレビにケーブルでつないで写真を画面に写すなんて面倒くさい。SDカードを差し込んで簡単な操作ですぐスライドショー。そういうところがいい。今までのように撮った写真を現像してフォトフレームに入れるのには時間がかかる。それに比べてデジタルフォトフレームの早さたるやすごいものだ。
そんなすばらしいDPF-D70だが、我が家ではまだまだ出番は少ない。デジタルフォトフレームは電源を入れたり消したりして使うものだが、そういうことをすること自体になかなかなじめない。我が家ではデジカメで撮った写真はデジカメプリントで現像してフォトフレームに入れて壁に飾ってあるのだ。だが、今回また新しい良さを発見し、デジタルフォトフレームっていいなって思った。これから少しずつ出番が増えていきそうだ。

ではまた

オブジェクト脳

こんにちは

ついこないだまで、オブジェクト指向プログラミングなんてイラナイ、構造化プログラミングで十分と思っていたが、オブジェクト指向プログラミングになれるにつれ、構造化プログラミングには戻れなくなってしまった。

構造化プログラミングは、入力・加工・出力を処理として行うモジュールというものを組み合わせてプログラムを構成するという考え方にマッチしている。だから、その考え方のままオブジェクト指向を考えると、なにやらややこしい気がしてしまう。その上、本などで猫だの犬だの動物だのをオブジェクトの例えとして考えるから、なにやら全く異質なものと感じてしまう。

オブジェクト指向では、入力・加工・出力というモジュールを組み合わせるという考え方ではなく、処理も入力・加工・出力という流れになっていない。入力だけ、出力だけ、加工だけ、がバラバラになっている。しかも、データを入力してデータを出力するというのではなく、データはオブジェクト自体が持っていて、そのデータを必要な部分だけ外部から変更したり、取り出し足りといったことしかしない。

それは何を意味しているか。従来の構造化プログラミングは、工場のラインで、データを製品のようにどんどん加工していって、工場に運び込んだ原料を製品化していくような流れで考えられていた。すなわち原材料は次々と加工され、別の部品と組み合わさり、最終的な製品となっていく。処理は、道具に過ぎず、自分で道具を使って加工していく様に似ている。かなづちやドリルだけでなく、車を運転したり、パワーショベルを使ったりといったものを使うようなものだ。

一方、オブジェクト指向はそういう考え方ではない。オブジェクト指向とは、サービス指向とでも言った方が分かりやすい。要するに、サービスを組み合わせて何かを成し遂げるという考え方だ。自動販売機でジュースを買ったり、電車やバスに乗ったり、ATMを利用したり、デジカメで撮った写真をデジカメプリントの機械で出力したり。実体はそこにあり、自分にはない。自分は何かのリクエストをし、そのサービスを受けるに過ぎない。サービスを組み合わせて1つの何かを成し遂げる。

オブジェクト指向の何がよいのか。構造化プログラミングは、オブジェクト指向のサービス主義に対して、自前主義だ。何もかも自分でやろうとすると、その操作を知らなければならない。操作は複雑になり、さまざまなテクニックも要求される。だが、サービスを受けるだけなら、たいした知識は必要ない。世の中の構造的にも、何もかも自前でやるというのは、あまり現実的ではなく、現代では人はサービスを受けるのに慣れている。

例えば、構造化プログラミングとオブジェクト指向プログラミングを比較するなら、車で目的地まで行くのと、電車を使って目的地まで行くのとの違いが言える。自分で運転するなら、どの道を通るべきか事前にルートを知っておかなければならず、自分で運転しなければならない。電車で移動するなら、乗り換えポイントを知っていればいいし、電車を自ら運転する必要がない。もちろん車の人は電車じゃ遠回りだとでも言うかもしれない。場合によっては電車の方が遠回りになる。オブジェクト指向でもだいたい処理効率は落ちるし、無駄も多い。だが、電車は子供でも乗れるが車は大人しか乗れないように、そこには要求される知識が大きく違う。さらに、車だけでなく、飛行機やクルーザーも必要ならどうだろう?自分で、飛行機やクルーザーを運転するのはたやすいものではない。だが、乗せてもらえばそれは難しくはない。

オブジェクト指向とは、サービスを作りあげ、それを利用したり、自らもサービスを作ったりして、出来ること出来ないこと、面倒なことをお互いに分担し合って処理していく方法論である。現代の人々の暮らしが豊かになったのは、サービスが充実しそれを容易に利用出来るようになったからに他ならない。何でも自前でやろうとするのは、無人島で自給自足で暮らすようなものだ。

もちろん、オブジェクト指向は万能の杖ではない。使い方を誤れば、作るのに難しいだけでなく、システムは複雑化しメンテナンス不能にもなる。また、オブジェクト指向で作れば何でも良くなるわけでもなく、例えば、Javaのプログラムでは、オブジェクト指向でプログラムされていてもフタをあけてみたら、構造化プログラムを無理矢理組み込んだケースもある。また、使う場所も選ばなければならない。場合によっては、構造化プログラミングの方が優れているケースも多々あるのだ。何であれ大事なのは正しく使うことであることは言うまでもない。

ではまた

おサイフケータイはいわばWindows Vista

こんにちは

Expired

従来型のお金+クレジットカードが非接触型デバイスにとって変わることは間違いない。要するに、アナログ決済からデジタル決済へ移行するわけだ。世の中全体が電子決済にインフラが普及しているので、その流れが急でないとしても、その流れは自然である。

とはいえ、私個人として考えてみたときに、あえてクレジットから携帯電話に乗り換えようという気にはならない。理由は、携帯が対応していないのと意味が感じられないから。私としては、次の携帯電話がおサイフケータイに対応していて、かつ、おサイフケータイの対応のお店がクレジットカードよりも多くて、かつ、ポイントなどのメリットがあるので喜んで乗り換えるが、それまで使う意味は全く感じられない。

クレジットカードという本来無くなるべき旧世代のメディアがデジタル時代にもうまく適応しすぎたからかもしれない。例えていうなら、Windows XPがすっかり安定してセキュリティ上も良くなってきたから、あえてWindows Vistaに乗り換える気が起きないというようなもんだ。多少便利になるのは分かっているけれど、現状の不満はないし、あえてお金を払ったりエネルギーをかけてまで乗り換えて得られるメリットがない。

おサイフケータイという新しい決済方法は素晴らしいと思うし使おうとは思うけど、単に面倒なのだ。いうなれば、私にとってはWindows XPで十分で、Windows Vistaはいらないのだ。それは私が懐古趣味なのではなく、XPがどんどんアップデートされていくうちにVistaが相対的に老朽化してしまったのだ。Vistaはもっと早く出るべきだった。おサイフケータイをやるなら、クレジットカードがここまで普及する前にもっと早くやるべきだったんじゃないか。

ではまた

今の若者には夢がない!?

こんにちは

今の若者はなぜ中途半端なもので満足するのか? -50代男性です。趣味- 流行・カルチャー | 教えて!goo

車、カメラ、音楽鑑賞、服装、靴、結婚式ですが、
私は車は持ちません。カメラは、デジカメを持ってますがわりと安いものです。音楽はiPod(mp3のレベルで十分)、服装はZaraやGap、GrobalWork、United Allowsなどを着ますが有名海外ブランドは着ません。靴も普通でわりとリーズナブル。結婚式や新婚旅行は普通にお金をかけましたよ。

私は、車、カメラ、音楽鑑賞、服装、靴といったものに必要以上にお金をかけることが、夢とは思えません。そういうのは物が無い時代に育った世代の人の夢であって、若い人の夢ではありません。若い人は、買い与えられたものや親が購入した幼いときから物にかこまれていて、そういうのにいささか飽きているのです。ましてや手に入れようと努力はしないでしょう。目が肥えているというか。そのものの価値に見合う分しかお金を使わない。mp3が音質がそんなに良くないことは十分分かっているでしょうが、プレイヤーであるiPodは音質悪いし、イヤホンも安物なので、mp3の音質の悪さ自体にはさほど気にならない。しかも、音質の違いにこだわるほど一つの曲をそんなに聴かないから、払うお金と聞く回数とそこから得られる満足度が見合っているので十分なんですよね。カメラだって写っていれば十分。どうせ写っているものを人にあげるときだって、メールかブログに載せるだけ。画質をこだわるほど1つ1つの写真が大事なわけではないし、画質そのものより、記念にその瞬間を撮ったので撮ったらすぐにどこかに掲載したり共有したいしてみんなで楽しむということ自体を重要視しているのです。

若い人はお金を使わずに何をしているかというと、貯金をしているのです。将来に不安があるからという理由はあるでしょうが、実際のところ、有効な使い道が見つからないからとりあえず貯めておくという考え方だと思います。がむしゃらに働いて浪費するより、適当にまったり働いて残業せず早く帰ってのんびりしたいのです。休みの日ものんびり。無駄遣いを好まないんだと思います。貯めておく分には良いことだし、無駄遣いしない分だけ将来あくせく働かずに済みますからね。

若い人は物にはあまり執着してないし、お金自体にも執着しているように見えません。物を手に入れることやお金を使うことが夢にならないんです。だから、車はレンタカーでよいし、音楽もmp3やiPodでいいわけです。50代の人にとっては不思議に思えるでしょうが、若い人から見れば50代の人は不思議に思えるのだと思います。私はその若者たちの考え方の方がまともだと思います。私は、車はいりません。必要なときはレンタカーで良いと思っています。駅の近くに住んでいるから車はいらないし、鉄道が発達しているので行きたい場所はどこにでもいけるし、スーパーもお店も徒歩で行ける場所に住んでいるんです。家も買わなくてもいいです。賃貸で十分です。借金を抱えたくないし、住みたい場所は年齢によってころころ変わりますし。

夢があろうが無かろうが、若い人は自分の親の世代のやっていることを見てきて、同じことはしない、と思うにいたったのは興味深いところです。親の世代は若い人がより物欲やお金へ執着がエスカレートしているように想像するのとは逆のベクトルに進んでいるからです。親の世代が車、カメラ、音楽鑑賞、服装、靴にお金をかけることが重要だとか意味のあることだと思ってやっていても、子どもはさほど興味がわかなかったということです。要するに、それらはあまり意味がないなぁ、ということだと私は思います。

まとめると、要するに若い人は、物を買うこと自体からサービスを受ける、という方向にシフトしているわけです。物を買うというのは、どかんと一度に出費をする投資で無駄が多い。それよりも、前払い0で、従量課金的に、使った分すなち利益を享受した分だけ支払っていくという、サービス指向にシフトしているわけですね。だから、携帯電話も、最初にどかんと端末代金を払うのは好まない、月々使用分だけ割賦で払うスタイルを好むわけです。曲も1曲ずつ聴きたい物だけを聴く。同じアーティストのアルバムの曲を買っていった結果、結果的にCDを買った方が安かったとしても、曲を1曲ずつ買う方を好むわけです。レンタカーは割高なので、利用回数が多ければ車を買った方が安かったとしても、レンタカーで使った分だけ払う方法を好むわけです。

若い人が購買意欲がなくなったことで将来的にも消費が落ち込み経済が低迷してしまうのであれば、日本の経済の観点から少し問題ではあります。ただ、若い人に購買意欲を持たせようとがんばっても効果はないと思いますよ。若い人をターゲットにするなら、物を売るということから、サービスを提供して従量課金的に代価を得るという方向にシフトしていかないと今の若い人からは好まれまないと私は思います。

ではまた