アーキテクチャ・ジャーナル

インターネット サービス バス

Donald F. Ferguson、Dennis Pilarinos、John Shewchuk
2009/01/19

本コーナーは、マイクロソフトが季刊で発行する無料の技術論文誌『アーキテクチャジャーナル』の中から主要な記事を Insider.NET 編集部が選び、マイクロソフトの許可を得て転載したものです。基本的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などを本サイトのデザインに合わせている部分が若干ありますので、ご了承ください。『アーキテクチャ ジャーナル』の詳細は「目次情報ページ」もしくはマイクロソフトのサイトをご覧ください。

記事の著作権はマイクロソフトに帰属する。
©2008-2009 Microsoft Corporation. All rights reserved.

ご注意:本記事は、雑誌の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

概要

 Web アプリケーションは非常に一般的なアプリケーション モデルであり、その勢力はさらに拡大します。中規模から大規模の企業のアプリケーションでは、ほとんど例外なく Web ユーザー インターフェイスが提供されます。この記事では、企業という用語を中規模から大規模の企業、ソフトウェア ベンダ、およびインテグレータに適用します。デスクトップ アプリケーションとクライアント/サーバー アプリケーションでは、ブラウザを UI エンジンとして使用し、Web プロトコルを通じてデータやサービスを呼び出す場合が多くなってきています。

 ソフトウェアもアプリケーション モデルも Web 自体も、画期的な変化を見せています。この変化がコンピュータの使用に与える影響は、クライアント/サーバーモデルや Web 自体の当初の出現と同じぐらい大きなものになるでしょう。Web は、サイトで提供されるアプリケーションにユーザーを接続するものから、次のようなモデルに発展します。

  • アプリケーションは "Web の中で" 実行されます。
  • エンド ユーザーは Web にアクセスするための独自のアプリケーションを開発し、それを Web サービスにアクセスするための作業空間に変えます。

 この記事では、この変化のごく一部の要素に焦点を当てます。他の記事でそのビジョンをさらに展開します。

 上記の画期的な変化を促進するさまざまなテクノロジやトレンドがあります。その例をいくつか挙げると、マルチコア プロセッサ、仮想化、携帯電話やタブレットなど多くのデバイスを統合するアプリケーション シナリオ、サービス指向アーキテクチャ (SOA) と Web サービス、Web 2.0、サービスとしてのソフトウェア (SaaS) などがあります。

 これらのトレンドの影響についても触れますが、ここでの焦点は SOA、Web 2.0、およびサービスとしてのソフトウェア (SaaS) にあります。これらの概念やその相互関係はよく理解されていません。矛盾するように見える場合もあります。この記事では、さまざまな概念を全体として整合性のあるものに統合する高レベル リファレンス アーキテクチャの要素について説明します。

 上記のテクノロジ トレンドの多くは広く受け入れられ認識されているものです。この記事では、議論が分かれる第 3 のトレンド、ユビキタス プログラミング能力を取り上げます。高校生や大学生の多くは基礎的なプログラミング スキルを持って社会に出ます。学生の多くは簡単な PHP や Visual Basic のアプリケーションを開発し、Web サイトを作った経験があります。プログラミングは職場での担当業務に含まれていないかもしれませんが、簡単なプログラミングで能率を上げることができる場合は、多くの人がすると思います。簡単なアプリケーションを "カッコイイ" からという理由で開発する場合もあるでしょう。これにはエンド ユーザー プログラミングという用語を使用します。

 エンド ユーザー プログラミングは、便宜的開発の極端なケースであり、企業内の各部署や主要業務の中で行われます。基幹業務の担当部署や IT チームでは、直面している業務上の問題を解決するために、パッケージ アプリケーションや会社全体の基幹アプリケーションを拡張して、簡単な SharePoint や PHP を "間に合わせに手早く" 構築するといったことがよくあります。

 便宜的開発は、体系的開発とは対照的です。体系的開発はモデル駆動型で、要件収集、ユースケースと関係者のインタビュー、品質管理と保証を含むアプリケーション開発ライフサイクルなどを満載しています。体系的開発は、企業の開発チーム (CIO チーム) の主要なモデルです。多くのパッケージ アプリケーション開発者 (独立系ソフトウェア ベンダ : ISV) とシステム インテグレータ (SI) も体系的ソリューションを作成します。

 企業内では便宜的開発と体系的開発は緊張関係にあります。エンド ユーザー プログラミングが一般的になると、この緊張は強くなります。エンド ユーザーは体系的開発チームがソリューションを開発または変更するのをおとなしく待つことはしないと思います。これから説明するリファレンス アーキテクチャは、極端な便宜的開発と体系的開発を調整するアプローチを提供します。

 ここではリファレンス アーキテクチャを説明するシナリオを使用します。このアーキテクチャの中核となり土台となるのは、インターネット サービス バス (ISB : Internet Service Bus) です。リファレンス アーキテクチャにはたくさんの要素がありますが、この記事で詳しく扱うのは ISB のみです。他の要素は他の記事で扱います。

