Afrous プラットフォームサービスをリリースしました、番外編

昔懐かしのAfrousですが、まだ実はやってます。というかうちの会社のメインプロダクトです。だいぶブランド名として使いまわしてる感はありますが。

ということで、本日リニューアルオープンしました。

HugeDomains.com - Shop for over 300,000 Premium Domains

基本的に会社関連の話は会社の方でやるべきだと思うので(市場性とかうんぬん)、ここではそれはおいておいて、中身にどういう要素を使ってるかというところを書きます。

まずは基本的なところ。

Ext JS

ライブラリにはExt JSつかってます。これは見た目ですぐわかりそうなところで、前からそうだったんで言う必要もないところですけど、1.1.1ベースだったのを2.1に変えました(ほぼ書き直し)。こういったお仕着せのUIについていやがる人もいるかもしれませんが、まあ実装側としてはこれがあって正直かなり助かってます。ちなみにExt JS単独で使っており、Ext-GWTとかその周辺は使ってないです。サーバサイドとクライアントサイドは完全分離されてます。ちなみに今回のサーバ側はRailsで書いてます。

OpenID

ログインはOpenIDでできます。Railsのopen_id_authenticationをつかってます。これは今となってはそんなに面白くもないですね。



続いて、もっと変態なところ。

カスタムJSONPの追加

これは非常にチャレンジングでもあるのですが、今回のサービスでは、ユーザがAfrousプラットフォーム上で自由にJSONPサービスをデータソースとして追加できるようになっています。かなりの数のWebサービスJSONPになってきていますから、それが自由にマッシュアップに含められるということは大変可能性が膨らみます。

ただ、ご存知の通り、JSONPとはつまりJavaScriptの読み込みです。任意のコードが実行できます。このことは、通常の観点で考えるとXSS脆弱性を孕んでいるようにも思われます。

まずこの問題を正しく判断するには、信頼について考えなければいけません。まず、このAfrousのサービスでは、全く無関係のユーザが、Afrousサービス自体が信頼していないスクリプトを読み込むようなことはないように設計しています。ただし、そのユーザが自分で利用したいと考えた場合においては、少なくともJSONPという形での外部スクリプトの利用を許しています。これは端的に言うとユーザが拡張機能をブラウザに入れるのと同等のものと見ています。つまり、ユーザの責任において利用するものであり、この結果についてAfrousは関与しません。そのかわり、そのユーザが信頼したデータソースであれば、ユーザがその信頼の範囲内において活用する自由をプラットフォーム側で認めています。

このため、通常のCGMにはあってもおかしくない、作成したダッシュボードのユーザ間での共有であったりマッシュアップ結果の共有といった仕組みは、現在排除しています。そのかわり用意しているのが「エクスポート」という機能で、これを用いると自分が作ったマッシュアップをユーザが保有するWebサイトに貼付けて他のユーザと共有ができるようになります。この場合、たとえマッシュアップに任意のコードを含めて呼び出せたとしても、実行されるのは自分の管理するサイト上でのことです。そのサイトの所有者(=ダッシュボードを公開したいユーザ)はそもそもデータソースの提供元を信頼しているはずですので、XSSの危険には該当しません。

ここらへんはちょっとわかりにくい可能性がありますが、もし何か疑問に思いましたらぜひ私にお知らせください。

クロスドメイン通信

Afrousでは、任意のXML/CSVリソースのURLを指定してそれをデータソースとして取り込む機能を持っているんですが、Afrousのダッシュボードが提供されているドメインとは異なるサイトにあるリソースを読み込むために、このブログでも何度か触れてきたブラウザ上でのクロスドメイン通信のテクニックを利用しています。

正直ここが今回のポイントだと思ってます。なぜサーバサイドプロキシを使わずにブラウザから直接のクロスドメイン通信にこだわったか?

それは、サーバサイドプロキシのアプローチでは、イントラネットなどのローカルネットワークへの対応が非常に難しくなるからです。

インターネットのテクノロジーが企業内システムにも使われるようになり10年以上たった今、多くの企業内には縮小されたWeb(イントラネットWeb)が出来上がっています。これらの情報リソースは、HTTPこそ話すものの、通常ファイアーウォールによりインターネットからのアクセスは遮断されます。現在インターネットWebでマッシュアップを行っているWebサービスは数多ありますが、そのどれもがこれらの理由によりそのまま企業内のリソースにアクセスすることは許されません。ファイアーウォールに穴をあけるということは、よほどのことがない限りあり得ないと考えていいでしょう。

このため、企業内マッシュアップのためには、マッシュアップサーバ自体をイントラネット内におくことが当たり前でした。これは、サーバのセットアップやソフトウェアのインストールなどを必要とするので、iGoogleやYahoo Pipesのようにブラウザを開けばすぐに使えるといったものではありません。また、こういったサーバを新たに抱えることによる運用上のコスト増や初期投資なども企業によっては問題と見るところも多いでしょう。

Afrous では、ブラウザ上でのクロスドメイン通信、そしてクライアントサイドでのマッシュアップを実現することで、このファイアーウォールの壁を取り払いました。そして、全くWebブラウザのみで、イントラネットとインターネットの双方のマッシュアップを実現しました。これはAfrousにアクセスしてもらえばすぐに試すことができると思います。


あ、ちなみに会社の方のブログもちょっとだけ更新しました。
http://blog.mashmatrix.com/stomita/2009/01/afrous.html