CodeZine(コードジン)

特集ページ一覧

企業システムでも使われるウィジェット技術
第3回 「ウィジェットの活用例 - JazzによるOpenSocialガジェットの利用」

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/12/14 14:00

 本連載では、ウィジェット関連の技術動向についてご紹介しています。第3回となる本稿では最近注目を集め始めているOpenSocialの中のガジェット仕様を活用しようとしている一例として、開発ツールのプラットフォームを提供するJazzプロジェクトの取り組みを紹介します。

はじめに

 本連載では、ウィジェット関連の技術動向についてご紹介しています。第3回となる本稿では最近注目を集め始めているOpenSocialの中のガジェット仕様を活用しようとしている一例として、開発ツールのプラットフォームを提供するJazzプロジェクトの取り組みを紹介します。

OpenSocialとJazz

 本稿のタイトルに含まれる2つのキーワード「OpenSocial」と「Jazz」。どちらも初めて耳にする言葉かもしれません。最初に、それぞれの言葉の意味を簡単にご紹介したいと思います。

OpenSocial

 OpenSocialはソーシャル・ネットワーク・サービス(SNS)が提供するAPIの標準化やユーザー・インターフェースのコンポーネント定義の標準化によって、さまざまなSNSサイトへの統一したアクセス方法を提供したり、サイト間の連携を可能にしたりすることを目的に、Google社が発案し、現在はOpenSocial Foundationによって仕様の策定が進められているオープンな仕様です。SNSへのアクセスを行うアプリケーション開発者は、OpenSocialで定義されたAPIなどの仕様に基づいてプログラムを書くことによって、特定のSNSサイトに縛られることなく、さまざまなSNSサイトが提供する情報へアクセスすることができるようになります。SNSサイトの立場から見ても、独自にAPIを開発する必要がなく、アクセスを増やすことができるメリットがあります。実際に、OpenSocial Foundationのサイトにあるコンテナ・リストを見ると、すでに多くのメジャーなSNSサイトがOpenSocialをサポートしていることがわかります。日本でも2009年の秋に、日本のメジャーなSNSサイトであるMixiがMixiアプリとしてOpenSocialをサポートしたことをご存知の方も多いことでしょう。

 アクセスを共通化するという観点で、OpenSocialが策定している仕様としては、大きく以下のものがあります:

  • JavaScript API
    • OpenSocial API
    • ガジェット API
  • RESTful プロトコル

 JavaScript APIはWebブラウザからSNSサイトが提供するサービスへの統一的なアクセスAPIを定義しています。ガジェットAPIはそのJavaScript APIの一部として定義されています。RESTfulプロトコルはJavaScript APIの裏側の通信に関しての仕様を定めています。JavaScriptをサポートしていない環境からアクセスする際のアクセス手段として、例えばデスクトップアプリケーションやモバイル・デバイスからのアクセス、あるいはサーバーからのアクセスなどに利用できるものになります。

 本稿の話題はウィジェットということなので、今回はこの中のガジェットを活用する例をご紹介することとします。それぞれの詳しい内容に関しては最後に参考資料として記してあるOpenSocial関連のサイトをご覧いただきたいと思います。またCodoZineにもすでにOpenSocialに関連した記事があります(mixiアプリで始めるOpenSocial入門(1)――OpenSocialの概要とmixiアプリ )ので、そちらも参照してください。

Jazz

 JazzはIBM社が推進する、チーム開発環境のためのサーバーサイド・プラットフォームと、そのプラットフォーム上に製品としての開発ツールを開発しているプロジェクトです。Jazzに関してもCodeZineにはすでにいくつかの記事が投稿されています(はじめて使うJazz- チーム開発のためのオープンな統合プラットフォーム個人間のコラボレーションを通じてチームの生産性を向上するIBMのJazzプラットフォーム)ので参照してください。

 ここでは、Jazzプロジェクトの成果の一つであるRational Team Concert(以降RTC)の機能を具体例として見てみます。RTCはチーム、つまり複数の人間で一つのソフトウェアを開発することをサポートする開発ツールです。Jazzサーバーと呼ばれるアプリケーション・サーバーに、チーム・メンバーやタスク、ソースコードなど開発に関わるさまざまな情報を蓄え、それらをチームで共有することによって、チーム開発がスムーズに進むように開発チーム全体をサポートします。

 RTCの中で、今回の焦点であるウィジェット適用に関係する部分を見てみましょう。

JazzのWebユーザー・インターフェース

 Jazzが開発チームをサポートするうえで重視することの一つがチーム・メンバー間のコミュニケーション、およびチーム間のコミュニケーションです。そのための仕組みとして、RTCではいくつかの機能を提供します。その中の中心的な機能として、各メンバーのタスク(To-Doアイテム)や問題報告など、「やるべき項目」を管理するために「ワークアイテム」と呼ぶ機能を提供しています。このワークアイテムのユーザー・インターフェースには、ディスカッションと呼ばれる、いろいろな人がそのワークアイテムに対してコメントを追加できる部分があったり、あるいは一つのワークアイテムに関連する人が一覧で表示されたりする部分があります。SNS的な要素がちりばめられていることがわかります。

 このワークアイテムのユーザー・インターフェースも含め、JazzのWebユーザー・インターフェースはDojoツールキットを利用して構築されています。例えばここで、上記ワークアイテムのユーザー・インターフェースには右側にクイック通知という小さなウィンドウがありますが、その下にワークアイテムの所有者に関する情報を別のSNSサービスから取ってきて表示することを考えたとしましょう。Jazzの開発者は、DojoツールキットとJavaScriptを利用してSNSサービスを呼び出し、それ専用のユーザー・インターフェースを独自に開発することになります。

Jazzのダッシュボード

 RTCを含めてJazzベースの製品は、チーム・メンバーが現在の開発の状況を知るための手段として、ダッシュボードと呼ぶ機能を提供します。

 iGoogleを見たことがある人であれば、このJazzのダッシュボードがiGoogleの画面と似ていると思われるのではないかと思います。Jazzのダッシュボードの中では、それぞれの部品をビューレットと呼んでいますが、それはまさにウィジェットと言ってもよいでしょう。ただし、Jazzのダッシュボードのビューレットは独自仕様です。例えば、新しいビューレットを開発しようとしたら、まずWebユーザー・インターフェースの開発と同じくDojoツールキットを使ってユーザー・インターフェースを構築し、さらにビューレットの定義ファイルなどを作成し、Jazzサーバーにインストールすることになります。もちろん、そのビューレットはJazzのダッシュボード上でしか表示できないものになります。

JazzにおけるOpenSocialガジェット活用ストーリー

 前の章でご紹介したとおり、Jazzはチーム開発をサポートする開発環境です。その中心的な機能は、開発を効率的に進めるために、「今、誰が何をしているのか」、「現在のチーム全体の進捗状況はどうなっているのか」、「問題の数は順調に減っているのか」など、開発に関わるさまざまな情報を一元管理・共有し、チームのメンバーに対して必要な情報を見やすい形で提供することです。そのために、ワークアイテムもダッシュボードも専用のユーザー・インターフェースで情報を提供しています。

 また、新たな情報に対応するなどのために、ユーザー・インターフェースを拡張する方法として、ワークアイテムのようにリッチなユーザー・インターフェースをDojoツールキットとJavaScriptで作り上げる方法と、ダッシュボード上のコンポーネントであるビューレットを開発する方法を提供しています。

 しかし、そこには以下のような改善すべき課題が挙げられています。

外部情報の活用が容易でない

 外部の情報をJazzのダッシュボード上に表示するには、DojoツールキットやJavaScriptを駆使して新しいビューレットを作成し、それをJazzのパッケージの仕組みでパッケージし、Jazzサーバーに配置(デプロイ)する必要があります。ダッシュボードと同じく、外部の情報に対応するために新しいJazzのWebユーザー・インターフェースを構築したり、拡張したりすることは、さまざまな非標準的な知識と高度なスキルを必要とするプログラミングが必要となります

情報の有効活用が容易でない

 せっかく、開発の過程で蓄積される、さまざまな有用な情報を保持しているのに、現状ではそれらの情報をJazzのユーザー・インターフェース以外の外部に公開する方法はRESTfulなAPI経由のみです。他のクライアントがJazzの持っている情報を取得・表示するためには、RESTfulなAPIを利用して、独自にユーザー・インターフェースを作り上げる必要があります

 上記のような課題を、オープンなウィジェット仕様であるOpenSocialガジェットを採用することで解決しようとしているプロジェクトが現在Jazzプロジェクト内で進行中です。

