3 月 17 2008
Archive for 3 月, 2008
3 月 17 2008
Shindigのphp版を試す
先日のGoogleディベロッパー交流会でShindigのphp版が公開されていることを知り、試してみました。
Shindigをチェックアウトする
> svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk .
Shindigのソースがチェックアウトされます。(今回試したリビジョンは637739)
> ln -s ~/Development/Shindig/php/gadgets /Library/WebServer/Documents/gadgets
これでローカルホスト上で見れるはず。ブラウザに下記のURLを入力します。
http://localhost/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml
見れません、、、
httpd.confを修正
どうやら、Mac OS X(Leopard)のhttpd.confのデフォルト 設定が邪魔している模様。
/etc/apache2/httpd.conf
を書き換えます。/etc/httpd/httpd.confではないことに注意。(Tigerはこれだった)
<Directory "/Library/WebServer/Documents">
内の
AllowOverride None
を
AllowOverride All
に変更します。これでいけるはず。。。
できた!これで、色々いじれますよ・・・
3 月 15 2008
OpenSocialの疑問がひとつ解決した
前提:Google Gadgetでurlタイプを指定した場合、iframe内にはリモートサーバーの内容がそのまま表示されるため、Ajaxで友達情報等を取得しようとすると、ドメイン超えが必要となり、プロキシ経由でサーバー間通信となりRESTful APIがないと役に立たない
どうやらOrkutでは、Content Type=’url’を許可していない模様。
MYSQL database connection using PHP for my gadget ? - Orkut Developer Forum | Google グループ
Content Type=’url’を指定すると404が返るらしい。 404が返ること自体はバグとのことですが、Content Type=’url’が動くようになったところで、ドメインを超えてOpenSocialを利用するにはプロキシを介したRESTful APIによるアクセスが必須であることは確認できました。これがRESTful APIが正式に登場するまでの暫定措置なのかどうかは未確認ですが、前提は誤っていなかったようです。
3 月 15 2008
Googleディベロッパー交流会
表参道のダイヤモンドホールで行われたGoogleディベロッパー交流会に参加してきました。今回はOpenSocialがテーマということで、ドンピシャ。 色々な疑問を解決することが出来ました。
OpenSocialアプリケーション(ガジェット)はSNS間を持ち回れない?
とても基本的な疑問ですが、。OpenSocialは異なるSNS間でAPIを共通化することで、アプリケーション開発者の負担を軽くすることが目的のため、互換性は保証されるものと考えていましたが、どうもそういう訳でもないらしい。なぜなら、OpenSocialはアプリケーションを乗せるもの(OrkutではGoogle Gadget)について規定していないから。
OpenSocialの仕様書を見ると、サンプルコードはすべてGoogle Gadgetを想定して書かれていますが、実際の仕様にGoogle Gadgetが要件であるとは書いていません。つまり、別にOpera WidgetだろうとYahoo! WidgetだろうとDashboard Widgetだろうと、乗せられるところに乗せてよい訳です。そこでこの辺りをはっきりさせるため、プレゼンをしてくれたクリスさん(ラストネームは忘れた)に聞いてみました。
- ガジェットはGoogle Gadgetのみを想定している訳ではない。
- MySpaceAppやhi5、OrkutはGoogle Gadget形式で提供される(未確認)
- アプリケーションは基本的にSNS間で共有できるが、拡張機能に対応していると、別のSNSでは動かない可能性もある。
僕の拙い英語力だと、なんだか釈然としない答えしか得られませんでした。なんだかまだもやもや感が残ってますが、個人的にこう思ってます。
- ガジェットはGoogle Gadgetである必要はない
- アプリケーション開発者は、コア機能は共通かできるが、ガジェット部分についてはSNSごとに用意する必要がある。
OpenSocialはRESTful APIの仕様が出るまで役に立たない?
OpenSocialはSNSから友達の情報を取得できることが目玉な訳ですが、当然認証認可が必要になります。JavaScriptのAPIでは、単純にnewDateRequestを使って簡単に取得できるように書いてはありますが、コンテナ側の実装はそう単純ではありません。
Google Gadgetを前提とした場合、コンテンツタイプとして2つの選択肢があります。1つはGadget XML中にHTMLも記述するhtmlモード。もうひとつはGadget XML中にリモートURLを記述するurlモードです。htmlモードはGoogleの管理するgmodules.comというドメイン上で動作しますが、urlモードの場合は、サードパーティーの管理する全く別のドメインで動作することになります。察しの良い人はこの時点で気付くかと思います。
リモートサーバーからOpenSocialのSNS情報にアクセスするには、そのリモートサーバーのプロキシを介して、SNSのRESTful APIを叩く以外、方法がない
これは単純にAjaxがドメイン超えできないということに起因していますが、とても重要なこと。RESTful APIがまだ正式に用意されていないOpenSocialなだけに、これがないと使い物にならないんじゃないの?MySpaceのRESTful APIってなによ!? OrkutのiLikeアプリってリモートじゃね!?という疑問が募ってしまったのでした。(あれ?AjaxってJavaScript自体の置いてあるドメインだったら直接リクエスト投げられるのか!?)
Shindigについて
先日インストールしたShindigですが、まだJavaしか対応していないものだとばかり思い込んでました。そしたら、Javaよりも実装は遅れているけど、PHPもあるというじゃないですか!!早速帰ってコードを見てみると、、、確かにありました。お作法がJavaっぽいのでアレレな感じですけど、PHPメインの僕にとってはありがたい発見。
他にも
- リクルートの方が作ったというShindigを使ったOpenSocial対応のドコイクβサービス
- こみゅすけのOrkutアプリ版
- OpenSocialアプリコーディング環境CodeRunner(Orkut上のアプリ)
- Orkut上にOpenSocial Japanというコミュニティ
などなど、、、子供がうるさいので今日はこの辺で。
3 月 12 2008
Mac OS XにShindigをインストールする
参考資料 :Shindig - an Apache incubator project for OpenSocial and gadgets
予めMavenのインストールが必要
Maven - Download Maven 2.0.8 からダウンロード。特にインストール作業は必要なく、適当なところに置いといて、パスを切る必要あり。ひとまず
> ~/Development/apache-maven-2.0.8
に置いておこう。環境変数も設定しておく。
> export JAVA_HOME='/System/Library/Frameworks/JavaVM.framework/Versions/A'> export PATH=$PATH:/Users/ekita/Development/apache-maven-2.0.8/bin
・・・とか思ったら、Maven入ってるじゃん!なにこれOS X!!
Shindigを設置
> mkdir Shindig
レポジトリからShindigのソースをチェックアウトする
> svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk .
ビルドする
> cd ~/Development/Shindig/java/gadgets> mvn package
勝手に色々ダウンロードしてよしなにしてくれるみたい。
Shindigを起動してみる
> mvn jetty:run-war
で動くらしいのだが、、、
[INFO] Scanning for projects...[INFO] Searching repository for plugin with prefix: 'jetty'.[INFO] org.apache.maven.plugins: checking for updates from central[INFO] org.codehaus.mojo: checking for updates from central[INFO] artifact org.apache.maven.plugins:maven-jetty-plugin: checking for updates from central[INFO] ------------------------------------------------------------------------[ERROR] BUILD ERROR[INFO] ------------------------------------------------------------------------[INFO] The plugin 'org.apache.maven.plugins:maven-jetty-plugin' does not exist or no valid version could be found[INFO] ------------------------------------------------------------------------[INFO] For more information, run Maven with the -e switch[INFO] ------------------------------------------------------------------------[INFO] Total time: 2 seconds[INFO] Finished at: Wed Mar 12 16:18:09 JST 2008[INFO] Final Memory: 1M/2M[INFO] ------------------------------------------------------------------------
うまく動かない、、、 どうやらJettyというのが必要らしい。
Jettyを動かす
Javaサーバーはさっぱりなのでよくわからないけど、とりあえずjetty-6.1.8をダウンロードし、~/Development配下に移動。
> cd ~/Development/jetty-6.1.8
> java -jar start.jar
とかやってみる。どうやらこれでjettyというウェブサーバーが動いてることになってるらしい(多分Apacheも動いてる必要アリ)そこで、先ほどビルドしたShindigのwarファイルをシンボリックリンクして
> ln -s ~/Development/Shindig/java/gadgets/target/gadgets.war ~/Development/jetty-6.1.8/webapps/gadgets.war
アクセスしてみると、、、
http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html
動いた〜!!今日はここまで。




