2007年は、.NET Framework 3.0を含んだWindows Vista、そしてthe 2007 Microsoft Office systemと、Windows環境において久しぶりに大規模なソフトのバージョンアップが行われ、これらが提供する新しい技術に注目している開発者の方も多いことでしょう。
では、なぜこの時期に.NETがテーマなのかと問われるかもしれませんが、今では.NETは脈々と続く技術進化の方向性という大きなパラダイムの基礎を成す重要な要素となっています。だからこそ個々の機能だけに振り回されず、.NETの方向性という全体的な観点での理解を深めることが重要になってきます。本連載は、そうした視点での理解を目指すことを目的とし、進めていきます。
さて、.NETが発表された当時(2000年)は.NET構想という表現が使われていました。これはConnected(人と人、企業と企業、システム間がつながる)、Open&Standard(よりオープンで標準的)といった観念的なコンセプトに基づいていました。
.NET発表直前の1990年代の終わりは、インターネットが企業や個人に対して大きな広がりをみせ、新たなビジネスが生み出されてきた時期でした。Webブラウザベースの「アプリケーション」は、インストールせずに誰でも使えるというコンセプトから重宝され、以前から存在していたJava言語もWeb上でアプレットとして利用可能になったことで脚光を浴び、さらにはデータ交換のためのXMLとその上でのオープンな規格の整備がはじまり、ベンダーやプラットフォームの枠を超えた「つながる世界」が実現されてきた時代でもありました。
もちろんそうした時代でも、Microsoftが何もせず取り残されていたわけではありません。当時、企業システム構築のアーキテクチャとして主流だった3層型のアプリケーションを実現するためにWebも視野に入れたWindows DNA(Distributed Network Architecture)を提唱し、COM(Component Object Model)、ASP(Active Server Page)などといった実装技術も提供していました。しかしMicrosoftは、周辺環境のこうした大きな変化に対し、その技術で充分であるとは考えていませんでした。
一例として、その実際の基盤が従来のCOMのみであった場合、メインフレームとはどう連携すれば良いかということを考えてみてください。まずは連携のための特別な仕組みを検討する必要が生じることが想像できるでしょう。もしXMLを用いた場合には、「XMLの文字列として落とすことができれば、バックエンドがメインフレームであろうと何であろうとかまわない」という答えが用意されていました。
無論、ただXMLを使うだけということではトランザクションをどう管理するかなど、完璧な「答え」ではありません。しかしこのアイデアは、企業に蓄積された資産をそのまま活用するという発想により近づいたもので、わかりやすいものでした(注1)。
※注1:
以降も同様ですが、COMの技術に関して、本連載では.NET登場前後を比較する目的でこうした点を強調していますが、スレッドモデルなど、ここで記載している側面以外のCOMが持つ「よい側面」については、.NET Framework(Microsoft社によるCLIの実装系)においてもその実装の基盤として数多く踏襲されています。
こうした背景を受け、.NETは「つながるシステム(Connected System)」という性質を以前よりも「さらに強力に」押しだして、必要があればその実行の基盤からも見直す覚悟で、新しい概念として登場してきたのです。そしてこの概念は、構想が現実になった時点で失われた訳ではなく、その後に登場する多くの技術についても、この概念が継承されてきました。
図1:企業の枠も超えた「つながるシステム」を実現する基盤としての.NET
例えば.NETにおいては、COMや分散COM(Distributed COM)といった従来の連携方法がありながら、XML WebサービスというHTTPとXMLによる通信に強くこだわっていたり、その仕様についても、OASISという標準化団体の意志決定を強く意識して構築されています。また.NETは構成情報などに関しては、非常にXMLを意識した作りになっています。
さらには、ISO(国際標準化機構)やECMA(ヨーロッパ電子計算機工業会)、最近ではJIS(日本工業規格)としても採用された.NETの実行基盤「CLI(Common Language Infrastructure:共通言語基盤)」は、その仕様がすべて公開されています。また、PC環境のみならず、.NET Compact Frameworkのように携帯端末やデバイス向けのCLI実装も存在しています。
.NETと聞いたときに皆さんが連想するこうした技術や事実の多くが、何となく.NET構想の概念と結びついているような感覚を持っていただけているならば、.NETの1つの側面は皆さんにも感覚的に理解してもらえているといっても過言ではないでしょう。
この概念が、「.NETとは何か」の答えの1つであることを憶えておいてください。
|