トップ » 技術記事 » OpenSocialを始めよう(9) - Apache Shindigでさくさく開発!

OpenSocialを始めよう(9) - Apache Shindigでさくさく開発!

タグ: Ajax Google javascript OpenSocial

前回はOpenSocial 0.8がリリースされた事を踏まえて、現状のOpenSocialに関わる様々な最新情報をお届けしました。
今回は、前回の記事中でも少し触れたApache Shindigを利用して、OpenSocialアプリケーションをローカルでも実行できる環境の作り方をご紹介したいと思います。

Apache Shindigとは?

Apache Shindigとは、オープンソースのOpenSocial/Googleガジェットコンテナです。公式Webサイトはこちらになります。
OrkutもApache Shindigを利用してOpenSocial対応を行っているようで、この先OpenSocialに対応しようとするSNSやサービスにとっては、オープンソースで利用できる有力な選択肢となります。また開発者にとっても、ローカルでOpenSocialコンテナを実行/デバッグできるため、開発効率を向上できるのは間違いありません。
こういった点から、注目すべきプロジェクトであると言うのはおわかり頂けた事でしょう。では、いよいよShindigをビルドし、実行する手順を見ていきましょう!

Apache Shindigのビルド環境を整える

Shindigはまだまだ開発途上で、ダウンロードできる成果物すらない状態です。そのためShindigをローカルで試すには、ソースコードを入手してビルドする必要があります。
Shindigは、現在Java版とPHP版が提供されています。当連載では、Java版のShindigを対象にしていきます。

Java版のShindigを実行可能な状態にするには、以下のものが必要です。

  • Subversionクライアント・・・ソースコードの入手に必要とされます。WindowsユーザであればTortoiseSVN、MacユーザであればSCPluginがおすすめです。もちろん、コマンドラインプログラムを用いても構いません。
  • JDK 1.5・・・ソースコードのコンパイルと実行に必要とされます。
  • Apache Maven2・・・ソースコードのビルドを行う際に必要とされます。お持ちでない方は、こちらからダウンロードして、binディレクトリにパスを通し、mvnコマンドが実行可能な状態にしておいてください。

ソースコードの入手

まずはSubversionからソースコードをチェックアウトして、ソースコードを手に入れる必要があります。

  1. ソースコードを保存するための「shindig」ディレクトリを任意の場所に作成する。
  2. お使いのSubversionクライアントで、「http://svn.apache.org/repos/asf/incubator/shindig/trunk/」からソースコードをチェックアウトする。コマンドラインプログラムを用いている方は、以下のコマンドを実行すれば良い。
    svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk/ .

ダウンロードが完了したら、java, javascript, php等のディレクトリがある事を確認してください。

プロジェクトのビルド

プロジェクトをビルドするには、プロジェクトのルートディレクトリ内で以下のコマンドを実行します。

mvn

依存関係にあるライブラリのダウンロード状況にもよりますが、このコマンドは終了するまでに数分間を要します。

Shindigはまだまだ開発中なので、ビルドがエラーで終了してしまう事も少なくありません。その場合は、以下の手順を試してみてください。

コンパイラから警告が通知され、ビルドが失敗してしまう

Javacに、警告を有効にするオプションが指定されている事が原因です。その設定は、ルートディレクトリ直下のpom.xmlで行われています。
設定を無効にするにはまずpom.xmlを開き、「maven-compiler-plugin」で検索してみてください。以下のような箇所を見つけたら、<compilerArgument>をコメントアウトしてしまうと良いでしょう。これで、コンパイル警告によるエラー終了が抑止されるようになります。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.0.2</version>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
        <showDeprecation>true</showDeprecation>
        <!– ここをコメントアウト!
        <compilerArgument>-Xlint:unchecked,deprecation,fallthrough,finally</compilerArgument>
        –>
        <fork>true</fork>
      </configuration>
    </plugin>
ユニットテストにパスせず、エラー終了してしまう

JUnitのアサーションエラー等が出ていたら、こちらの方法を試してみてください。Mavenのコマンドラインオプションを使用して、ユニットテストをスキップするようにします。

mvn -Dmaven.test.skip=true

または、ルートディレクトリ直下のpom.xmlで「maven-surefire-plugin」と言う文字列を検索し、以下のような設定を書き加える事でも、ユニットテストをスキップする事ができます。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.3</version>
      <configuration>
        <skip>true</skip>
      </configuration>
    </plugin>

