Post on 09-May-2015
description
宣言的アプローチによるJavaScriptマッシュアップエンジンの開発
Shinichi Tomita (冨田 慎一)shinichi.tomita - at - gmail.com
自己紹介(1)✴冨田 慎一(Shinichi Tomita)✴所属‣ 株式会社セールスフォース・ドットコム
✴活動‣ d.hatena.ne.jp/shinichitomita‣ twitter.com/stomita‣ del.icio.us/stomita
✴言語‣ JavaScript, ActionScript 3, Java
自己紹介(2)✴ 近年の興味分野‣ 軽量Webサービスを活用した分散コンピューティング
‣ ユーザセントリック型アイデンティティ/Webサービス
‣ 分散認証/認可システム(e.g.OpenID,OAuth)‣ 上記に対するJavaScriptおよびその他Web技術の実践的適用方法、セキュリティ
マッシュアップがやってきた✴2004-5年頃?✴自由に Webを“ReWrite”できるという熱い鼓動‣ オープンになったデータアクセス‣ 構築コストの劇的な減少
✴しかししばらくして、まだそれほど自由でない、と気づく‣ Web全体のうちオープンなのは一部‣ コスト面の恩恵を受けているのもまだ一部
マッシュアップの壁✴ パブリックオープンでないデータの存在‣ APIが非公開‣ 認証、アクセスコントロール‣ ファイアーウォール、イントラネット内
✴まだまだ限定的な参加者‣ 「コードをわざわざ書く」というフィルタ‣ サービスインフラ構築など開発に至るまでの障害
マッシュアップ開発をサポートするレイヤーが必要
Afrous について✴ すべてJavaScriptで実装されたマッシュアップエンジン
✴ www.afrous.com
特徴✴宣言的な記法によるマッシュアッププロセスの記述
✴サーバを必要としないクライアントサイドマッシュアップ
✴マッシュアップの作成を支援するブラウザベースのGUIエディタ
宣言的なマッシュアップ✴マッシュアップの本質‣ 複数入力を加工して望む出力を得ること‣ マッシュアッププロセス(≒ 加工方法)の記述をどのように行うべきか
✴宣言的手法の導入‣ プロセスを再利用可能な機能単位に分割‣ 機能単位の「はり合わせ」を可能に
マッシュアップ開発の敷居を下げる
クライアントサイドマッシュアップ✴データの取得および合成をユーザ側(クライアント側)で行うマッシュアップ方法
✴サーバ環境への依存性が低い✴処理の分散によるスケーラビリティの向上‣ ユーザ数の増加を受けにくい
インフラ構築、サーバ運用の負荷を下げる
スケーラビリティ比較:サーバサイドマッシュアップ
Server
Client
WebService
スケーラビリティ比較:サーバサイドマッシュアップ
Server
Client
WebService
Server
Client ClientClient
WebService
同時ユーザ数:増
スケーラビリティ比較:クライアントサイドマッシュアップ
Client
WebService
スケーラビリティ比較:クライアントサイドマッシュアップ
Client
WebService
Client ClientClient
WebService
同時ユーザ数:増
非同期処理の隠蔽✴ Ajaxでのサーバ通信や、ユーザの入力待ち等は非同期が前提
✴しかしフローとしては直線的(同期的)に取り扱いたい
✴非同期待ちはプロセスエンジンが吸収する
Process Evaluation✴フローの定義はアクション間の依存性を宣言することによっておこなう‣ make, antのようなビルドプロセスに類似
✴アクション間の依存関係グラフの作成
非オープンデータへの対策✴ APIなし‣ スクレーピング(scraping)
✴認証コンテンツ‣ ログイン処理のエミュレート‣ ユーザ名/パスワードをマッシュアップサービスに預ける?セキュリティ上の不安
✴イントラネット‣ ASP型のサーバサイドマッシュアップではほぼ不可能
発想の転換✴データがオープンでないならば、それを使うアプリケーションをもっとオープンにすればよい‣ フットワークの軽いアプリケーション‣ ユーザ主導のオンデマンドな利用‣ 動的な機能インジェクション
「召喚可能」なアプリケーション✴ 召喚する(Summon)
‣ アプリケーションに対してユーザが出向くのではなく、ユーザがアプリケーションの機能を必要に応じて呼び出す
‣ 召喚されたアプリケーションは、呼び出されたページのコンテキストにおいて機能を拡張する
‣ ブックマークレット
Summonware
Ordinal Style Mashupservice site
auth required site / intranet
User
Ordinal Style Mashupservice site
auth required site / intranet
User
Ordinal Style Mashupservice site
auth required site / intranet
User
Summonwareservice site
auth required site / intranet
User
Summonwareservice site
auth required site / intranet
User
Summonwareservice site
auth required site / intranet
User
Summonwareservice site
auth required site / intranet
User
Summonwareservice site
auth required site / intranet
User
Afrous Summon✴ Afrous Editorは"Summonware"として実装されている
✴パブリッシュされたプロセスもそのまま"Summonware"となる
デモ
競合サービス/ソフトウェア✴ Yahoo! Pipes / MyRemix (Web, ASP, )
✴ Plagger (Client installed)
✴MS Popfly / PatchService✴ Dapper(Web, ASP, scraping)
競合分析
△○○ユーザ参加型マッシュアップ
○△○スケーラビリティ
○×○認証を必要とするサービス
○×○イントラネットへのアクセス
大小小セットアップ時間
×○○ASPでの提供
Plagger Pipes本提案
今後の課題✴ユーザイベントを受け取る仕組み‣ 現在はデータの加工出力のみに特化‣ Afrous外の枠組みで対処すべき?
✴ローカルキャッシング機能の実装‣ リモートリソースへの配慮、および スナップショットデータの保持のため
‣ Flash SharedObject, Google Gearsなどで補完可能か
Thank you.