OpenSocialガジェットを利用する

 JazzのWebユーザー・インターフェース、およびダッシュボードがOpenSocialのガジェットのコンテナーとして実装されれば、既存のWebユーザー・インターフェースに機能を追加したり、ダッシュボード上にOpenSocialのガジェットを表示したりすることが可能になります。新しいユーザー・インターフェースを新たに作成することなく、すでに世界中で大量に存在するさまざまなガジェットが、Jazzの提供する情報を表示する画面の上で利用可能となるわけです。

  • 例えば、チーム・メンバーの一覧を表示する画面の隣に、社内のSNSサイトが提供するプロフィール情報を表示し、すぐに電話番号や勤務地情報などを表示できるようになります
  • ブログのガジェットを置き、その人の書いているブログ記事を一覧で表示するような機能があれば、興味がある技術情報にすばやくアクセスできるようになります
  • ワークアイテムの画面の隣に、キーワードからWeb検索するためのガジェットを置き、自分がやらなければならない仕事に関しての情報にすばやくアクセスすることができるようになります

 ユーザーが見ることができる情報がJazzという閉じた世界から、一気に広がることが期待できます。ユーザーにとって必要な情報とは開発をしている間であっても開発に限った情報に閉じていることはありません。上記の例のように、普段からいろいろな情報にアクセスしながら仕事がすすんでいるものと考えられます。ダッシュボードのようなユーザー・インターフェースは本来そのような目的を達成するために作られたものですが、少なくとも現状のJazzのダッシュボードでは、外部の情報を表示するのは簡単ではありません。オープンなウィジェットを採用することによって、その壁を打ち破ることが期待できます。

 また、もし既存のガジェットが存在しないとしても、OpenSocialのガジェットはオープンな仕様なので、そのAPI仕様に乗っ取って新しいガジェットを作成することは、リスクが低いと考えられるでしょう。

OpenSocialガジェットを提供する

 JazzでOpenSocialのガジェットを表示するのとは逆に、他の画面にJazzのもつ情報を提供することも、ガジェットを使えば可能です。ダッシュボード上にOpenSocialガジェットを表示することが、外の世界から情報を取得してくるのに対し、Jazzが持つ開発という作業に関わるさまざまな情報をより広い世界へと公開する手段としてガジェットを活用することになります。

 OpenSocialの紹介のところで述べたとおり、すでにOpenSocialのコンテナーは広く使われ始めています。つまり、OpenSocialのガジェット経由で情報を提供すれば、ユーザーは簡単な操作でJazzの情報を自分が普段使っている画面の上で見ることができるようになるわけです。いくつか具体的な例を挙げましょう。

  • Jazzのメンバー・リスト ガジェットをGmailの上に表示すると、JazzのメンバーにGmailですぐにメールを送ることができるようになります
  • Jazzのワークアイテム ガジェットをGoogle Waveで表示すれば、そのワークアイテムに関連している人と即座にWeveでコラボレーションを開始できるようになります
  • Jazzの各ガジェットを社内OpenSocial対応のダッシュボード上に簡単に表示することができるようになります。社内の他のアプリケーションとの連携が容易になります

 Jazzのような開発ツールが持つ情報を外部のアプリケーション上に表示するには、相応の開発が必要になります。したがって、連携することによる効果が見えていたとしても、開発コストがかかることが連携を阻む一因となり得ます。Jazzがオープンなウィジェットの形式で情報を公開すれば、少なくともそのコンテナー上では非常に簡単に情報の統合ができることになります。iGoogleのようなダッシュボードを利用したことがある人であれば、その容易さがお分かりになると思います。

JazzにおけるOpenSocial対応の現状

 前章でJazzがOpenSocial対応することによって得られる利点を解説してきました。しかし残念ながら、現状のJazzはOpenSocialにまだ対応していません。将来的な機能拡張の一つのアイデアとして、OpenSocial対応が始まったところです。ここでは現在進みつつあるその実装に関してご紹介します。

Apache Shindig

 OpenSocialガジェットをサポートするために、OpenSocialのコンテナーを実装する必要があります。Jazzでは、現在のところ、多くのSNSサイトと同様、Apacheプロジェクトの中の一つであるApache Shindigを採用しようとしています。

 Apache Shindigはhttp://incubator.apache.org/shindig/からダウンロードが可能となっており、実装だけでなく、テスト用の環境構築の方法もドキュメント化されているので、ダウンロードしてすぐに動作を確認できるようになっています。また、Javaだけではなく、PHPの実装も用意されているので、どちらの環境でも動かすことが可能です。

 ここでは、Shindig 1.1 Java版をダウンロードして、Tomcat上で動かすまでの流れを確認してみます。

  1. http://incubator.apache.org/shindig/download/index.htmlからApache Shindig (war)を選んでダウンロード
  2. ダウンロードしたwarファイルをTomcatのwebappsの下にROOT.warとしてコピー(shindigのwarパッケージが“/“(ルート)をコンテキスト・ルートとすることを仮定しているため)
  3. http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.htmlにアクセスし、以下の画面が出ることを確認

 以上、ここまででTomcat上でApache Shindigが動くことは確認できました。続いて、初めてのOpenSocialガジェットとしてHello Wordを作成してみましょう。

Apache ShindigでHelloWorld

 以下のコードをwebapp/ROOT/helloworld.xml として保存し、再度http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.htmlにアクセスしてください。