シナリオ : 便宜的開発と体系的開発

 Dave は頻繁に出張し、好みのホテルや航空会社を使用します。出張先では、地元のタウン カー サービスを利用し、レストランに予約を入れます。友達や家族、同僚とのコラボレーションも重要です。Dave はさまざまな旅行業者の Web サイトを使用して旅行の計画を立てたり変更したりします。

 Dave の出張管理には、旅行業者の Web サイトでの手作業がたくさん含まれます。複数のサイトにまたがる作業を調整し、複数のフィールド間でデータの切り取りおよび貼り付けを行う必要があります。レストランに予約を入れてから、そこへ行く車を手配する場合のように、順序が重要なものもあります。Dave の作業は、コンポジット アプリケーションやエンタープライズ アプリケーション インテグレーション (EAI : Enterprise Application Integration) ソリューションに似ています。このような手作業は手間がかかり、間違いも発生しやすいものです。Dave には基本的なプログラミング スキルがあるので、簡単なマッシュアップ アプリケーションを作成することにします。このマッシュアップは、クライアントサイド Web ページ スクリプトまたは簡単な HTML クリッピング (図 1 (A) を参照) を通じて旅行業者の Web サイトを使用します。そのマッシュアップによって Dave の仕事は少し楽になり生産性が上がります。出張の管理に割く時間が減り、本来の仕事に費やす時間が増えます。マッシュアップはカッコイイので、友達が感心します。

図 1 : マッシュアップの進化

 Mary と Ludwig はそのアプリケーションが気に入ったので Dave からコードをもらいます。2 人はコードをそのまま使用し、UI を変えることにします。モデル ビュー コントローラの簡単なバージョンを実装することによって (図 1 (B) を参照)、UI を Web サイト アクセス、スクリプティング、キャッシングから切り離し、そのアプリケーションを改良します。この改良により、PDA や携帯電話などの他のデバイスからアクセスする場合のコードの再使用も可能になります (図 1 (C) を参照)。最後に、2 人はそのモデル レイヤを部門内の Web サーバーに移し、簡単な Web アプリケーションを実装することにします。これで複数の人が情報にアクセスできるようになります。たとえばアシスタントもアクセスできます。

 2 人の友人は、便宜的にコンポジット アプリケーションを構築したわけです。これは簡単な擬似 EAI (エンタープライズ アプリケーション インテグレーション) ソリューションの例です。プログラミングのできるプロフェッショナルが労働力に加わると、このようなアドホックでジャストインタイムのアプリケーションがより一般的になります。"カッコイイ" ということに加えて、このようなアプリケーションは手間のかかるタスクを単純化してくれます。プロフェッショナルはジャストインタイム型のアプリケーションを、総会のような短期間の業務上の問題を解決するために構築することもできます。このようなアプリケーションは、ユーザーが既存データベースと基幹業務アプリケーションにアクセスして業務を実行する場合のスプレッド シートの役割に似ています。

 便宜的な状況依存型アプリケーションは、企業の体系的アプリケーションの供給方法に大きな影響を与えます。基幹業務アプリケーションの開発が影響を受けます。この状況依存型アプリケーションは基幹業務アプリケーションを突き崩す、あるいは基幹システムを予期しない方法で使用することになるかもしれません。IT 組織は、パフォーマンスと整合性を向上させるために、一部の "モデル レイヤ" を基幹サーバーに移動することになります。要するに、状況依存型アプリケーションが、体系的な業務アプリケーションを変質させるユースケースを定義することになるのです。状況依存型アプリケーションはユースケースの記述に使用される単純なモックアップに取って代わり、正規のモデル作成を行うことができるのです。

 多くの要因が、状況依存型アプリケーションをできる限り企業の基幹サーバーへ移動するよう圧力を掛けてきます。取引先の業者がそのアプリケーションを使用する必要があるかもしれません。そうなると企業のセキュリティを確保する必要があります。アプリケーションの中には、貸し付けの承認のように重要な業務上の決定の一部になるものも出てきます。ガバナンスとコンプライアンスの面から、データ アクセスと入力の記録、およびこれらのアプリケーションのコードの保存が要求されます。状況依存型アプリケーションをデータ センタに移動することには、大きな意味があります。データセンタは基幹業務ソリューションに加えて、何百何千もの頻繁に変更されるアプリケーションをサポートする必要があります。データ センタは、何千人ものユーザーがアクセスする基幹アプリケーションを満載した何十ものサーバーを管理する必要があります。それに加えて、アドホック アプリケーションを使用する小規模チームが何千もの仮想サーバーにときどきアクセスするのも管理する必要があります。

 体系的ソリューションが便宜的アプリケーションを使用するシナリオはたくさんあります。Dave は IT が彼の作ったアプリケーションを使用するのはカッコイイと考えます。

 要約すると、便宜的アプリケーションが体系的ソリューションを駆動し、体系的ソリューションが便宜的アプリケーションを強化する役割をします (たとえば、Representational State Transfer (REST) → Web サービス)。このようなダイナミクスにより、サービスとしてのソフトウェア、正確にはソフトウェアとサービスも駆動されます。ソフトウェアとサービスは、体系的および便宜的なアプリケーションの開発および配布を統合するプラットフォームを提供します。


 INDEX
  [アーキテクチャ・ジャーナル]
  インターネット サービス バス
  1.シナリオ : 便宜的開発と体系的開発
    2.ソフトウェアとサービス : インターネット サービス バス(1)
    3.ソフトウェアとサービス : インターネット サービス バス(2)
    4.ソフトウェアとサービス : インターネット サービス バス(3)

インデックス・ページヘ  「アーキテクチャ・ジャーナル」


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 記事ランキング

本日 月間