OpenSocial JavaScript API のバージョン 0.7 は、豊富なソーシャル アプリケーションを十分にサポートするために、初めて API を見直したものです。機能はすべて API リファレンス (v0.7) で説明しているので、このセクションではバージョン 0.6 とバージョン 0.7 の違いを説明します。
プロファイル情報フィールドの標準化。このリリースでは Person に関するアクセス可能な標準フィールドを大幅に追加しました。追加されたのは、現在地、出身校、ペット、映画、スポーツ、その他のフィールドです。ただし、コンテナでこれらの情報すべてが必ずしも利用できるわけではないということにご注意ください。アプリケーションでは、最初に必ず supportsField メソッドを使用して、利用可能かどうかをチェックする必要があります。
口コミによる普及のサポート。2 つの新しいメソッドにより、ユーザーに代わってアプリケーションからメッセージを送信できます。requestShareApp メソッドで、ユーザーの友人にアプリケーションのインストールを勧めることができます。requestSendMessage メソッドで、アプリケーション固有のメッセージを送ることもできます。どちらのメソッドも、メッセージの送信元になるユーザーが最初にその要求を許可することが必要です。
アクティビティのテンプレート。アプリケーションまたはユーザーのデータの一部を使用するプレースホルダを含めた、アクティビティ メッセージを定義できるようになりました。このようにデータとプレゼンテーションを分離することで、複数のアクティビティをまとめて要約できるようになり、ユーザーは大量のメッセージに目を通さなくても、友人が何をしているかを把握できます。たとえば、5 人の友人が新しいアプリケーションをインストールした場合、5 件の最新情報を読む代わりに、5 人の友人がアプリケーションを追加したという 1 件の更新情報を読むということです。アプリケーションでのアクティビティ テンプレートの使用方法について、詳しくは OpenSocial API リファレンスの opensocial.Activity をご覧ください。
Persistence API の簡略化。グローバルとインスタンスをスコープとするアプリケーション データのサポートを、API から削除しました。グローバル アプリケーション データは、フィード (パフォーマンスのためにプリフェッチが可能) などのウェブ標準機能を使用して実装できます。インスタンス スコープのアプリケーション データは、キーにアプリケーションのモジュール ID を含めることで、ユーザー スコープの先頭に実装できます。
Apache Shindig プロジェクトの一環として、ガジェットはオープン ソース化されました。新しいガジェット仕様では、gadgets.* JavaScript 名前空間が定義されています。ここでは、便利でわかりやすくするために、Gadgets API のよく使用されるメソッドのいくつかが、すっきりした API に再編成されました。たとえば、_IG_Adjust_IFrame_Height は現在 gadgets.window.adjustHeight として使用できます (この更新は後方互換性があり、古いメソッドも Shindig ベースのレンダラにより機能するので心配は無用です)。
Gadgets API の注目すべき更新のいくつかを次にご紹介します。
「環境に配慮」した機能の増加。Gadgets API では、コンテナがガジェットをレンダリングする方法の詳細な情報を、アプリケーションで取得できるメソッドが提供されています。gadgets.windows.getViewportDimensions を使用すると、ガジェットで表示可能なサイズの情報を取得できます。また、gadgets.Prefs オブジェクトを使用すると、ユーザーの国や言語など、国際化のための情報を取得できます。gadgets.skins.getProperty メソッドを使用して、コンテナのフォントや背景色などデザインについての情報も取得できます。
ビュー - Surface から変更。現在のビューの取得や、ビュー間を移動するメソッドは Environment クラスから削除され、gadgets.views.* 名前空間に移動しました。
各ビューに対する指定の分離。ガジェット XSD は複数の <Content> ブロックをサポートするように拡張され、各 <Content> ブロックでレンダリングするビューを宣言するようになりました。gadgets.views.getCurrentView を使用して、実行時に現在のビューを取得することもできます。詳しくはガジェットの仕様をご覧ください。
Gadgets API を使用したリモート コンテンツのフェッチ。makeRequest メソッドは opensocial.* 名前空間から gadgets.io.makeRequest に移動しました。さらに 2 つの新しいフィールド HEADERS と POST_DATA が gadgets.io.RequestParameters に追加され、要求に任意の HTTP ヘッダーか POST データを送信できるようになりました。
Gadgets API を使用した、コンテナがサポートする機能の判断。hasCapability メソッドは opensocial.Environment クラスから削除されました。現在のコンテナがサポートする機能をチェックするには、gadgets.util.hasFeature を使用できます。
組み込みの JSON のサポート。gadgets.json.* パッケージの stringify と parse のメソッドを使用すると、サードパーティ ライブラリをインポートしなくても、Persistence API を使用してオブジェクトを保存できます。詳しくは OpenSocial API リファレンスをご覧ください。
OpenSocial JavaScript API (v0.6) には、いくつかの新機能が導入されています。新機能はすべて API Specification (0.6) で説明しているので、このセクションではバージョン 0.5 とバージョン 0.6 の違いを説明します。
それぞれの環境に応じて応答するガジェットの機能。新しい Environment クラスには hasCapability メソッドがあり、関数名を指定して、現在のコンテナでその関数を使用できるか確認できます。このクラスには、特定のフィールドが Person または Activity オブジェクトでサポートされているかどうかを確認する supportsField メソッドもあります。これらの新しいメソッドを使用すると、コンテナ固有の拡張機能が提供されている場合、アプリケーションが明確にそれを処理できます。Environment クラスには、どのサイトにいるか (たとえば orkut.com や myspace.com) を知らせる getDomain メソッドもあります。ただしドメインに関するキー指定は、他の明確な環境変数では十分ではない場合にのみ使用するようにしてください。
ある Surface から別の Surface への移動をサポート。このリリースでは、新しい Surface クラスも追加されています。opensocial.requestNavigateTo を使用して、コンテナのあるページから別のページに (たとえばプロファイルをキャンバス ページにリンクさせるため) ガジェットを移動できます。この呼び出しには Surface オブジェクトを使用します。これは Environment オブジェクトから取得 (opensocial.getEnvironment()) します。Environment の getSupportedSurfaces メソッドを使用すると、コンテナがサポートする Surface がわかり、getSurface を使用すると、現在使用されている Surface がわかります。getParams メソッドは requestNavigateTo の呼び出しで渡されるすべてのパラメータ (要求されている場合) を返します。Surface クラスには現在 getName と isPrimaryContent の 2 つのメソッドしかありませんが、API が拡張するとメソッドも追加される予定です。
許可のコントロールを強化。v0.6 では、より厳しい許可のコントロールが導入されています。ガジェットがデータ要求を使用して、サーバーからビューアをフェッチする場合、ガジェットにアクセス権がある場合を除いてフェッチできないようになりました。ガジェットにアクセス権がない場合、新たに定義された標準のエラー コードの 1 つである opensocial.ResponseItem.Error.UNAUTHORIZED が、代わりに返されます。新しい opensocial.hasPermission を呼び出すと、アクセス権の有無をあらかじめガジェットからチェックできます。アクセスが拒否された場合、opensocial.requestPermission を使用して指定の許可をビューアに要求できます。ビューアに常にアクセスを許可するコンテナや、常にアクセスを拒否するコンテナもありますが、現在この判断はコンテナ側で行います。
リモート コンテンツのフェッチのサポートを強化。新しい opensocial.makeRequest メソッドがさらに API に追加されました。これは現在のガジェット API の IG_Fetch... メソッドの拡張です。opensocial.makeRequest メソッドでは GET だけでなく POST も考慮されるので、データ フェッチの際に、署名や認証も行うように指定できます。
その他の変更と削除
Activity が次のように整理されました。
Stream クラスが削除され、そのフィールドが Activity クラスの一部となりました。Activity クラスの Summary フィールドが削除されました。タイトルと本文で、デベロッパーのほとんどのニーズに十分応えられると判断されたためです。 People を要求する際、opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS の値に幅広いカテゴリ (BASIC、MATCHING、FULL など) を使用する代わりに、Person フィールド (supportsField メソッドで事前にチェックが必要) の配列を指定できるようになりました。カテゴリの代わりにフィールドを指定することで、本当に必要な情報だけを提供するように呼び出しを調整できます。
最後に、コンテナに対する init メソッドが削除されました。ガジェットでは、必ず requires タグを使用して opensocial をフェッチしてください。ガジェットで opensocial を初期化するこれ以外の方法は使用しないでください。