皆さんもよくご存じのAjax(Asynchronous JavaScript And Xml)は,2005年2月にAdaptive Path社のJesse James Garrett氏が自身のコラム「Ajax: A New Approach to Web Applications」上で著したものが注目を浴び,急速に認知されるようになったキーワードです。

 当時のあまりな過熱ぶりに,筆者などは「所詮はただのBuzzwordだろう」と思っていたものですが,その後1年半を経て,Ajaxは着実に普及と浸透を強めています。昨今では,サーバーサイドJava,PHP,ASP.NETなど主要なサーバーサイドなど主要なサーバーサイド開発環境の世界でもAjaxに対応したフレームワークやライブラリが登場しつつあり,Ajaxも単なる「流行もの」から現実的な使い方が模索される時期へと移ろいつつあるように思えます。

 さて,本連載で扱う「Atlas Framework」は2006年末に,マイクロソフトが無償提供を開始するAjax対応フレームワークです(カコミ記事「Atlas Frameworkの正式名称」も参照)。マイクロソフトのサーバーサイド処理環境である,ASP.NET 2.0環境で動作します。ASP.NET 2.0+Atlas Frameworkの組み合わせでどのようなことができるのか,どのような点が便利になるのかに力点を置いて紹介を進めていきたいと思います。Ajaxそのものに関する技術解説は,別連載「今からでも遅くない Ajax基本のキ」で紹介していますので,こちらも合わせて参照してください。

フレームワークが解決する問題点

 Atlas Frameworkについて概説する前に,まずはフレームワークを利用しないでAjaxアプリケーションを実装する場合の問題点をおさらいしておくことにしましょう。

 前掲の連載「今からでも遅くない Ajax基本のキ」でも詳説しているように,Ajax技術とはJavaScript(XMLHttpRequestオブジェクト)にDHTML,XMLと,昨今のブラウザなら標準で提供している機能の組み合わせにすぎません。Ajaxアプリケーションを開発するために,特別なプラグインやライブラリ,開発環境などを一切導入する必要がないという点は,Ajax技術の大きな強みです。しかし,標準的な機能のみでのプログラミングには,開発生産性/保守性の観点でいくつかの課題があります。

(1)クロスブラウザ問題
 クロスブラウザ問題とは,ブラウザ間の仕様差によって発生する挙動の違いのことを言います。例えば,Internet Explorerとそれ以外のブラウザにおけるXMLHttpRequestオブジェクトの違いなどは,クロスブラウザ問題の典型的な例です。

 Ajax技術を構成する中核の要素がクライアントサイド・スクリプトである以上,アプリケーション開発者は,常にこのクロスブラウザ問題を意識してコーディングする必要があります。クロスブラウザ問題への対策は,ときとしてトリッキーなコーディングを要する場合もあり,アプリケーションの開発生産性を低下する一因となります。

(2)DOMによるコードは冗長になりやすい
 クライアント-サーバー間で構造データをやり取りしたい場合によく利用するのがXML(eXtensible Markup Language),そのXMLで書かれた文書を処理するためのAPIがDOM(Document Object Model)です*1。なるほど,DOMはXML文書処理のための強力なAPIですが,ちょっとした処理を記述するにも回りくどく,冗長になりやすいという難点があります。当然,冗長化したコードはわかりにくく,思わぬエラーを混在させる一因にもなりますし,ちょっとした変更にも対応にしくくなります。

 そこで登場するのが,Ajax対応ライブラリ(フレームワーク)です。Ajax対応ライブラリとは,その名の通り,Ajaxプログラミングを効率化するための機能を備えたクラスライブラリやフレームワークのこと。すでに様々なライブラリが公開されています。一概に言うことはできませんが,その多くが上で挙げたようなクロスブラウザ問題やデータ交換の手間を省くための機能を提供しており,アプリケーションの開発生産性/保守性を向上できます*2

 本連載の主テーマであるAtlas Frameworkもまた,(冒頭述べたように)ASP.NET 2.0環境で動作するAjax対応フレームワークです*3。Atlas Frameworkを利用することで,クライアント環境に依存しないAjaxアプリケーションの構築が容易になります。

JavaScriptを記述せずにAjaxを実現することも可能

 Atlas Frameworkのモジュール構成について,より詳細を見てみましょう。Atlas Frameworkは大きくクライアント・フレームワーク/サーバー・フレームワークに分類することができます。以下に,Atlas Frameworkの構成を示します(図1)。

