新し物至上主義な人

8月 21, 2005

おいちゃんの仕事場では、最近オブジェクト指向設計が一大ブームになっております。オブジェクト指向設計ってのは、
・MVCモデル
・UML
・モデリング手法
など、いろんな道具がございます。で、この道具をまず使ってみよう、と言うところからスタートしたのでございます。

んが!

なんとなく恐ろしい雰囲気が漂う状態になりつつあるのです。と、言いますのも、道具を使うというのは別に結構なことなのですが、

道具を使用する=オブジェクト指向をマスターした

という一番最初に初心者が陥る罠にはまっているきらいがある。車の免許を取った=俺は車の運転がうまいと思って事故起こして死んでしまう初心者みたいな状態と一緒。まぁ別にいいんですよ。そーいう人にブレーキをかけてくれる人がちゃんと居ればね。問題は

プロジェクト統括者がこの罠におちている

こと。さらに

これを助長するブレインがいる

ことです。このブレインさんの言うことは、至極真っ当な事を言っています。オブジェクト指向設計の教科書としてはすばらしい。この彼も言っていることに

オブジェクト指向設計は、最初は必ず失敗します。これはどうしても避けられないことです。失敗を回避する方法はありません。失敗を積み重ね、次の開発で改善するしかないのです。

はい。これはまさに正しい。問題はこの後。

ですが失敗を恐れていてはなにも始まりません。まずは始めてみましょう

100名の人員を抱える、開発費ン億円プロジェクトが失敗していいのか?

…どーかしてます。そして新しい手法、新しい手法とどんどん突き進んでいくのは結構なのですが、

道具だけは新しくて、やり方が旧態然としたまま

なのですよ。分かりやすく言うと、昨日発売されたばっかりの携帯電話を持ってる中年おっさんみたいなもん?新しい携帯を買ったと自慢はしているものの、よく見ると着信音はふつーのベル、使うのは電話だけ。Tu-kaのでも良かったんでは…と思うようなあの状況。
最近のオブジェクト指向設計の世界では、道具にこだわるよりも、まずプロジェクト員のモチベーションを高めるところからスタートすべきである(これをファシリテーションと呼んでいるらしい)という概念が浸透してるのですよ。これは完全に無視されている。技術面にはこだわっているが、管理面は一切無視されているのです。これはまずい。
さらに一番困った出来事は
・メモリはジャブジャブあるんだから気にすることは無い
・速度は犠牲にしてかまわん とにかくモデルに従ったコーディングをせよ
・速度なんて遅ければCPUを強化すればいい
・言語はC++かJavaを用いよ。Cなんて時代遅れだ
上の言葉って、別に違和感を感じない人は多いと思うのですよ。近年Javaは多いし。CPUもどんどん高速になるし、メモリも1G,2Gなんて当たり前。HDにいたっては400Gbyteなんてものもある。何がいけないの?と思うでしょう。

上の条件が当てはまるプログラムはごく一部

なんですよ。それは何か。人間を相手にしたプログラムなんですね。例えばWindowsのGUIとか。Windowsでプログラム書こうと思えば、VisualC++、C++Builder、Java等で書くのが一般的でしょう。何でかというと、

Windowを表示するという無駄な処理のため

に必要なんですよ。人間相手だとこれは特に必要です。だって、なんか分かりやすい表現でないと人間は理解できないでしょう。だから。プログラム作ってみるとわかるけど、本当にする仕事(例えば表計算をするとか)を作るよりも、キーボードから入力したり、画面に表示する処理のほうが膨大な量作んなきゃいけないんですよ。知ってました?で、ここの人間相手にする処理のところで言われるのが、『スピードなんていらない』なんです。人間が分かる時間の最小単位って0.1秒。なのでボタンを押して0.1秒で戻ってくると『一瞬で処理した』と思ってくれるんですね。だけど最近のコンピュータで0.1秒っていうと、1000万個もお仕事を実行できちゃうんですよ。すげぇっしょ。つまりこれだけかけて仕事が終れば良いので、ぼろくそなプログラム書いても問題ないの。しかも余分な処理がどうしても多いのでメモリも必要だし、C++とかJavaで書いても問題ナッシングなんですよ。
それ以外はどうか。実は超高速性が要求されるんです。だってさ、Exelとか使ってて、ボタンをポチっとおしたあと、計算に時間がかかって固まってしまうとすんげぇいらいらするでしょう。だから中身の計算部分って実は最高速で処理しないといけないの。で、時間のかかる表示部分に時間を分けてあげるの。
さて、UNIXの世界ではどうでしょう。C++はWindowシステムのデスクトップ環境や、GUIアプリケーション

だけ

なんですね~。知ってました?Javaは一部のWindowアプリだけ。OSそのもの、コマンド、サーバプログラムはほぼ全部

C言語

で作られてるんですよ。それは何故か

メインの計算処理に相当するから

なんですね~。はい。つまり人間相手の部分ぐらいでしかJavaは用いられていないということ。
さて。ところで今回のプロジェクトで作る製品は何か

メインの計算処理ばっかり

の製品なんですわ。人間相手のGUIは別の端末が担当するの。さて、ここでおっそろしい事が起きる気配。

作った製品の性能が全くでない可能性

があるんですよ。コレこそが最大のプロジェクトの失敗。これが失敗するとどうなるかっつーと

①ン億円がフイ
②納期遅延でさらにン億円の違約金を払う
③信用を失って将来的なン10億円以上を失う

そのブレインさん、もともと人間相手のプログラムしか組んでないみたいだし、まぁみんなが話半分で聞いてくれればそれで済むんだけど、困ったことにプロジェクト統括者が

ブレインの声は神の声だYo!

と号令をかけてしまってさぁ…このプロマネの心酔ぶりが一番困りもの。オブジェクト指向の真髄は

既成概念にとらわれずに柔軟に思考すること

だと思ってるのだが、オブジェクト指向の教科書にがちがちにはめられてしまっているのだ。なんか困っちゃったなぁ…しかもこの新し物好きな人たちは、

自分がやってることは最新だから間違ってない

と強く信じてるからたちが悪い上に、失敗したら

自分等の理論を実践しなかった周りが悪い

と平気で言いそうだからもっとたちが悪い。過去にもそーいう人たち一杯見てきたからなぁ…その事例が最悪の形で起きてしまいそうだ…
あ、別にオブジェクト指向は悪だとは言ってないですよ。おいちゃんはおいちゃんでオブジェクト指向で設計をやってるつもり。

どうすれば一番いい形になるかを優秀な設計者が考えていれば自然と正しいオブジェクト指向設計になるもの

です。所詮教科書なんて後付の理論です。勉強して損はないけどそれに心酔してはダメです。
興味があったら日経BP社のソフトウェア設計55の真実と10のウソ読んでみるといい。おいちゃんの経験的にも凄く当たることが書いてあるっす。上の事例にも当てはまることが…

posted in マイワーク by maruo

Follow comments via the RSS Feed | Leave a comment | Trackback URL

Leave Your Comment

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード