.NETエンタープライズ
Webアプリケーション 開発技術大全

Microsoft .NET概要

マイクロソフト コンサルティング本部 赤間 信幸
2004/04/22
Page1 Page2 Page3

 まずこの章では、Microsoft .NETの概要を解説する。順を追って理解していただくために、以下の3つの項目に分けて説明したい。

  • 今日のIT業界の現状と新しいアプリケーションモデル
     IT業界を取り巻く現状を概観し、なぜXML Webサービスという技術が出現したのかについて考える。

  • Microsoft .NETの概要とキーコンセプト
     このような状況に対してマイクロソフトが打ち出した「.NET」について、そのキーコンセプトを解説する。

  • ソフトウェアの未来像と今日のシステム開発のギャップ
     Microsoft .NET構想とVisual Studio .NETの関係をご理解いただくため、ソフトウェアの未来像と、今日のシステム開発のギャップについて解説する。

1.今日のIT業界の現状

 おそらく多くの方々が実感されているように、昨今のITビジネス環境は急激な変化を遂げているが、その背景には急速な技術革新による下支えが少なからずある。例えば、コンピュータの大幅なコストパフォーマンスの向上、ブラウザフォンやカメラつき携帯電話、あるいはデジタルカメラなどの小型情報端末の普及、ブロードバンド常時接続の普及、映像や音楽のデジタルデータ保存の一般化など、枚挙に暇がない。しかもこうした各種の技術革新は、ここ数年で急激な発展を遂げてきたものばかりである。

 こうした劇的な環境変化は、既存ビジネスの在り方はもちろんのこと、企業やサービスの勢力図さえも大きく書き換えてしまうものでもあった。実際、今や固定電話と携帯電話の関係は逆転し、デジカメの普及は若者の間で新たなカメラブームをもたらし、DPEショップではデジタルカメラの写真も印刷できるようになった。ショーのチケットも新幹線のチケットも、店舗に並ぶまでもなく携帯電話から購入でき、書店に足を運ばずともインターネットで注文した書籍は数日のうちに自宅に届けられる。ADSLは従来ギャランティ型※1が当たり前であった企業のネットワーク回線の考え方を大きく変えようとしており、IP電話もまた、距離に基づいて課金される従来の固定電話の在り方を大きく変えようとしている。

※1 ネットワークなどにおいて、通信速度やサービスの質が保証されているものを指す。ADSLにはこうした保証がないベストエフォート型(最善を尽くすよう努力すること)で提供されていることが多い。

 こうした各種の技術革新は、本格的なユビキタスネットワーク(=いつでも・どこでもネットワークのメリットを受けられること)時代の到来をもたらすと共に、新しいビジネスの可能性を数多く提供することになった。

 例えばオンライン書籍販売を考えてみよう。従来、書籍販売は書店でしか行われていなかったため、知人から良書を聞かされても実際に購入するには至らないなど、非常に機会損失が大きいビジネスでもあったはずである。しかし、インターネットでのオンライン書籍販売はまさに「いつでも」「どこでも」の手軽な書籍購入を可能とし、こうした機会損失を減らすことに成功した。コンビニATMやインターネットバンキングなども、そうした「時間」と「場所」に関する制約を排除することで成功した好例である。

 こうした『新しいビジネスチャンス』の芽は、環境の変化により突如として出現するものである。そして、こうした環境の変化に合わせて素早くシステムを開発しサービスを提供していかないと、せっかくのビジネスチャンスを失いかねない。つまり、素早い環境変化に対応していくためには、システム開発にも自ずとagility(俊敏性)が求められることになる。実際、今や数ヶ月でサービスインする「超短期開発」が求められるのは日常的なこととなりつつある。

 しかし、「システムに必要なものすべてを自社開発する」という従来の考え方を続けていては、今日の複雑化・高速化するシステム開発を成功させ続けることが困難なことも確かである。だからこそ、今改めて「すでに存在するものは可能な限り再利用する」「必要に応じて他社のサービスを利用する」といった考え方が重要になってくると言えるのである。

2.XML Webサービスの出現

 上記を踏まえた上で「望ましい」システム開発モデルというものを考えてみると、図1のようなイメージとなる。

 例えばB2Cサイト(一般消費者向けの物販サイト)を考えてみる。従来は製造機能、資材調達、物流管理、顧客管理、与信管理などの様々な機能のほとんどを自社開発していたかもしれない。しかし迅速なシステム開発を実現しようと考えるのなら、スクラッチ開発はなるべく避け、社内・社外に存在する既存の機能(サービス)を再利用し、組み合わせながらシステムを構築していくべきである。

