Tender Surrender

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

Read on...

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

他にも

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

Read on...

TechCrunch Japanese アーカイブ » OpenIDの一般利用拡大を図る「Clickpass」OpenIDとは、ドメインをまたがってシングルサインオンを可能にする、ウェブ上のパスポートと言える技術です。日本でもYahooやlivedoor、はてな、mixiがOpenIDの発行に対応/将来的に対応を表明しています。そんなOpenIDですが、便利な反面問題もあります:

  • OpenIDを発行するサイトは増えているが、OpenIDを受け入れるサイトはまだまだ少ない
  • フィッシングのリスクがある
  • 既存アカウントとの統合ができない/対応が不便

Clickpassはこれらの問題を一気に解決するというサービス。

OpenIDを初めて使う際にはClickpassの方から、ログインしようとしているサービスに既にアカウントを持ってるか尋ねてくるので持ってる人はその情報を渡すと、Clickpassがその情報を認証先サイトにパスしてアカウント同士をひとつに繋げてくれる。自分のClickPassのOpenIDにサイトを追加していくと、Clickpassサイト上で一覧で確認できる。Clickpassのサイト固有のOpenID用URLも渡されるので、これを使って複数IDが管理できるし、IDは全てClickPass上でひとつに繋がっている。また、Clickpassでプロフィール情報を記入しておきたい人はしておくと、新たなサイト加入ごとに個人情報が自動入力される。Clickpassではプライバシーコントロールも徹底しており、サイトと共有したい情報は自分で選べる。

新規登録時はClickpassのOpenIDアカウントを使ってAXなりSregで個人情報を渡してくれるので、手軽に登録が可能。既存アカウントなら、毎回パスワードを入力しなくても良い。Yahooのログインシール的なものも、画像で可能とのことで、フィッシング対策もできている。言い換えれば、ウェブ上のキーチェーンサービスということでしょうか。

はじめから個人情報のアグリゲートとディストリビューションが目的のサービスだとユーザーが認識できるのであれば、個人情報のやりとりも法的な問題にならないだろうし、なかなかよいアイディアかも。後は提携サイトが増えることと、ユーザーが自分の認証情報をClickpassに預けることにためらわなければうまくいきそう。

Read on...

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

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

Read on...