システム開発は情報のモデル化
システム開発とはなにか、と聞かれたら「情報をモデルとして扱うこと」と答えるようにしています。オブジェクト指向としてモデリングを説明すると、たとえば車であれば色や馬力といった属性と、走るや止まるといった振る舞いに分けることができるわけです。ソフトウェアというのは、情報という見えないものをモデリングすることによって扱えるようにする手法というわけです。
最近あらためて感じるのは、あくまでもモデルを扱っているに過ぎないんだなということです。以前は「オブジェクト指向であれば現実世界を表現できる」みたいなことをいっていたのですが実際には不可能なことです。モデルの中の車を”本当に”走らせようとしたらガソリンがエネルギーに変換されるところまでモデリングしないといけなくなります。そんなことはできないので「謎の力」に登場してもらうことでモデリングされた車は走ることができるようになります。
モデリングというのは限定された世界を前提とした定式
結局、モデリングというのは限定された世界を前提とした定式に過ぎません。中学生の物理と同じで空気抵抗も表面張力も存在しない。だけど、そこでは情報というものを扱うことができます。
別に情報を扱う技術というのは昔からあったわけで、革命的だったのが言葉(発話)と文字です。どちらも共用できないと意味がないので体系化がされておりラベリングはある種のモデリングのように機能します。名前をつけることによって、それ自体を共用して扱える。名づけ重要ってやつですね。ですが、そもそも言葉には解釈の多様さがあるためラベルは絶対的な存在とはなりません。そこらへんはオントロジーとかスキーマとか、そういう背景を前提にして説明されるとこ。
さて、一方のシステム開発ですがびっくりするほど固定的です。誰の端末で動かしても同じモデルは同じ動きをします。解釈が立ち入る隙間はありません。感覚として近いのは活版印刷でしょうね。版さえあれば、どんな印刷機でも同じ出力を得られる。だからこそDTPが生まれたのでしょう。
モデルとしての情報を扱う習慣
そうそう、何を言いたいのかというと「モデルとしての情報を扱う」ということに慣れていかないと情報システムは扱えないのだろうなということです。オブジェクト指向は現実をトレースしません。あくまでもモデルに過ぎない。だからモデリングするときは現実をモデリングするのではなく、どういったモデルなら現実世界で扱えるのかと考えるべき。
ビジネスモデリングという名の下にヒヤリングを重ねて忠実に業務をトレースする業務フローを作成したとします。それはAs-Isとしては間違っていない。でも、実はそれでは情報システムにはならない。してもいいけど複雑すぎて扱えない。だから、みんな諦めて仕様をシンプルにしたりするわけです。でも、そういったボトムアップのプロセスで作られたシステムは部分最適にしか過ぎない場合が多い。なぜなら現実世界を扱おうとしているから。
そうではなくて、全体最適としてモデルが扱える範囲で何ができるのかという視点が必要なのです。その指標になるのは情報システムがなくても情報をもとに行動ができていたかということです。
たとえば、情報システムがないころから帳簿はちゃんとつけてきちんと商品を管理していたとか、緻密な項目の積み上げで営業成績を分析していたとか。あるいはマスタ管理は細かくやっていて何年前のものでの参照できるとか。そういう文化が根付いている企業というのは情報をモデル化して扱うことに慣れているといえます。
こうした文化は一見するとシステム開発とはあまり関係のないことのように感じます。だってシステム化するんだから勝手にそうなるだろうと。でも情報を概念として扱う癖がない企業は、情報を元に行動することができず情報システムの力を活かしきることができません。
システム構築を提案するときに、こうした点に注目すると色々とみえてくるものがあるように思います。

コメント (1)
はじめましてタンジといいます。
「システム開発は情報のモデル化」しっくり来る言葉ですね。
僕もオブジェクト指向とかDOAとかにはまってモデル化を目指していましたが、どれもうまくいった試がありません(;_;)
最終的にこんなツールを作るに至りました。
Zeeta
http://mm3991.qp.land.to/
このツールは、効率的な情報の共有化やドキュメント化にも効果があると思っています。
よろしかったら覗いてみてください。
投稿者: タンジ | 2008年01月25日 01:12
日時: 2008年01月25日 01:12