<?xml version="1.0" encoding="UTF-8" ?>
 <Module>
   <ModulePrefs title="Hello World">
   </ModulePrefs>
   <Content type="html">
     <![CDATA[
       Hello, world
     ]]>
   </Content>
 </Module>

 Displaying gadgetのフィールドにhttp://localhost:8080/helloworld.xmlと入力し、reset all ボタンを押してみましょう。以下のような画面が表示されれば成功です。

 OpenSocialガジェットのもっとも簡単な例として、Hello Worldガジェットを書いてみました。より複雑な処理、実用的なアプリケーションを実現するには、上記のソースコードをOpenSocialが定義しているJavaScript APIで拡張していくことになります。もちろん、ユーザー・インターフェースのコードをDojoなどのJavaScriptライブラリで書くことも可能です。

JazzダッシュボードでHelloWorldガジェットを表示

 では先ほど作成したHello Worldガジェットを現状プロトタイプ・レベルのJazzのダッシュボード上に表示してみたいと思います。現在正式に公開されているJazzサーバーには存在しませんが、プロトタイプが進められているJazzサーバーのダッシュボードには、ビューレットを追加するためのユーザー・インターフェースに、「Add OpenSocial Gadget」というメニューが追加されています。Apache Shindigに付属しているサンプル・アプリケーションと同じように、「Add OpenSocial Gadget」を選択すると表示されるテキスト入力フィールドに、サンプル・アプリケーションで行ったのと同じようにガジェットのURL http://localhost:8080/helloworld.xmlを入力します。すると、下図のように、Hello WorldガジェットがJazzのダッシュボードに登録されます。

 Jazzの上でOpenSocialのガジェットを利用する手順は、基本的にはこれだけです。このGadget URLには任意のOpenSocialガジェットのURLを入力することができます。例えば、iGoogleで提供されているガジェットや、MySpaceの提供するアプリケーションなど、ガジェットのURLを入力すれば、Jazzのダッシュボード上に表示されるはずです。OpenSocial Foundationのガジェット ディレクトリーには2009年12月の時点ですでに1万以上のガジェットが登録されており、Jazzプロジェクト内部の開発だけでは決して実現できない多くの機能が利用可能になっていることがわかるのではないでしょうか。

 上の図をよく見ると、事前に登録済みのOpenSocialガジェットの一覧も表示されているのがわかります。このような仕組みによって、ユーザーはより簡単にガジェットを自分のダッシュボード上に貼り付け、実行することができます。

 重要なのは、一旦この仕組みができてしまえば、あとはOpenSocialのガジェットが増えれば増えるほど、Jazzから使える情報が自動的に増えていくことになるということです。Jazzの世界に閉じられていたら、Jazzの開発チームが開発しない限りは増えない機能が、ソーシャルの枠組みの中で自動的に増えていくことは、Jazzを開発している側からしても、またJazzを使って開発業務に携わるユーザーにとっても大きな利益となることでしょう。Jazzプロジェクトからすれば、Jazzの得意な「開発」に関連した情報の管理に集中し、その他の付随機能は、外部の機能を利用するということも考えられます。

Jazzからガジェットの提供

 こちらも現状ではまだ実装されていませんが、Jazzが持つ情報をOpenSocialガジェットとして公開することもプロトタイプ・レベルで始まっています。

 図ではJazzの管理するワークアイテムの情報を表示するためのビューレットがガジェットとしても提供されていることを示しています。実際に「View Gadget Source」をクリックするとOpenSocialガジェットの定義XMLが表示されます。そのURLがガジェットのURLとなり、他のOpenSocialコンテナーに貼り付けることが可能になると考えられます。

まとめ

 第1回でウィジェット全般の紹介と一つのテクノロジーとしてiWidgetの紹介を、第2回でマッシュアップとそれを安全に使うための仕組みとしてのセキュア・マッシュアップの紹介をしてきました。そして、第3回となる今回は、技術的な解説というよりは、ウィジェットが具体的にはどのように実用的な世界でも活用されだしているのかということを、今現在開発が進んでいる開発環境であるJazzとそのOpenSocial対応への取り組みを題材にご紹介しました。

 OpenSocialはすでに多くのユーザーが知らない間に利用していますし、今後さらに広く採用されることが期待されます。ウィジェットという形での情報の公開は、さまざまな情報をより簡単に利用できることを可能にします。それは、ユーザーにとっても、情報を持っている側にとっても有益です。今後、情報がイントラネット、インターネット、クラウドなどの形でネットワーク上に大量に蓄積され、より多くのさまざまな情報提供者が存在する世界が進めば、その情報をより簡単に、より使いやすい形で利用するための仕組みの一つとして、ウィジェットは今後も注目すべきテクノロジーであると言えるでしょう。

参考資料

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

著者プロフィール

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5