今回は江島さんのBlogデータの連続性とプロセスの非連続性についてのコメントです。
しかし、Psychsさんと話しているうちに生まれた新たな発見は「データは長持ちさせたいがアプリケーションは使い捨て」「システムは属人化させよう、データの意味を理解している人に」「長く使おうとして正しくモデリング(抽象化)するのではなく、さっさと決めてラウンドトリップを速くすることに専念しよう、どうせ捨てるのだから」などのスローガンに集約され、これまで考えていた「システム(コードベース)自体のライフサイクルを長持ちするようにしよう」という考え方とはまるで正反対のものだった。ゴールはそっくりなのだが、アプローチは大きく異なる。
早く作って早く捨てる。慎重に計画して長期にわたる巨大な投資を行うよりも、半分の投資をまず行ってレビューを行い、その結果に基づいて(前のものは捨てて)残りの半分を再投資する。こういった失敗前提型の短いサイクルの投資の方が結果的にリスクを低減させるのではないかという考え方である。(キャッシュポジション的にも当然ながら後者の方がよい)
アプリケーションという抽象的概念は、プログラムという実装で、解釈という多義性を免れることができます。同様に、プロセスやデータのモデリングも、プログラムの実装抜きでは単なる言葉の遊びに過ぎません。
また、プログラムの実装は、そのプログラムを動作させるためのハードウェアおよびソフトウェアの仕掛けあるいは性能に依存し、よってその制約を厳しく受けることになります。それがまた、抽象化の概念に跳ね返り、モデリングの概念を規定することになります。つまり、モデリングとはそれ自身が単体で存在できるわけではなく、その実装技術に強く依存しており、結果、技術の進歩の影響を、良い意味でも悪い意味でも強く受けることになります。
このことは別の言い方をすると、アプリケーションの変化の直接的原因が、人間系にあるのではなく、実装技術を支える基盤技術(これを私はアプリケーションの最適環境と呼んでいます)側の変化にあることを意味していると言えます。
人間系が原因だと考える立場の人は、世の中の変化や経営状況が外部要因となってアプリケーションに新たな機能が追加されたり、逆に機能不足になると考えがちです。はたして、そうでしょうか。
業務系のアプリケーションの必須要件は、データの一元管理とリアルタイム処理であると、私は常々申し上げてきましたが、これを実現するのはたやすいことではありません。同一エリア上ならそれほど問題にならないものが、多地点、複数拠点で業務を行おうとすると、たちまち技術上、経済上の制約を受けることは今更説明の余地はないでしょう。つまり、今までのアプリケーションというのは、結局、ユーザーのニーズを100%満たすようなものはほぼ存在せず(予算が潤沢な団体は別にして)、今回のインターネットの普及に伴うような「最適環境」の劇的変化に遭遇して初めて、たちまち本来のニーズに向けた開発が始まるというのが、実相ではないでしょうか。
もし、この仮説が正しいとすれば、江島さんたちの「発見」もすべて説明がつきます。
■「データは長持ちさせたいがアプリケーションは使い捨て」
当然ニーズを100%満たしていないアプリケーションは、使い続けながら、新しくニーズを満たすものに作り変えたい。
■「システムは属人化させよう、データの意味を理解している人に」
アプリケーションの変化の動機は「最適環境」にあるのですから、本来のニーズと言う、人の中にあるものは変化せず同じはずです。これをヘタにモデル化したらとんでもないことに。
■「長く使おうとして正しくモデリング(抽象化)するのではなく、さっさと決めてラウンドトリップを速くすることに専念しよう、どうせ捨てるのだから」
現実に実現できる実装技術の範囲にニーズを絞り込むことで、アプリケーションとしてのコストパフォーマンスの最適化を実現するのだ。
江島さんの後半のコメントもすべて抽象概念と実装という「概念」に還元できると思いますが、こちらはいずれまた。 KAI