AjaxとRIAの興隆

クラサバのアプリに似た「リッチなユーザーインターフェイス」も、web2.0の構成要素として特徴づけられたものの一つであった。
ただ、Web2.0の他のコンセプト(ユーザー参加や、サービス志向など)が、「インターネットを利用したビジネス」の観点から導出されたものであるのに対して、技術的な色合いが濃く、コンセプトの統一性という面で「なんとなく浮いた」印象であった。それと同時に、他のコンセプトより具体性が高いことから、多くの開発者がこれに取り組んだ。

この当時、すでに、Java Applet、DHTMLやFlashといった動的なWebクライアント(ブラウザー上で実行されるクライアントアプリケーション)はあったのだが、これを「web2.0」へ格上げしたのも、googleであった。
Google Map、Gmailが、インターネット社会に与えた影響は革命的の感があった。1Gバイト(当時)の無料のメイルストレージ、マウス操作でスクロールする衛星写真と地図、といったサービス。
これら、「Webでは考えられなかったユーザー体験」が、主にJavascriptと、非同期の通信処理によって実現されたことから、Ajax(Asynchronous javascript and XML)という言葉が流行し、定着した。Ajaxは、Jesse James Garretが、(5年前の)2005/2/18付のエッセー「Ajax:A New Approach to Web Applications」で発表したのが最初とされている。

Garretは、この中で、

  • 標準に準拠したXHTMLCSSによる表現
  • DOMモデルを使った動的な表示とインタラクション
  • XMLXSLTを使ったデータ交換と操作
  • XHRを使った非同期でのデータ取得

そして、これらのすべてを統合する技術としてのJavascript

をして、Ajaxの定義としている。

Google Mapや、Gmail、Writely(Googleによって買収されて、google docsのwriterになった)、スプレッドシート(名前を忘れてしまった。。。)といったWebアプリケーションが、新たなユーザー経験を生み出しており、その中核的な技術が「Ajax」と名付けられたということである。RIA(Rich Interface Application)という言葉ができたのもこの頃かもしれない。

このような、リッチ・インターフェイスの自然な流れとして、その延長線上には、「ブラウザー上にデスクトップを構成できる」という考えが生じ、それを具現化するプロジェクトとして、x-desktopといったプロジェクトが発生した。

また、この時期に、Browser Abstraction Layer(BAL)という言葉を雑誌で読んだ記憶がある。

Javaはwrite Once, Run everywhere を標榜する言語として登場したが、OSの違いによってアプリケーションを書きかえることを回避するために、VM(Virtual Machine)という抽象レイヤーの概念と実行環境を提供した。
Javaで作るクラサバのアプリには、AWTというJavaモジュールが提供されたが、このAWTとは(abstraction windows toolkit)の略である(抽象的なWindow環境を提供するツールキットの意味)。
BALとは、このJVMの考え方を一歩進めて、ブラウザーそのものを抽象レイヤーとするいうコンセプトである。Web上でRIAアプリが実現できるのであれば、OSなど気にする必要はない、というわけである。
当時(も今も)、ブラウザーの挙動には微妙な違いがある。Webアプリを開発する際には、ブラウザー間の挙動の違いを吸収するようなコードを書かなくてはならない(これを、クロスブラウザー対応という)。

ブラウザーの挙動の基本はW3Cで規格・標準化されるものであるが、IEMozillaFireFox)、SafariOperaFireFoxSafariは歴史が浅い)の挙動の違いを吸収し、BALを推進するツールとして、多くのJavascriptライブラリーが登場した。当時は、Prototype.jsYUIDojoといったところが有名どころであったと記憶している。

Googleが、高速にJavascriptが動作するブラウザーであるChromeを発表し、今年内には、Chrome OSを搭載したマシンが登場するという。
この動きは、BALとしてのChrome、デスクトップアプリに劣らないインターフェイス技術(Ajax)の成熟、というバックグラウンドがあるのに他ならない。

また、現在、提供されるSaaSの多くはRIAアプリケーションである。(ただし、Ajaxアプリケーションとは限らない)
Webアプリケーション面からは、こんな風にしてクラウドコンピューティングの萌芽が形成されていった。