図1 理想的な開発モデル

 こうした「ソフトウェアの機能を再利用する」ことの重要性は、IT業界においては歴史的にも再三言われてきたことであり、疑うべくもないことである。しかし現実的なシステム開発の現場を見ると、その再利用は必ずしも上手く行っているとは言えないのではないだろうか。

 その理由の根幹には、再利用可能な機能設計が非常に難しいという本質的な問題がある。しかしそれ以外にも、純粋に技術的な理由として、従来のシステム開発技術にはソフトウェアの機能を異なるプラットフォームから再利用する標準的な手法がなかったということもある。残念ながら多くの企業では、メインフレームやERPパッケージ、あるいは個々の業務システムなどは個別に最適化した形で開発され、結果的に孤立して存在してしまっている。システム間のオンライン連携はほとんど行われておらず、仮に連携させている場合であっても、文字コード変換やファイル転送方式を初めとした技術的な課題解決のために莫大なコストや時間を費しているのではないだろうか?

 こうした状況を踏まえ、主に接続・連携の技術的な問題点をクリアするために2000年前後に出現したのが「XML Webサービス」である。XML Webサービスは、データ記述に関する標準形式の1つであるXMLをベースとして作られた、アプリケーション間の機能連携(主にオンライン連携)を実現するためのインターネット標準技術である。

 このXML Webサービスの優れている点は、(EDIなどを初めとする従来のシステム間連携技術とは異なり)ベンダや業界・業種の壁を越えた標準化の取り組みが行われていること、またその仕様も特定のベンダが独占的に保有するのではなくWWWコンソーシアム(W3C)などの標準化団体が保有・管理していることにある。その取り組みはまだ道半ばとはいえ、従来のプロプライエタリ(独占的)な連携技術に比べると、システム間のオープンなオンライン連携環境をより容易に構築していくことができるようになってきている※2

※2 XML Webサービスの標準化を推進する1つの取り組みとして、WS-I(Web Services InteroperabilityOrganization)と呼ばれる団体がある。XML Webサービスはまだ発展途上にあり、その仕様書の詳細部分での解釈の違いなどから、現時点においてはプラットフォーム間、あるいは製品間での接続を確実に保証できるという状況には至っていない。こうした状況を打破すべく設立されたのがWS-Iという団体で、プラットフォーム、アプリケーション、開発言語などを超えた相互接続の実現を目指す活動を続けている。2002年2月に設立後、参加企業・団体数は着実に増加しており、現在ではIT業界の著名な企業や団体はほぼすべてが参加するに至っている。詳細なリストや最近の活動状況は以下のURLなどから参照するとよい。http://www.ws-i.org/

3.Microsoft .NETとは何か?

 こうしたIT業界の変革を想定し、マイクロソフトは2000年に設立時のビジョンを以下のように書き換えている。

「Empower people through great software, any time, any place, and on any device」
(時や場所、デバイスを問わず、優れたソフトウェアで人々の可能性を広げる)

 そして、このビジョンを実現するために同時に発表されたのが、「Microsoft .NET」と呼ばれる構想であった。

 この.NET構想は概念先行で掴みどころがないと言われることが少なくないが、決して難しいものではない。.NETとは、

「.NET is the Microsoft solution for Web services, the next generation of software that connects our world of information, devices, and people in a unified, personalized way.」
(あらゆる情報やデバイス、人をつなぐ次世代型ソフトウェアを実現する、Webサービス※3に関するマイクロソフトのソリューション)

のことである。そしてこのコンセプトは、現在のマイクロソフトのすべての製品・サービスに対して適用される長期的ソリューションの中心にもなっている。このため、マイクロソフトの製品構成はこの「.NET」というコンセプトから見ていくと読み解きやすくなる。

※3 一般に「Webサービス」という用語には狭義の意味と広義の意味がある。狭義の意味としては、基盤技術であるXMLベースのWebサービス(いわゆる「XML Webサービス」)のことを指すが、広義の意味としては、純粋にネットワークを介してユーザへ便宜を提供する一般的なサービスのことを示す。例えば、宅配便で送った荷物が今どこにあるのかをユーザが宅配業者へ問い合わせることのできるWebページや、辞書検索サービスを提供するWebページなども、広義の意味でのWebサービスである。Microsoft .NETの中で言われている「Webサービス」とは、広義のWebサービスのことを指している。例えば、MSNメッセンジャーはSOAPを利用していないが、これもMicrosoft .NETの一部である。

 とはいえ、上記の説明だけではまだ抽象的かもしれない。技術的な観点からそのキーポイントを読み解くと、特に以下の3点が重要となる。これらについて解説しよう。

  1. サービス指向アーキテクチャ
  2. 相互運用性(異機種プラットフォーム間接続)の重視
  3. 広範なデバイスを活用した新たなエクスペリエンスの実現

