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

32
宣言的アプローチによる JavaScriptマッシュアップエンジンの開発 Shinichi Tomita (冨田 慎一) shinichi.tomita - at - gmail.com

description

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

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

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

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

Shinichi Tomita (冨田 慎一)shinichi.tomita - at - gmail.com

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

自己紹介(1)✴冨田 慎一(Shinichi Tomita)✴所属‣ 株式会社セールスフォース・ドットコム

✴活動‣ d.hatena.ne.jp/shinichitomita‣ twitter.com/stomita‣ del.icio.us/stomita

✴言語‣ JavaScript, ActionScript 3, Java

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

自己紹介(2)✴ 近年の興味分野‣ 軽量Webサービスを活用した分散コンピューティング

‣ ユーザセントリック型アイデンティティ/Webサービス

‣ 分散認証/認可システム(e.g.OpenID,OAuth)‣ 上記に対するJavaScriptおよびその他Web技術の実践的適用方法、セキュリティ

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

マッシュアップがやってきた✴2004-5年頃?✴自由に Webを“ReWrite”できるという熱い鼓動‣ オープンになったデータアクセス‣ 構築コストの劇的な減少

✴しかししばらくして、まだそれほど自由でない、と気づく‣ Web全体のうちオープンなのは一部‣ コスト面の恩恵を受けているのもまだ一部

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

マッシュアップの壁✴ パブリックオープンでないデータの存在‣ APIが非公開‣ 認証、アクセスコントロール‣ ファイアーウォール、イントラネット内

✴まだまだ限定的な参加者‣ 「コードをわざわざ書く」というフィルタ‣ サービスインフラ構築など開発に至るまでの障害

マッシュアップ開発をサポートするレイヤーが必要

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

Afrous について✴ すべてJavaScriptで実装されたマッシュアップエンジン

✴ www.afrous.com

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

特徴✴宣言的な記法によるマッシュアッププロセスの記述

✴サーバを必要としないクライアントサイドマッシュアップ

✴マッシュアップの作成を支援するブラウザベースのGUIエディタ

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

宣言的なマッシュアップ✴マッシュアップの本質‣ 複数入力を加工して望む出力を得ること‣ マッシュアッププロセス(≒ 加工方法)の記述をどのように行うべきか

✴宣言的手法の導入‣ プロセスを再利用可能な機能単位に分割‣ 機能単位の「はり合わせ」を可能に

マッシュアップ開発の敷居を下げる

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

クライアントサイドマッシュアップ✴データの取得および合成をユーザ側(クライアント側)で行うマッシュアップ方法

✴サーバ環境への依存性が低い✴処理の分散によるスケーラビリティの向上‣ ユーザ数の増加を受けにくい

インフラ構築、サーバ運用の負荷を下げる

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

スケーラビリティ比較:サーバサイドマッシュアップ

Server

Client

WebService

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

スケーラビリティ比較:サーバサイドマッシュアップ

Server

Client

WebService

Server

Client ClientClient

WebService

同時ユーザ数:増

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

スケーラビリティ比較:クライアントサイドマッシュアップ

Client

WebService

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

スケーラビリティ比較:クライアントサイドマッシュアップ

Client

WebService

Client ClientClient

WebService

同時ユーザ数:増

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

Afrous Demo✴ www.afrous.com

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

非同期処理の隠蔽✴ Ajaxでのサーバ通信や、ユーザの入力待ち等は非同期が前提

✴しかしフローとしては直線的(同期的)に取り扱いたい

✴非同期待ちはプロセスエンジンが吸収する

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

Process Evaluation✴フローの定義はアクション間の依存性を宣言することによっておこなう‣ make, antのようなビルドプロセスに類似

✴アクション間の依存関係グラフの作成

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

非オープンデータへの対策✴ APIなし‣ スクレーピング(scraping)

✴認証コンテンツ‣ ログイン処理のエミュレート‣ ユーザ名/パスワードをマッシュアップサービスに預ける?セキュリティ上の不安

✴イントラネット‣ ASP型のサーバサイドマッシュアップではほぼ不可能

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

発想の転換✴データがオープンでないならば、それを使うアプリケーションをもっとオープンにすればよい‣ フットワークの軽いアプリケーション‣ ユーザ主導のオンデマンドな利用‣ 動的な機能インジェクション

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

「召喚可能」なアプリケーション✴ 召喚する(Summon)

‣ アプリケーションに対してユーザが出向くのではなく、ユーザがアプリケーションの機能を必要に応じて呼び出す

‣ 召喚されたアプリケーションは、呼び出されたページのコンテキストにおいて機能を拡張する

‣ ブックマークレット

Summonware

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

Ordinal Style Mashupservice site

auth required site / intranet

User

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

Ordinal Style Mashupservice site

auth required site / intranet

User

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

Ordinal Style Mashupservice site

auth required site / intranet

User

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

Summonwareservice site

auth required site / intranet

User

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

Summonwareservice site

auth required site / intranet

User

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

Summonwareservice site

auth required site / intranet

User

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

Summonwareservice site

auth required site / intranet

User

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

Summonwareservice site

auth required site / intranet

User

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

Afrous Summon✴ Afrous Editorは"Summonware"として実装されている

✴パブリッシュされたプロセスもそのまま"Summonware"となる

デモ

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

競合サービス/ソフトウェア✴ Yahoo! Pipes / MyRemix (Web, ASP, )

✴ Plagger (Client installed)

✴MS Popfly / PatchService✴ Dapper(Web, ASP, scraping)

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

競合分析

△○○ユーザ参加型マッシュアップ

○△○スケーラビリティ

○×○認証を必要とするサービス

○×○イントラネットへのアクセス

大小小セットアップ時間

×○○ASPでの提供

Plagger Pipes本提案

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

今後の課題✴ユーザイベントを受け取る仕組み‣ 現在はデータの加工出力のみに特化‣ Afrous外の枠組みで対処すべき?

✴ローカルキャッシング機能の実装‣ リモートリソースへの配慮、および スナップショットデータの保持のため

‣ Flash SharedObject, Google Gearsなどで補完可能か

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

Thank you.