共働的ウェブアプリケーションへの一歩
Baby Steps to Synergistic Web Apps [@lesscode.org]
ウェブアプリケーション間でデータをコピー&ペーストしたい
今、ウェブアプリケーションのUI技術とプラクティスが集積されてきている
- ドキュメントの構造と表現は分離すべし、というのは基本的な定理だ
- また一方で 37signals のようなAJAXイノベーターがデスクトップかと見紛うようなウェブアプリケーションをつくっている
- 例: OASIS、OPML、Microsoft Office XML、Open Office XML
- XMLボキャブラリは様々な分野・ドメインを表している; 構造でもなく表現でもなく
- 例: 商業分野: 注文管理、個人的な協調作業の分野: カレンダーやコンタクト管理、その他様々な技術の分野がある
- これら全体が一緒になって私たちの世界の巨大な「ドメインモデル」を作っていっている
- これら共有された、フリーのドメインモデルの開発・改良・利用は、情報システムの作り手、使い手の両方にとって大きな価値がある
ウェブアプリケーションを考える
- 静的なウェブサイトではなく、まっとうなウェブアプリケーション
- eメール、カレンダー、カスタマーサポート etc.
- ウェブアプリケーションが操作しているのは、特定のドメインに限定された情報である; もちろんユーザーに情報を提示する必要もあるが
- その間、ウェブアプリケーションが互換性のある形で扱っている情報を外にだすことは極めて少ない
- ファイルのアップロード・ダウンロード程度だ
- あるアプリケーションから住所を選んで、別のオンラインショップで届け先として使えたりはしない
一つ一つのウェブアプリケーションは島である
- こうした一枚岩的なアプローチのために、成功するのは巨大なアプリケーションをつくれるベンダーだけになる
- Mashup 流にもできるが、エンドユーザーには大して恩恵をもたらさない
ウェブアプリケーションがこれまでのデスクトップのそれと違う点
- ウェブアプリケーションでは、ドキュメントの構造と表現の世界と、ドメイン・モデルの世界との橋渡しがされていない
- Web 2.0 が本当に新しいプラットフォームなのなら、古いプラットフォームを振り返ってみるべきだ: Macintosh、Windows、X-Windowsではこの橋渡しはどう実現されてきたのか
覚えてるかい - 大学一年の英語の時間、後ろの席だったんだ
クリップボードの概念が重要な橋渡しだった
- クリップボードのパラダイムのもとでは、プラットフォームに共通した操作方法が、すべてのアプリケーションでサポートされている
- 内容を指定し、クリップボードにコピー、その後別の場所に「貼り付ける」ことができる; 元のアプリケーションでもいいし、別のアプリケーションでもいい
クリップボード・パラダイムの根底にあるもの: 同じ内容を表現するには、様々なやり方があるということ
- ここに、表現とドメイン・モデルの橋渡しが実現されている
ウェブのアーキテクチャ上でクリップボードの概念を実装することができたら、そのメリットは大きい
- ウェブアプリケーションの提供者はより小さくしかけることができる
- より多くの提供者・アプリケーション・機能がもっと早く世に出ることができる
- 使えるXMLボキャブラリが花開いているというのに、私たちはファイルをアプリケーションの間でダウンロード、アップロードしている
「今でもブラウザーでカット&ペーストできる」とおっしゃるか
何を待っていることがあろうか
ちょっと待て、AJAXを使えないか?
- AJAXで、ユーザーの色々な操作に対して適切な振る舞いができるではないか
- それに応じてまた、ブラウザーとウェブアプリケーション間の通信もできるではないか
「ウェブアプリケーション・クリップボード」のスタンダード
- もし: 情報元のアプリケーションが、標準化された「ウェブアプリケーション・クリップボード」の構造をデスクトップのクリップボードに持ち込むことができたとして
- もし: ユーザーが目的のアプリケーションにその内容を送ることができたとして
- そうなれば、ユーザー自身がその場その場で各所の情報をミックス Mash Up していることになる
実現のために何が必要か-標準化規格団体内にワークグループを、保守派に売り込みをかける…
- のような重たいことをする必要は無い; 自分たちの好きなようにやるのだ:
- 1. クリップボードを定義するボキャブラリーを決めて、合意する: http://www.lesscode.org/clipboard/v0p1
- 2. ECMAscript を用意: http://www.lesscode.org/clip-source-request/v0p1
- カットとコピーの操作に反応し
- 情報元のウェブアプリケーションにXMLHttpRequestを送信
- 3. ウェブアプリケーションがクリップボード構造体を返す: スキーマ: http://www.lesscode.org/clip-source-response/v0p1、サンプルのドキュメント: http://www.lesscode.org/clip-source-response/sample-1
- 内容は実体値または参照値で返される [詳細割愛]
- 4. ECMAscript を用意: http://www.lesscode.org/clip-destination-request/v0p1
- (受け手のアプリケーションで)貼り付けの操作を認識し
- XMLHttpRequest で受けてのアプリケーションに以下を送信:
- 目的のURI(XPointerで終わる)
- 現在のウェブアプリケーション・クリップボード構造体
- コマンド {paste|link}
- 5. 受けてのウェブアプリケーションがステータス・コードを返す: http://www.lesscode.org/clip-destination-response/v0p1
- これで、基本的なコピー&ペースト、カット&ペーストはサポートできる
- これから後、SAMLなどにアイデンティティ管理のような問題を解決させるのは、えらい人にまかせておけばいい
- アプリケーション間の通信は考えてみる必要はあるかもしれない; シンプルさのため、例えばブラウザーを通す必要の無いものは通さなくてすむように
この先起こりうること
ウェブプラットフォームへ乗り換えるときに取り残されたものを再び手に入れることで、次の世代のプラットフォームへの道が開ける
- デスクトップ・プラットフォーム・クリップボードとウェブアプリケーション・クリップボード間の橋渡し - Firefox 連中の仕事かな !
- ブラウザー・ジェスチャの標準化: アプリケーション間のドラッグ&ドロップ、コピー、移動、リンク
- アプリケーション間のコンテンツのクロス・リンクをサポートするスタンダードを採用; 標準化団体で合意
- ドキュメントの構造を表すものでしかないXHTMLでも、class属性を使うことでドメイン・モデルでの意味を付与することができる。microformats.orgでとられているアプローチ。これがあればウェブアプリケーション・クリップボードはいらない? マイクロフォーマットで、ブラウザーは全知全能になる?
そう、別のrssリーダーを試すときなど、とみに思う