Archive for 3 月, 2008

3 月 17 2008

OpenSocialのRESTful API

Published by えーじ under OpenSocial

A modest proposal for an OpenSocial RESTful API - OpenSocial and Gadgets Specification Discussion | Google グループ

OpenSocial RESTful APIの最初のProposalだそうです。

Comments

3 月 17 2008

Shindigのphp版を試す

Published by えーじ under OpenSocial, Widget

先日の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

NotFound

見れません、、、

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

に変更します。これでいけるはず。。。

ToDoGadget

できた!これで、色々いじれますよ・・・

Comments

3 月 15 2008

OpenSocialの疑問がひとつ解決した

Published by えーじ under OpenSocial, Widget

前提: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が正式に登場するまでの暫定措置なのかどうかは未確認ですが、前提は誤っていなかったようです。

Comments

3 月 15 2008

Googleディベロッパー交流会

Published by えーじ under OpenSocial, Widget

表参道のダイヤモンドホールで行われた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メインの僕にとってはありがたい発見。

他にも

などなど、、、子供がうるさいので今日はこの辺で。

Comments

3 月 12 2008

Mac OS XにShindigをインストールする

Published by えーじ under OpenSocial

参考資料 :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

Shindig

動いた〜!!今日はここまで。

Comments

« Prev - Next »