Google モジュール
で、きました。実際に書いたコードは100行もないです。所要時間も実装だけなら2時間もかかってなくて、一応あとでやることを整理しておくための調査活動に2日ほど。
Google Adsense と (これは見えないw)Google Analytics と 秘密兵器!?のGoogle Gadgetです。
Adsense や Analyticsは、自分に割り当てられたコードを設定することで、任意のページに貼り付けることができるようになっています。
(AnalyticsはWidgetではないので、設定されていればAdsense Widgetについでに埋め込む、というだけ)
Gadget のほうは、Webページに追加、ボタンで取得できるコードのihr?以下のクエリストリングを設定する方向で。
<script src="http://gmodules.com/ig/ifr?url=http://blog-apart.com/.... ^^^^^ ここから後ろをがーと。
ですが、結構問題があって、やっぱりAjaxで初期化すると<script>タグの解釈がおかしいんです。おかしいというか、document.writeは不定の動作になるので使えません。使うためにはかなり変なことをやらないといけません*1
なので、現状は、
- 最初のHTMLをもらう時点では Ajax リクエストを発行するJavaScriptコード (全Widget共通)
- Google Gadget Widget (だめだな、この言葉)は、<iframe src="自分自身のURI"> を返す
- iframe からのリクエストがきたら、<script src="http://gmodules.com..."> を返す
- iframe に埋め込まれたコンテンツの高さと幅を調整する
という割と煩雑でサーバーに優しくない初期化になっております。
根本的な解決方法は、Widget のプロパティでAjaxではなくiframeによる初期化をサポートすることでしょうか。
でも。この場合の問題は、SpinelzなどのRIA用JavaScriptの再読込がiframeごとに発生しないかなぁ?という懸念です。この辺の知識は実際に仕事でWebやってないと身につかないかなぁ、と言い訳しつつ、誰かが検証していることを想定して放置プレイ。あとでやる、です。
結果的には、iframeで初期化するもの(script srcを使うもの)とAjaxで初期化するもの(デフォルト, RIA用のRuby Helperが使えなくもない、FCK以外実装してないけど)、をうまく使い分けて、ウィジェット作ってください、ってことでしょうか。
で、前者に関しては、Google Gadgetでほとんど何とかなると思うので、後者どうするか、ですかね。
というか、ここらで、一回リリース番号くぎって、SNS系のFunctionをドリコムに向けて作ろうかなぁ、と。あと1ヶ月だし。