3.1 サービス指向アーキテクチャ(SOA、Service Oriented Architecture)

 これは、従来、箱物として捉えられがちだったソフトウェアを「機能単位」、すなわち「サービスを提供する部品」として捉え、すでに存在するサービスは可能な限り再利用するように、また、新たに作る機能は、サービスとして再利用できるように意識して設計・開発していこうとする考え方のことである。

 こうした『再利用』の考え方は別段新しいものではなく、従来から存在している。例えば、いわゆるオブジェクト指向開発(OOA)やコンポーネント指向開発(COA)なども、言葉こそ違えど、『再利用』を意識していることには変わりがないし、その重要性は今でも全く変わらない。また"SOA"も比較的昔からある用語である。しかし敢えて"SOA"という考え方に注目するのは、OOAやCOAといった従来の再利用の考え方の多くが、現実的には「比較的粒度の小さい内部部品(ソースコードや共通コンポーネント)を」「ある企業内(組織内)で再利用する」といった限定的な範囲に留まってしまっているからである。

 もちろん、「サービス」のような粒度の大きな機能単位を再利用可能にすることは設計上非常に難しいことであり、未だ一般的な設計解は存在しない。しかし一枚岩の開発を避け、再利用性を強く意識した設計を押し進めていこうとすることは非常に重要である。SOAとは、設計においてそうした「粒度の大きな再利用性」をより強く意識していこうとする動き・考え方である。

3.2 相互運用性(異機種プラットフォーム間接続)の重視

 従来、マイクロソフトを初めとする多くのベンダの相互運用性(相互接続性)は限定的なものであった。しかし、ITビジネス環境の変化を前提に考えれば、現在、相互運用性、特に異機種プラットフォーム間での接続性を確保することは極めて重要なことである。このため、Microsoft .NETでは業界標準の技術(XML やSOAP、WSDL など)を積極的に採用し、サービス再利用のための「接続」に要するコストと期間を最小化することを重視している。

3.3 広範なデバイスの活用による新しいユーザエクスペリエンスの
実現

 従来、マイクロソフトはデスクトップパーソナルコンピュータをすべてのソリューションの前提条件として捉えていたが、様々なデバイスが出現してきた現在ではより広範な視点を持つ必要が出てきた。

 Microsoft .NETでは、様々なデバイスを活用してユビキタス(いつでも・どこでも)のメリットを享受しつつ、エンドユーザに全く新しいエクスペリエンス(体験や驚き)を提供していくことを目指している。例えば、PocketPCや次世代グラフィックサブシステムAvalonなどは、Microsoft .NETの成果の一部である。

 以上のようなコンセプトを踏まえた上で、改めてシステム構築モデルを考えてみると、システムは一枚岩ではなく、図2のような少し複雑な構造を取るべきであると考えられる※4。すなわち、従来はOS上にランタイムやミドルウェア類(アプリケーションサーバなど)を用意し、その上でユーザアプリケーションを開発すれば終わりだったかもしれない。しかし今後は、素早く効率的なシステム構築を実現するために、今まで以上に既存サービス(それは場合によってはUNIXやJ2EE上に構築されたXML Webサービスであるかもしれない)を再利用するような、アプリケーション間の協調連携(オーケストレーション)を行っていく必要があると考えられる。

※4 図2のWindows Server Systemとは、Windows Server 2003上で提供されている各種のサーバ製品群の総称を指す。アプリケーション開発では、こうしたパッケージ製品の機能を再利用するあるいは連携させることも重要になるが、詳細は本書の後半にて解説する。また、図中のビルディングブロックサービスとは、マイクロソフトや各社が提供する再利用可能なアプリケーションサービスのことを指す。具体的な例としては、インターネット上の統合認証サービスである.NET Passportや、ユーザへ最適なタイミング・手段で通知を行うサービスであるMicrosoft Alertsなどが挙げられる。
 
図2 Microsoft .NETにおけるシステム構築モデル

 つまりこれからの新しいシステム構築モデルでは、図2のように様々な既存システムを『組み合わせる』という概念が導入されるようになる、と考えられるわけである。


 INDEX
  .NETエンタープライズWebアプリケーション開発技術大全
    1.はじめに
  2.Microsoft .NET概要(1)
    3.Microsoft .NET概要(2)
 
インデックス・ページヘ  「.NETエンタープライズWebアプリケーション開発技術大全」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間