WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

Google Apps のプライベート・ガジェットの作り方

きちんとした記事を投稿するのは 2 ヶ月ぶりになってしまいました。購読してくださっている皆さん、申し訳ありません。まだ余裕ができたわけではないのですが、頑張って時間を作って記事を書いていきたいと思いますので、今後ともよろしくお願いいたします。

本日は Google Apps の Premier / Education Edition で使えるプライベート・ガジェットについてご紹介します。基本的には単なる Google ガジェットなのですが、通常のガジェットとは以下の点で異なります。

  • 自分のドメインでのみ利用できるガジェットが作れる。
  • ガジェット XML ファイルを公開 Web 上に置く必要がない。
  • コンテナが SSL でアクセスされている場合、ガジェット内部の通信も SSL で暗号化される。
  • Secure Data Connector (SDC) を経由することでイントラネット内にアクセス可能。

つまり、外部には出したくない組織内の情報を安全に扱うガジェットが作成できるというものです。 Google Apps の Sites などを使って企業内サイトを構築する際にはたいへん便利な機能です。それにも関わらず、日本語はもちろん英語でも資料が乏しく、 Google の公式なドキュメントも情報が古いという状況で、なかなか活用しづらいことになっています。そんなわけで、それなりに価値のある情報ではないかと思います。

準備

通常の Google ガジェットは公開 Web サーバーにガジェット XML を置くだけでデプロイ完了でしたが、プライベート・ガジェットはガジェット XML を公開しないのが利点のひとつなので、この方法は使えません。 Google が管理する「フィードサーバー」と呼ばれるサーバーにガジェット XML を登録する必要があります。

そのためのツールが Feed Server Client Tool (FSCT) です。これはコマンドラインで動作する Java アプリケーションで、ガジェット XML をフィードサーバに登録したり、そのガジェットをガジェットリストに公開したりといった操作を行ないます。プライベート・ガジェットの開発には必須のツールですので、まずは FSCT のインストール方法をご紹介します。

Java Runtime Environment (JRE) のインストール

FSCT は Java で書かれているので、実行には JRE が必要です。 Windows 用のインストーラは以下のページからダウンロードできます。

http://www.java.com/ja/download/

Linux の場合は、そのディストリビューションのパッケージ管理ツールでインストールするのがよいでしょう。 Mac OS X にはデフォルトで JRE がインストールされているので、何もする必要はありません。

Feed Server Client Tool (FSCT) のインストール

FSCT は以下のページで公開されています。

http://code.google.com/p/google-feedserver/downloa...

fsct.zip をダウンロードして適切な場所に展開してください。 Windows の場合はこれで終わりですが、 Linux / Mac OS X ではもう少しやることがあります。実行ファイルである fsct コマンドに実行フラグが立っていないので(tar.gz で配布してよ・・・)、それを手動で立てる必要があります。 fsct ディレクトリをカレントにして、以下のコマンドを実行すれば OK です。

chmod a+x fsct

以上で FSCT がインストールできました。

プライベート・ガジェットを作る

それでは、さっそくプライベート・ガジェットを作ってみましょう。そのためにはまずガジェット XML を作成し、それを FSCT でフィードサーバに登録します。

ガジェットの XML ファイルを作成

最初にガジェット XML を作成します。今回はガジェットの内容は関係ないので、以下のような単純なものを使います。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="Private Gadget" />
  <Content type="html">
  <![CDATA[

<h1>Private Gadget</h1>

  ]]>
  </Content>
</Module>

ガジェット XML を Web サーバーにアップロードする必要はありません。適当なローカルファイルとして保存しておいてください。以下では "~/first_private_gadget.xml" として上記の XML が保存されていると仮定します。

フィードサーバーに登録

前述のとおり、フィードサーバーにガジェットを登録するには FSCT を利用します。 fsct.zip を展開してできた fsct ディレクトリをカレントにして、以下のコマンドを実行してください。 Windows では、 fsct の代わりに fsct.bat を使います。

./fsct uploadGadget ~/first_private_gadget.xml

ユーザー名とパスワードを尋ねてくるので、 Google Apps の管理者ユーザーのアカウントを入力してください。試していませんが、たぶん一般ユーザーではダメだと思います。

認証に成功すると、ガジェット XML がアップロードされ、最後に以下のような行が表示されます。

URL: http://feedserver-enterprise.googleusercontent.com/a/<ドメイン名>/g/PrivateGadgetSpec/first_private_gadget.xml

この URL がアップロードしたガジェット XML の URL になります。ガジェットを更新する際も同じコマンドで OK です。ファイル名が同じであれば上書きされるようです。

Google Sites に挿入

あとは上記の URL を使ってガジェットを挿入するだけです。

  1. Google Sites で適当なページを編集状態にする。
  2. メニューの [挿入]-[その他のガジェット]を選択する。
  3. ダイアログの左ペインで「URLを指定してガジェットを追加」選択。
  4. 追加するガジェットの URL にガジェット XML の URL を入力し、「追加」ボタンをクリック。

ガジェットがうまく表示されないときは、ガジェット XML を修正して FSCT でアップロードし直せば、すぐに反映されます。私が試した限り、ガジェット XML にマルチバイト文字があるとうまくいかないようです。日本語メッセージなどはメッセージ・バンドルを利用するとよいでしょう。

ガジェットの公開

プライベート・ガジェットが完成したら、それをガジェットリストに表示して、エンドユーザーに公開できます。これも FSCT で、以下のコマンドを実行するだけでできます。

./fsct publishGadget first_private_gadget.xml

これでガジェットリストに表示される・・・はずなのですが、まだ確認できていません。一応コマンドは成功しているようなので、キャッシュの問題なのか、ガジェットの記述が手抜きし過ぎなのか・・・(^^; 原因がわかったら、ここに追記しますね。

プライベート・ガジェット独自の機能

プライベート・ガジェットは機能的には通常のガジェットとほとんど違いはありません。唯一、署名付きリクエストを送信する際の URL にユーザーのメールアドレスを付加することができます。以下のように makeRequest の OAUTH_ADD_EMAIL パラメータを true にすれば OK です。

var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
params['AUTHORIZATION'] = 'SIGNED'
params['OAUTH_ADD_EMAIL'] = 'true'
var url = 'http://app.webos-goodies.jp/entry';
gadgets.io.makeRequest(url, function(response) {
  // ...
}, params);

こうすると、以下のようにリクエスト URL のクエリーパラメータとしてユーザーのメールアドレスが渡されます(読みやすいように改行を入れています)。

http://app.webos-goodies.jp/entry?...(中略)...
  &opensocial_owner_email=foo%40webos-goodies.jp
  &opensocial_viewer_email=bar%40webos-goodies.jp...(後略)

本来は Secure Data Connector でユーザーを識別するために付けられた機能のようですが、通常の署名付きリクエストでも使えました。 2-legged OAuth と組み合わせれば、ガジェット単位でユーザー認証を行わずともプライベートなカレンダーやドキュメントを表示できます。組織内ポータルページなどには便利な機能でしょう。

なお、上記の情報を利用する際は、詐称を防ぐために署名の検証とリクエスト元のガジェット(opensocial_app_urlパラメータ)の確認を忘れないでください。署名の検証に使う公開鍵には、 iGoogle と同じものが使えるようです。

以上、本日は Google Apps のプライベート・ガジェットの作り方をご紹介しました。企業での Google Apps の採用はどんどん増えていくでしょうから、知っておいて損のない知識ではないかと思います。無料の Standard Edition で使えないのが残念ですが、 Premier / Education エディションをご利用の方は、ぜひご活用ください!

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles