連載:Microsoft AJAX Library&JavaScriptプログラミング

第1回 Microsoft AJAX Libraryで実践オブジェクト指向JavaScript

山田 祥寛(http://www.wings.msn.to/
2007/10/16
Page1 Page2 Page3 Page4


連載:Ajax時代のJavaScriptプログラミング再入門

 Microsoft AJAX Library(以降、「MS AJAX Lib」)は、ASP.NET AJAXの中で提供されるクライアントサイド・フレームワークである。

 ASP.NET AJAXというと、コーディングレスでAjax機能を実装できるASP.NET 2.0 AJAX Extensions(以降、「AJAX Extensions」)――いわゆるサーバサイド・フレームワークにフォーカスされることが多い(下図参照)。もちろん、AJAX Extensionsが強力なフレームワークであることは疑う余地もないのだが、AJAX Extensionsだけで実現できる事柄にはやはり限界もある。というよりも、あくまで定型的なAJAX機能をシンプルに提供するのがAJAX Extensionsの役割であると考えるべきだろう。


ASP.NET AJAXの構成
大きくクライアントサイド・フレームワークとサーバサイド・フレームワークとに分類でき、いずれか片方のみを利用することも、双方を密に連携させることも可能だ。

 そこで登場するのが、クライアントサイド・フレームワークであるMS AJAX Libだ。MS AJAX LibはJavaScriptベースのライブラリであり、その使用に当たっては、JavaScriptの基本的な理解が必要となる分、(特にサーバサイド開発に慣れた方にとっては)AJAX Extensionsよりもハードルの高いライブラリかもしれない。しかし、その分、AJAX Extensionsだけでは実現できないアプリケーション固有の要件に応じたAjax機能の実装が可能になる。

ASP.NET AJAX ファーストルック
データベース・プログラミング 7つのヒント− 同時実行制御からASP.NET AJAXまで

 本連載では、まだまだ日本語での資料が少ないMS AJAX Libについて、基本的な機能を解説するとともに、最終的にはMS AJAX Libを利用した自作のAjax対応コントロールを作成するまでを目的とするものだ。そして、連載第1回の今回は、MS AJAX Libを利用するうえで最も基本となる型システムにかかわる機能を紹介する。

 なお、本連載を読み解くに当たっては、JavaScriptの基本的な構文を理解しておくのが好ましい。JavaScript(特にオブジェクト指向構文)の理解に不安がある方は、拙稿の、

連載:Ajax時代のJavaScriptプログラミング再入門(全4回)

も併せて確認されることを強くお勧めする。

[参考]ASP.NET 3.5でのASP.NET AJAX

 すでにさまざまなニュースでも取り上げられているように、2007年末にはいよいよ次期Visual Studio 2008(ASP.NET 3.5)のリリースが迫っている。そんな中で読者の皆さんが気になるのは、次期ASP.NET 3.5ではASP.NET AJAXはどうなってしまうのかという点かもしれない。

 が、心配はいらない。ASP.NET 3.5では、ASP.NET AJAXが標準のライブラリとして追加される。つまり、追加でインストールなどの作業を行うことなく、標準的なASP.NET 3.5の構成のみでASP.NET AJAXの機能が利用できるようになるということだ(ASP.NET AJAX Control Toolkitは除く)。

 気になる変更点についても、以下のようないくつかの改善ポイントはあるものの、基本的な機能は従来のASP.NET AJAXのそれをほとんどそのまま引き継いでいる。

 つまり、ASP.NET AJAXをベースに学んだ知識は、ASP.NET 3.5になってもそのまま利用できるということだ。ASP.NET AJAX(MS AJAX Lib)をこれから学ぼうという方も安心して学習を進めていただきたい。

MS AJAX Libの導入

 学習に入る前に、まずはMS AJAX Libを利用するための環境を用意しておこう。

 前述したように、MS AJAX LibはASP.NET AJAXの一部である。MS AJAX Libを利用するに当たっては、ASP.NET AJAXのインストールとアプリケーション構成ファイル(Web.config)の設定が必要となる(ただし、Visual Studioを利用している場合、プロジェクト・テンプレートを利用することでWeb.configの設定は自動的に行われる)。

 ASP.NET AJAXのインストールと基本的な環境設定については、別稿「データベース・プログラミング 7つのヒント− 同時実行制御からASP.NET AJAXまで −」でも解説しているので、併せて参照していただきたい。

[参考]非ASP.NET環境でMS AJAX Libを利用する

 MS AJAX Libは、それ自体が完結したJavaScriptライブラリだ。従って、PHP(PHP:Hypertext Preprocessor)やJavaEE(Java platform, Enterprise Edition)のような非ASP.NET環境で利用することも可能である。そしてその場合には、ASP.NET AJAX全体ではなく、MS AJAX Libを単体で導入しても構わない。MS AJAX Lib単体の入手先は以下のとおり。

http://www.asp.net/ajax/downloads/library/

 MS AJAX Lib単体のパッケージは(.msi形式ではなく).jsファイルを圧縮しただけの.zip形式で提供されているので、非Windows環境でも簡単に利用できる。MS AJAX Libを非ASP.NET環境で利用する例については、本連載の後の回であらためて紹介する予定だ。

MS AJAX Libの構造

 MS AJAX Libに含まれる個別の機能について解説する前に、MS AJAX Libの全体的な構成を鳥観しておこう。MS AJAX Libは冒頭の図でも示したように、さらに以下のレイヤに分類することができる。

  • ブラウザ互換層
  • スクリプト・コア
  • 基本クラス・ライブラリ

 「ブラウザ互換層」とは、ブラウザごとの実装の違い(クロス・ブラウザ問題)を吸収するためのレイヤだ。いまさらいうまでもなく、クライアントサイド・プログラミングを行ううえで、クロス・ブラウザ問題は避けて通ることのできない課題の1つである(Mozilla FirefoxやApple Safariなど、いわゆる「Web標準対応」のブラウザが登場したことで、一時期に比べて問題が軽減したとはいえ、完全に解消されたわけではない)。

 しかし、MS AJAX Libでは、ブラウザ互換層(厳密には、その上位レイヤである各種クラス・ライブラリ)を介してコーディングすることで、クロス・ブラウザ問題を限りなく意識せずに開発を行えるというわけだ*1。執筆時点では、MS AJAX LibはInternet Explorerはもちろん、Firefox、Safariなど主要なブラウザに対応している。

*1 もちろん、クライアントごとの表示や挙動をまったく確認しなくてよいという意味ではない。最終的に、個々のブラウザおよびその各バージョンでの動作確認は欠かせない。

 ブラウザ互換層の上位に位置するのが「スクリプト・コア」である。スクリプト・コアは、名前空間やインターフェイス、継承/実装など、.NET Frameworkライクなオブジェクト指向構文をJavaScript上で実現するための基本的な型システムを提供する。

 別稿「JavaScriptでオブジェクト指向プログラミング」で述べたように、JavaScriptのオブジェクト指向構文は一種独特だ。一度理解してしまえば、それほど難しいものでないとはいえ、これまでVisual BasicやC#でのオブジェクト指向に慣れてきた開発者にとっては、なかなかなじみにくいというのも事実だろう。

 そこで、このスクリプト・コアでは、JavaScriptとVisual Basic/C#との間の差異を橋渡しするための仕組みを提供することで、サーバサイド開発者のJavaScript学習負荷を最小限に抑えているわけだ。MS AJAX Libを習得するうえでは、まずスクリプト・コアを理解することが、学習の第一歩となるはずだ。

 そして最後に、MS AJAX Libの最上位層に位置するのが「基本クラス・ライブラリ」である。基本クラス・ライブラリには、クライアントサイドでAjaxプログラミングを行うための基本的な支援機能が含まれている。

 以下に、MS AJAX Libで提供されている具体的なクラス・ライブラリをまとめておく。詳細については、以降で適宜紹介していくので、ここではまず全体像を把握するという意味合いでご覧いただきたい。

名前空間名 概要
Global* JavaScript基本オブジェクト(ArrayやString、Errorなど)の拡張や、スクリプト・コアの実体であるTypeオブジェクト、ショートカット関数を提供
Sys アプリケーションのライフサイクルやクライアント・コンポーネントの管理、デバッグ機能、カルチャ(国際化対応)など、アプリケーション全体にかかわる共通的な機能を提供
Sys.Net 非同期通信にかかわる基本機能を提供(ブリッジ機能へのアクセス手段であるプロキシ・クラスもこの名前空間で提供される)
Sys.Serialization 構造化データのJSON形式へのエンコード/デコード機能を提供
Sys.Services アプリケーション・サービス・ブリッジ機能へのアクセス手段を提供
Sys.WebForms UpdatePanelコントロールによる非同期通信の前後で発生するイベントと、その管理手段を提供
Sys.UI クライアント・コントロールを実装するための基本クラスや、個別要素へのアクセス手段、また、その中で発生するイベントの管理
MS AJAX Libで利用可能な主なクラス・ライブラリ
* Global名前空間とは、いずれの名前空間にも属さない、グローバルに利用できるクラスや関数を分類するための便宜上の名前空間である。

 さまざまな機能が提供されているが、この中でも特にGlobal名前空間、Sys/Sys.WebForms名前空間の理解は欠かせない。本連載でも、これら名前空間の解説を中心に進めていく予定である。

 

 INDEX
  Microsoft AJAX Library&JavaScriptプログラミング
  第1回 Microsoft AJAX Libraryで実践オブジェクト指向JavaScript
  1.Microsoft AJAX Libraryの導入と構造
    2.スクリプト・コアによるクラス定義の基本
    3.MS AJAX Libによるさまざまなオブジェクト指向構文
    4.インターフェイスの定義と実装/[コラム]Typeクラスの実体
 
インデックス・ページヘ  「Microsoft AJAX Library&JavaScriptプログラミング」


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

本日 月間