宣言的アプローチによるJavaScriptマッシュアップエンジンの開発

Post on 09-May-2015

3.728 views 3 download

description

2007年度1期未踏ソフトウェア 最終成果報告会発表資料

Transcript of 宣言的アプローチによるJavaScriptマッシュアップエンジンの開発

宣言的アプローチによる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

同時ユーザ数:増

Afrous Demo✴ www.afrous.com

非同期処理の隠蔽✴ 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.