|  | レベル: 初級 木村 桂 (kimuc@jp.ibm.com), ソフトウェア事業, Federated Integration Test team, IBM China Development Lab
2008年 07月 11日 日本でも WebSphere sMash が正式に発表されました。この製品は Groovy や PHP といったスクリプト言語を利用して普段使用しているデータベース内のデータを REST 等の形式で公開できるアプリケーションサーバーであると同時に、付属する簡易アプリケーションビルダーによって、社内外から公開されている各種フィードを簡単にマッシュアップすることも可能です。本記事では特にこの後者の機能をどのように実現するか、といった手順を紹介していきます。なお本記事の内容は2008年7月9日現在の内容に沿って書かれております。バージョンアップ等によって今後内容の一部が変更になる可能性があることをご了承ください。
WebSphere sMash Developer Edition の入手とインストール
まずは WebSphere sMash を利用する前に、前提環境である JDK(Java Development Kit)を導入します。個人的に JDK 6 で特に問題に遭遇したことはありませんが、公式には JDK 5 が必要になります。既に導入済みの方はここを飛ばしてください。まだ JDK を導入されていない方は Sun Microsystems のサイトより JDK をダウンロードして導入しておいてください:
http://java.sun.com/j2se/1.5.0/ja/download.html
更に、フィードのマッシュアップを行うアプリケーションビルダーは FireFox ブラウザーで実行されます。FireFox を未導入の方はこのタイミングで導入しておきましょう:
http://mozilla.jp/firefox/
次に WebSphere sMash を入手しましょう。この製品は有償ですが、開発者向けの Developer Edition(以降 "DE" と記載します)が無償で公開されているので、これをダウンロードして利用します。
ProjectZero.org のダウンロードサイト(http://www.projectzero.org/download/)から、"zero.zip" と書かれたホットスポットをクリックします。
図 1. ダウンロードサイト
ライセンスの内容を確認し、"Accept" をクリックするとダウンロードファイルの選択になります。"zero_(最新のバージョン番号).zip" と書かれたリンクをクリックしてダウンロードしてください。なお本記事執筆時点では zero_1.0.0.0.18726.zip というファイル名でした。またファイルサイズはおよそ 1Mbyte 程度です。
図 2. 最新版のモジュールを選択
ダウンロードしたファイルを展開すると zero というフォルダが作られ、その中に WebSphere sMash DE 導入に必要な最小限のファイルが含まれています。この zero フォルダを適当なディレクトリにコピーします(図3 の例では C:\IBM フォルダ内にコピーしています)。
図 3. 展開直後のフォルダ内容
この中の zero.bat をダブルクリックで実行すると図4 のようなコマンドプロンプト画面が起動してネットワークインストールが開始されます。WebSphere sMash DE の本体のインストールが完了するとこの画面も自動的に消えます。
図 4. ネットワークインストール中の様子
なお、HTTP プロクシが設定されている環境では zero.bat をそのまま実行しても正しく導入できない可能性があります。その場合はプロクシのないネットワーク環境から実行してみるか、あるいは zero.bat をメモ帳等で開いて、以下のコメント部を外してプロクシサーバーのアドレスやポート番号を指定してから再度実行してみてください。
プロクシサーバーの設定
ここまでの手順で WebSphere sMash DE のコア部分が導入されました。最後に、今回の記事のメインともいえるアプリケーションビルダーを導入します。ここまでの作業に引き続いて "startAppBuilder.bat" をダブルクリックして実行します。すると zero.bat の時と同様の画面が立ち上がり、アプリケーションビルダーのモジュールをネットワークインストールします。アプリケーションビルダーのネットワークインストールには、コアの時よりも長めの時間がかかると思います。なおこれらの処理は最初の実行時のみ行われ、2度目以降の実行では行われません。なおアプリケーションビルダーを終了する場合は "stopAppBuilder.bat" をダブルクリックしてください。
 |
2008/09/18 追記
最新の WebSphere sMash DE ではアプリケーションビルダーの起動/終了方法が変更になりました。同じフォルダ内に appbuilder.bat というファイルが存在しており、これを使います。
具体的にはアプリケーションビルダーの開始時には startAppBuilder.bat を実行する代わりに、コマンドラインを開いて、
>appbuilder start
>appbuilder open
|
を実行します。1 つ目のコマンドでアプリケーションビルダーのインスタンスを開始し、2 つ目のコマンドでブラウザを開きます。
またアプリケーションビルダーの終了時も stopAppBuilder.bat を実行する代わりに、同様にコマンドラインを開いて、
を実行します。
|
|
アプリケーションビルダーのネットワークインストールが完了すると自動的に FireFox ブラウザでアプリケーションビルダーが起動します。これでインストールが完了し、準備ができました。
図 5. アプリケーションビルダーの画面
なおこの時点で WebSphere sMash DE をコピーしたフォルダは図6 のようになっています。2回のネットワークインストールを経て、5つのフォルダが追加されているはずです。
図 6. インストール後のフォルダ内容
RSS フィードのマッシュアップ
ではこのアプリケーションビルダーを使って、実際に RSS フィードをマッシュアップしてみましょう。今回マッシュアップする RSS フィードとして、以下の2つ(図7, 8)を使います(もちろんこれら以外の実際に購読している他の RSS フィードで試してみても構いません):
(1)IBM developerWorks の Java Technology RSS(http://www.ibm.com/developerworks/jp/views/java/rss/libraryview.jsp)
図 7. Java Technology 関連の RSS
(2)IBM developerWorks の Open Source RSS(http://www.ibm.com/developerworks/jp/views/opensource/rss/libraryview.jsp)
図 8. Open Source 関連の RSS
ではこれら2つの RSS フィードをマッシュアップして、1つの新しい RSS フィードを作ってみます。アプリケーションビルダーではフィードを1つのアプリケーションとして扱いますので、"New Application" と書かれた箇所をクリックし、新規のアプリケーションプロジェクトを作成します。
図 9. 新規アプリケーションプロジェクトの作成
次の画面では作成するアプリケーションプロジェクトの名称や生成されるファイルを格納するフォルダ名(このフォルダはファイルシステム内に存在している必要があります)、説明を記載して Create ボタンをクリックします。ちなみに図10 の例では C:\IBM\zerodata\MyFavoriteRSS というフォルダが生成され、プロジェクトに必要なファイルは全てその中に用意されます。
図 10. プロジェクトの情報を記入
アプリケーションビルダー内にプロジェクトが表示されたら、プロジェクト名部分をクリックして選択します。
図 11. 編集するプロジェクトを選択
フィードのマッシュアップを行う場合、新しく作成するフィードをフローエディタという機能で作成します。このフローエディタで編集するファイルを新規に作成します。画面左の "New File" と書かれた箇所をクリックし、"Page(in /public/)" を選択します。
図 12. 新規ファイルの追加
新規に作成するファイルは /public フォルダの下に、拡張子 .flow を指定して(図13 の例では "my.flow" というファイル名を指定しています) "create" ボタンをクリックします。
図 13. 作成するファイル名を指定
図14 のようなダイアログが表示されたら "Add" をクリックします。これはアプリケーションのプロジェクトにフローエディタ拡張に必要な情報を追加するかどうかを確認するもので、"Add" をクリックすると必要な情報を自動的に追加してくれます。
図 14. フローエディタ拡張を指定
すると図15 のような画面になります。これは新規作成した my.flow ファイルをフローエディタ(画面右側)で開いている状態です。まだ中身がないので真っ白に見えますが、この後で必要な情報を追加していきます。
図 15. フローエディタが起動している様子
今回の目的は2つの異なる RSS フィードをまとめて1つの RSS フィードを作ることです。そこでまずは2つの RSS フィードをフローエディタ上に登録します。まずはフローエディタの右側のドロップダウンメニューから "Feed Activities" を選択してフィードを扱うコンポーネントパレットに切り替えます(図16)。
図 16. Feed Activities を選択
パレット内から "feed" と書かれたアイテムを探し(図17)、ここをクリックして画面中央の白いキャンバスまでドラッグします。
図 17. Feed アイテムを選択
マウスをリリースすると図18 のようになります。"url" と書かれた欄にはマッシュアップ対象の RSS フィードの URL(例えば "http://www.ibm.com/developerworks/jp/views/java/rss/libraryview.jsp")を入力します。なおこのウィンドウタイトル部分をドラッグすることでパレット内の位置を変更することも可能です。
図 18. Feed アイテムをドラッグ&ドロップで配置
同様にもう1つ feed アイテムをドラッグして、先程作成した feed アイテムの横に配置します。また "url" 欄にはマッシュアップするもう1つの RSS フィードの URL("http://www.ibm.com/developerworks/jp/views/opensource/rss/libraryview.jsp")を入力します。
図 19. 別の Feed アイテムを配置
この2つの RSS フィードをまとめる(aggregate)ために、"aggregateFeeds"と書かれたアイテムをパレットにドラッグ&ドロップで追加します。また "title" 欄と "description" 欄にそれぞれマッシュアップ後の RSS のタイトル、説明を入力します。
図 20. aggregateFeed アイテムを配置
そしてマッシュアップ後の結果を HTTP プロトコルの GET リクエストで取得できるよう、"replyGET" アイテムを最後に追加します。これでキャンバスへのアイテム追加は完了です。図21 のようになっていることを確認してください。
図 21. replyGET アイテムを配置
配置したアイテムのコネクタ部分(丸い部分や四角い部分)はマウスでドラック&ドロップによって結びつけることができます(図22)。これを使って2つの feed アイテムを aggregateFeeds アイテムにまとめ、それを replyGET アイテムに接続します。なお feed アイテムは3つ以上用意しても構いません。その場合も全て aggregateFeeds アイテムに接続します。
図 22. マウスのドラッグ&ドロップで各アイテムを紐付け
最終的には図23 のような形に接続します。なお接続を間違えた場合はワイヤーをマウスでクリックしてハサミのマークを選択すると結びつきがキャンセルされますので、その後に正しい接続に修正してください。
図 23. アイテムの接続見本
新しいフィードの動作を確認
ここまでに一切のコーディングを行っていませんが、実はこれだけで新しい RSS フィードが完成しています。早速動作を確認してみましょう。アプリケーションビルダー画面の右上にある "Start" と書かれた箇所(図24)をクリックして、作成したアプリケーションを起動します。
図 24. アプリケーションの開始
この箇所が図25 のように "Stop" という表示になれば、アプリケーションの起動は完了しています。
図 25. アプリケーションが開始された様子
アプリケーションの起動が確認できたら、ブラウザで "http://localhost:8080/my.flow"(異なるファイル名で作成した場合は適宜変更してください)にアクセスし、その結果を確認します。
図 26. マッシュアップされたフィード
RSS のタイトルも、説明も、そして内容も全て期待通りにできています。簡単に2つのフィードがマッシュアップできました! ただ1つ気になる点があります。実は2つのフィードの中に全く同じ情報が含まれていた場合、それらは新しいフィードの中では2回出現することになります(図26 の赤矢印部分)。まあ単純に足しただけなのである意味正しい結果なのですが、フィードの実用を考えるとちょっと気になります。
フィルタリングで重複を排除
そこでフィードを改良して、これらのダブりを無くしましょう。アプリケーションビルダーのキャンバスに戻り、aggregateFeeds と replyGET とを結んでいたワイヤーを一度切断します。そしてパレットから "unique" アイテムを新たにドラッグ&ドロップします(図27)。この "unique" アイテムは情報のダブりを見つけて排除するためのフィルターの役目を果たします。
図 27. unique アイテムを追加で配置
そして aggregateFeeds から unique へ、unique から replyGET へワイヤーを結び直します(aggregateFeeds と replyGET の間に unique を割り込ませた形になります)。また unique アイテムの "by" 欄にはドロップダウンリストから "atom:title" を選択します(これはフィードの各要素のタイトル名でダブりを排除する、というフィルターをかけることを指定しています)。これがフィードの完成形です(図28)。
図 28. マッシュアップの最終形
こうして作成したフィードに再度ウェブブラウザからアクセスすると、今度はダブりが消えています(図29)。アイテムを1つ追加するだけでマッシュアップしたフィードから簡単に重複を排除することができました。
図 29. ブラウザで動作確認
こうして作成したアプリケーションを WebSphere sMash サーバー上で実行することで新しいフィードを一般ユーザーにも公開することができるようになります。
まとめ
本記事では WebSphere sMash DE を利用して、コーディングを一切行わずに複数のフィードをマッシュアップし、更にフィルターによって重複を除外して新しいフィードを作成するまでの手順を紹介しました。実際にはもちろんこれだけでなく、マッシュアップしたフィードのアイテムをソートする等の処理も同様に、簡単に実現することができます。
インターネットの世界ではブログを中心に数多くの RSS フィードが公開されています。また企業内の情報も RSS で提供されていたり、必要に応じてこの WebSphere sMash を使って RSS 化することも可能です。このような多くの RSS から自分に合った情報や各社各部門にあった情報を取捨選択してマッシュアップして入手する、そのためのツールとして WebSphere sMash を活用していただけます。
著者について  | |  | 木村 桂: 日本IBM ソフトウェア事業 |
記事の評価
|  |
|