Shindigの実行と確認

ではいよいよ、Shindigを実行して動作確認を行ってみましょう!
Shindigを動作させるのも非常に簡単です。ルートディレクトリ上で以下のコマンドを実行するだけです。

mvn -Prun

これで、アプリケーションサーバJettyが起動し、ポート番号8080でリクエストを待ち受けるようになります。
動作確認は、Webブラウザから

http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html

にアクセスしてみてください。以下のような画面が表示されれば成功です。

shindig-samplecontainer.png

何ができるか

以上で、Apache Shindigをローカルで動作させられるようになった訳ですが、実際にはどんな事をできるようになったのでしょうか?

Apache ShindigにはOpenSocial/Googleガジェットコンテナの実装コード以外にも、ソーシャルアプリを最低限テストする事ができるサンプルSNSコンテナが付随しています。そのコンテナにアクセスするためのページが、先ほどの動作確認で表示したURLなのです。
先ほどのURLをもう一度見てみましょう。

http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html

URLの末尾から、「samplecontainer.html」と言うファイルを参照しているのだと言う事がわかりますね。このファイルは、Shindigのソースツリー上のどこに存在するかと言うと、「javascript/samplecontainer/」ディレクトリに存在します。
これにより、URLとソースパスの対応関係が見て取れるのがお分かりでしょう。つまり、「http://localhost:8080/gadgets/files/」は、ソースツリーでの「javascript/」ディレクトリに対応します。これさえわかれば、サンプルコンテナを試すのはいとも簡単です。

ではもう一度、サンプルコンテナのトップページ画像を見ていきたいと思います。

shindig-samplecontainer2.png

まず、このページの中央部分にはソーシャルアプリを表示する事ができます。どのアプリを表示するかを指定するのが、①のテキストボックスです。
このテキストボックスには、ガジェットのソースファイル(XMLファイル)を指すURLを指定します。この例で指定しているXMLファイルと同じディレクトリ(javascript/samplecontainer/examples/)には、他にも有用なサンプルが存在します。試しに指定してみてください。

次に注目すべきは、②のテキストボックスです。「コンテナ内のユーザの状態を表すファイルの指定」とありますが、これはどういう事でしょうか。
この例で指定されているファイルを、お手持ちのエディタ等で見ていただければすぐにわかります。内容は以下のようになっています。

<?xml version="1.0" encoding="UTF-8" ?>
<container>
  <people>
    <person id="john.doe" name="John Doe" gender="M">
      <friend>jane.doe</friend>
      <friend>george.doe</friend>
      <friend>maija.m</friend>
    </person>
    <person id="jane.doe" name="Jane Doe" phone="867-5309" gender="F">
      <friend>john.doe</friend>
    </person>
    ...(略)...
</container>

peopleとかfriendとか、何やらSNSっぽい英単語が並んでいますね!要は、このファイルで「SNSのユーザ」や「その友人関係」、あるいは「ユーザのアクティビティ」等を指定する事ができるのです。これなら、様々なユーザの関係を恣意的に作り出してテストに役立てるのも非常に簡単です。

③で指定しているのは、ビューアとオーナのIDです。②のファイル中に存在するユーザIDを指定してください。

こうした設定を変更したら、④のボタンを押して設定を変更し、ガジェットを再読み込みしましょう。

と言う事で、Shindigをローカルで実行できるようにした事で、非常に簡単にOpenSocialのテストを行えるようになりました。とはいえ、まだShindigは開発中なので、安心しきってローカルで実行していると痛い目を見る事もあります。ソースを更新したら唐突に動かなくなったりとか・・・(^^;
それでも、外部のSNSを用いて開発・実行・デバッグを行うより、かなりお手軽です。当連載でも「Shindigが安定してきたな」と判断したら、前提とするコンテナをOrkutからShindigに乗り換えたいと考えています。

まとめ

今回は、Apache Shindigのソースコードの入手と実行方法を解説しました。
こうなりゃ、「毒を喰らわば皿まで」と言う事で、次回はShindigをEclipse上でデバッグ実行できるようにするまでの手順を紹介したいと思います。

Series Navigation«OpenSocialの現状を把握するShindigをEclipse上でデバッグ(前編)»

執筆者紹介

shiraishi

shiraishi

最近書いてばっかりいます。 眠いとおんなじことばかり書きます。 そして、大概眠いです。

TrackBack URL :