SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

developerWorks Liaison(AD)

企業システムでも使われるウィジェット技術
第2回 「OpenAjax Hub 2.0 による安全なマッシュアップ」

  • このエントリーをはてなブックマークに追加

OpenAjax Metadata仕様におけるマッシュアップ可能なウィジェット(Mashable Widget)

 OpenAjax Metadataとは、Ajaxツールキットの互換性を確保するためにAjaxのウィジェットやAPIのためのメタデータをXMLで表現する形式を定義した仕様で、現在バージョン1.0のドラフト版が公開されています。

 OpenAjax Metadata仕様の対象とするウィジェットは、コンボボックスやメニューバーのようないわゆるUIコンポーネントと、前節で述べたような独立した機能を提供するウィジェットの両方を含みます。この仕様中では、特に他のウィジェットと連携してマッシュアップを可能とするようなウィジェットを mashable widgetと呼んでいます。ウィジェットを他のウィジェットと連携させ、マッシュアップ可能にするためには次のようなメタデータを定義する必要があります。

  • <widget> 要素の jsClass属性: <widget> はウィジェットのメタデータ定義のルート要素です。<widget> 要素のjsClass属性にはウィジェットの振る舞いを実装したJavaScriptクラス名を指定します。この属性を指定することで、そのウィジェットが mashable widgetであることを宣言することになります。同時に、そのウィジェットはOpenAjax Metadata仕様に定義されたWidget APIをサポートする必要があります。
  • <property> 要素の sharedAs 属性 :デフォルトではウィジェットのプロパティは他のウィジェットから参照することができませんが、sharedAs属性を指定することでパブリック・プロパティとしてウィジェット間で参照することができるようになります。
  • <topic> 要素: ウィジェットが発行 (publish) したり購読 (subscribe) したりするメッセージ・トピックを指定します。ウィジェットは、OpenAjax Hub 2.0 HubClient クラスのpublish関数とsubscribe関数を使ってメッセージを発行したり購読したりできます。

 また、 mashable widgetを実装した JavaScript クラスの中で、以下のようなWidget APIを実装する必要があります。

  • ウィジェットのロードやアンロードなどのライフサイクルイベント処理
  • ウィジェットのプロパティの読み書きや、プロパティ変更時のイベント処理
  • topicへのメッセージの発行・購読などのイベント処理
  • ウィジェットのサイズ制御
  • モード(view, edit, help)
  • ドメインをまたがったHTTPリクエストをプロキシ経由でアクセスためのURL書き換え処理

 その他に、マッシュアップを円滑に行うために、以下のような属性を使用可能です。

  • <widget> 要素の sandbox 属性により、ウィジェットを iframeによるサンドボックスに閉じ込めるべきかどうかのヒントを指定する
  • <widget> 要素の scrolling 属性により、ウィジェットにスクロールバーを表示するかどうかを指定する
  • <widget> 要素の singleton 属性により、そのウィジェットがWebページ内に一つ以上存在してもよいかどうかを指定する
  • <content> 要素の mode 属性により、そのウィジェットが閲覧 (view) モードか編集 (edit) モードか、などを指定する

まとめ

 今回は、ブラウザ上でマッシュアップ可能なウィジェットを扱うための標準仕様であるOpenAjax Hub 2.0仕様 と OpenAjax Metadata 1.0仕様についてサンプルコードを交えてご紹介しました。

 今回ご紹介したコードについては、OpenAjax Allianceにより公開されているOpenAjax Hub 2.0 のリファレンス実装により動作確認を行いました。OpenAjax Hub やOpenAjax Metadataの詳細については、 OpenAjax Allianceにより公開されている仕様をご覧ください。

参考文献

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
developerWorks Liaison連載記事一覧

もっと読む

この記事の著者

吉濱 佐知子(ヨシハマ サチコ)

IBM 東京基礎研究所 専任研究員日本アイ・ビー・エム(株)東京基礎研究所で、情報セキュリティ関係の研究に従事しています。特にWeb 2.0/SaaSのセキュリティ、情報フロー制御や情報漏えい対策技術に興味を持っています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4610 2009/11/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング