読者です 読者をやめる 読者になる 読者になる

When it’s ready.

出来るまで出来ない

OpenSocial Hackathon 4月 に参加した

今まで漠然としか分からず、理解できないことを年のせいにしていたけど一年勃起してやっぱり頑張ってみた。ハカソンに参加してみたよ。とりあえづ、今の理解のOpenSocial

ガジェットとコンテナ

ガジェットは、いろんな人が作った実にアプリ自体の事。OpenSocialで何か作るという場合大抵はガジェットを作る事を指す。対してコンテナは、ガジェットが動作する上でベースとなる何か、各サービスプロバイダ(gooとかmixiとか)がそれぞれOpenSocialのルールに則り実装を行う。微妙に挙動が違うところがあるらしい。OpenSocialを仕事でやってる人野中にはコンテナ側を作ってる人も多いとか多くないとか。

canvas、profile、home、preview

ガジェットは、表示される場所に応じてそれぞれ挙動を変えて表示させることが出来る仕組みがある。それを指定するのがで指定する。その他のガジェットの細かいことを設定するのはModulePrefsで指定する。

<ModulePrefs 
    title="atusi_o3d_test" 
    author_email="hoge@hoge.com" 
    description="userGet_test"
    height="700">

チュートリアル班でやったこと

初挑戦だったので、チュートリアル班に入れてもらった。がしかし、チュートリアルがよくわかんなかったので、興味のあるO3DとOpenSocialを使った何かをやることに変更した。o3dもピュアJSでかけるのでとても相性がよい。o3dは基本ロード時にレンダリングを開始してまうので、まずそこを切り離した。その後、OpenSocialのデータを取得して、レンダリングを行うようにした。今回のガジェットは、自分のフレンドの名前をレンダリングするやつ。OpenSocialとo3d間のデータの引き渡し方がよく分からなかったのでGobal変数使ってます。全てがJSだから出来る技。

開発環境について

OpenSocialだけと言うわけではないが、開発環境がちょいちょいめんどくさい。スタンドアロンで動くシンプルなコンテナがない為開発サーバーとしては、手元ではEclipse(OSDE)がある。らしいが、フレンドのつながりとか考えると、gooさんのsandboxの方が色々使い勝手がイイ。
がしかし、オンラインのsandboxを使うとなると、gadget.xmlがどこかちゃんと置かれている必要が有る。

始め、googlecodeを使ってsvnでコミットした、rawフィアルをgooデベに登録していた。がしかし、保存の度にsvn -ciするのがめんどくさすぎる。and 最近hg化して気づいたけど、やっぱりネット越しのコミットは重すぎる。

次に、weboo氏おすすめのDropBoxのPublicスペースを用いた自動デプロイもどき。やっぱDropboxは便利すぎると思う。始めにPublicURLを取得して登録してしまえばあとは、普通に保存するだけでgooへのgadget.xmlも変更されてる。このスピードが想像以上に速くて、たぶん1秒も掛かってない気がする。

がしかし、今回o3dを使ってガジェットを作ろうとしていたので、外部ファイルの量が大変多かった。DropboxのPublicスペースは、幸か不幸かファイル名と全く関係ないURLがアサインされる為2ファイル以上で呼んで使うようになると、名前のうめこみが激しくめんどくさい。と言うことが判明した。

最終且つ最適な方法。今のところ一番便利と感じているのは、sshでアクセス出来るWebサーバーを使う方法。ExpandDriveというsshfsみたいなのをやってくれるUtilityを使ってローカルにリモートのディスクをマウントしてくれるので自分のお気に入りのEditorを使って編集し保存すればその瞬間からsandboxから読み取って貰える。更に普通のディレクトリなのでファイル名と公開Path名がずれることがない。

ExpandDriveは先日2.0が発表になりS3のストレージもローカルにマウント出来る用になったので買って損はないような有るような気がします。