オルタナティブ・ブログ > ER(緊急究明室) >

いまどきのシステム開発に主観的視点でメスを ~メスの入れ間違い御免~

エンジニアを楽に

»

現在のアプリケーション構築は実現したい機能とその実現の仕方に大きな差があります。何を作るのか(どのようなシステムなのか)を分析をし、その結果を入力にしてソフトウェアとしての実現方法を設計するという手順で通常アプリケーションは構築されます。分析とは調査であり、設計はソフトウェアとしての解決方法と言えるでしょう。そして、この分析と設計には目的が違うためになかなかシームレスに繋がらない上に、設計にてメカニズムを組み込む事で、構造に大きな変更、構造の複雑化、変更に対する柔軟性の低下などを起こさせます(メカニズムとは繰り返し発生する問題に対するソリューションと定義しておきます)。なぜならば、メカニズム依存のコードを機能から呼び出さなければならないからです。もちろん、ラッパーのような考え方もありますが、ラッパーを実装するのでは新規開発においてアプリケーションの複雑化に対する本質的な問題解決にはなりません。そのようなメカニズム依存のコードは1種類ならばよいのですが、実際はそうではなく様々な技術があり、どれもメリット、デメリットがあり、それらを適切に組み合わせてアプリケーションを構築する必要があります。つまり、「様々な実現方法の特徴を知っており、適切に選択ができ、個々の実装ができないと設計ができない。」というのが現状です。
これに加え、今日のエンジニアに求められることは、複雑な要求=複雑な機能の実現であり、その比重は年々大きくなっています。このような状況で、分析者と設計者が同じ人材が携わる可能性の高い現場において、先に上げた設計に関する問題を解決していくには非常に考える事が多く、負荷が高すぎると言えます。
donbox2マイクロソフトにおいても、様々な技術があり、それらを複雑に組み合わせてシステムを構築する必要があります。例えば、WebServices、WS_*、COM+、MSMQなども特徴を知り、適切な選択をし、個々のやり方でコーディングする必要があるのです。たとえば、セキュリティが高い呼び出しをしたい、トランザクションを伝播させたい、非同期に処理を行わせたいなどの要求に応じた技術の選択とそれ独特の実装が求められるのです。
そこで、このような問題を解決するために、今回発表されたWindows Communication Foundation(WCF)が役に立つかもしれません。
WCF(開発コード名indigo)とはWindows Platform上でのサービス指向のアプリケーション(まだまだ一般的にはサービス指向の考え方がわかりづらく、マイクロソフトはしっかりこれを伝えて欲しいです。郵政民営化と同じ状態か。)を「すばやく」構築するための統一プログラミングモデルを提供するものとのこと。重要なのは「すばやく」の表す意味でしょうか。つまりは、難しいやり方をしなくとも簡単にサービス指向のアプリケーション構築が可能になるという事です。そして、他のアプリケーションとの相互運用を容易にします。
つまり、接続方法の種類に依存せずに同じプログラミング方法で実装でき、XMLファイルに宣言的するだけで、接続方法を変えられるということです(例えば、<binding>BasicHttpBinding</binding>と書いたり、<binding>WSHttpBinding</binding>と書いたりしてバインディング方法をコードを変更することなく変える事ができます)。
こうなると、エンジニアにとっては非常に嬉しいですね。同様のプログラミングで実装ができ、接続する相手や方法などによって接続方法を宣言的に変えることができるわけですから、複雑で難解な設計とプログラミングから開放されます。しかも、.NET上で稼動する言語であれば構わないのですから。
今まで、エンジニアはメカニズムに対するプログラミングそのものに労力を使いすぎでした。きっとこれからはそうでない時代がきます。でも、そうなるとエンジニアの価値が下がるのでは?(まだまだ職人芸がスキルと勘違いされる世の中ですし)
いえいえ、エンジニアが楽になるわけではないですし、価値が下がるわけでもありません。新しい技術とは要求と機能の増大によるアプリケーションの複雑化を抑えるものであり、エンジニアに求められることは常に多くて難解なのです。

ps.
セッション後にDonBoxに友達になってもらいました。

やっぱりXMLは手で書くのがカッコいいのか。。。Donよ。

P1010006s

Comment(0)