図1:Atlas Frameworkの構成

 図1を見てもわかるように,クライアントフレームワークは,さらに「ブラウザ互換層」「スクリプトコア」「クラスライブラリ」に分類できます。

 ブラウザ互換層とは,その名の通り,ブラウザごとの実装の違いを吸収するための仕組みを提供するものです。スクリプトコアは,JavaScriptの型システムを管理します。具体的には,名前空間や継承,インタフェースなどの仕組みを提供するレイヤで,これによってJavaScriptで .NET Frameworkライクなコーディングが可能になります。クラスライブラリは,DebugやTraceのような .NET Frameworkクラスライブラリによく似た基本クラス(機能)を提供します。TextBoxやButton,HyperLinkなど,クライアントサイド・スクリプトから操作可能なコントロール部品が含まれるのも,このレイヤです。

 一方,サーバー・フレームワークは,ASP.NET 2.0をベースとしたサーバー拡張から構成され,ブリッジ機能と拡張サーバーコントロールとに分類されます。ブリッジは,Webサービスやメンバーシップ・フレームワーク,プロファイル機能など,ASP.NET 2.0が標準で提供するサービスとクライアントサイド・スクリプトとがやり取りするための橋渡しを担うものです。

 サーバーコントロールには,ページ内のコンテンツを部分的に更新するUpdatePanelコントロールやクライアントとサーバー間の通信状態を表示するUpdateProgressコントロール,一定時間置きに通信を発生するTimerコントロールなどなど,Ajax機能に対応した拡張コントロールを含みます。これら拡張コントロールを利用することで,定型的なAjax機能を実装するだけならば,JavaScriptを一切記述することなく実現できます。

 以上,今回はここまでです。次回からは,実際にAtlas Frameworkを使ったAjax対応アプリケーション開発の具体的な手順を見ていきましょう。

【カコミ記事】Atlas Frameworkの正式名称

 これまで開発コードでマイクロソフトが「Atlas」と呼んできたAtlas Frameworkですが,先日,正式版1.0のリリース時期が発表されたのに伴い(関連記事「Microsoft,Ajaxフレームワーク「Atlas」の正式版を2006年末リリース」),正式名称が決定しました。従来,Atlas Frameworkと総称されていた機能は,それぞれ機能別に細分化されて,以下のように命名されています。

Atlas Frameworkの正式名称
従来正式版
Atlas Framework(クライアント)Microsoft AJAX Library
Atlas Framework(サーバーサイド)ASP.NET 2.0 AJAX Extensions
Atlas Control Toolkit*AASP.NET AJAX Control Toolkit
*A Atlas Control Kitは,Atlas Frameworkをベースに構築されたサーバーコントロール集です。Atlas Control Kitの詳細については,本連載後半で紹介する予定です。

 ただし,本連載ではこれらのモジュールを総称する呼び名として,従来の開発コードである「Atlas」(またはAtlas Framework)を使用するものとします。

【注】本記事は執筆時点(10月上旬)時点の情報に基づいています。10月20日に公開された最新βリリースについては,連載の第2回以降で紹介していきます。

*1 Ajax(Asynchronous JavaScript And 「Xml」)だからといって,XMLの利用は必須ではありません。昨今ではYAML(YAML Ain't Markup Language)やJSON(JavaScript Object Notation)のようなフォーマットも用意されており,これらのフォーマットを利用することで,コードをシンプルに記述できる場合があります。

*2 Atlas Frameworkのほかにも,様々なAjax対応ライブラリが公開されています。主なライブラリについては,別稿「Ajax対応ライブラリを利用しよう」でも紹介していますので,興味のある方は合わせて参照してください。

*3 厳密には,Atlas Frameworkは必ずしもASP.NET上でしか利用できないわけではありません。Atlas Framework上で提供されているクライアントサイド・スクリプト(「.js」ファイル)だけを切り出すことで,ASP.NET以外の環境――例えば,PHPやサーバーサイドJavaのような環境でAtlas Frameworkのクライアントサイド機能を利用することも可能です。ASP.NET以外の環境で利用するには,Atlas Frameworkのインストール・フォルダ配下に含まれる「/ScriptLibrary/Release」フォルダの中身をアプリケーションに配置するだけです。