WebStorageとWebデータを区別無くアクセスする

(※この記事は書きかけです。)

 WebStorageには、LocalStorageやSessionStorageがあり、また、類似のものとして「CacheStorage」(*1)もある。これらの間に機能的な違いはなく、単にそのデータのライフサイクルが異なるだけである。このような考えを広げていけば、ローカルのデータのみならず、インターネット上にある全てのデータは、同じような形で抽象化することができよう。また、WebSocketのような非同期通信をするような機能についても同様である。ただし、データの抽象化のレベルはWebStorageと同じレベルとするより、ファイルシステムと同等のレベルまで上げたほうが汎用性があるため、ここではファイルシステムと同等のレベルの抽象化について書いていく。

例えば、前回の記事「WebStorageを用いてツリー構造を持つデータを実装する」にて説明したクラスター定義のスキーマで、’t’属性に’sC'(server cluster)を指定できるようにすれば、下記例のように、サーバ上のJSONファイルを直接クラスターとして指定することもできる。同様に、ファイル定義を拡張して’t’属性に’sl'(server link)を指定できるようにすれば、サーバ上のファイルとファイルシステム上のファイルを関連付けすることもできる。

var cluster={'t':'sC', 'cluster':'http://www.nayuta-works.com/userdata/index.cluster'};
var file={'t':'sl','C':'http://www.nayuta-works.com/userdata/memo.txt'};

 これを応用すれば、様々なCMSエンジンから自システムのスキーマに沿った形式のドキュメントを生成させることで、簡単にCMSエンジンと連携させることができる。しかし、自分でカスタマイズできないサービスも多数ある。この場合、解釈しなければならないデータのフォーマットは多様であり、自システムで解釈できる形に変換する必要がある。変換する際に同じスキーマで解釈できるようにすれば、一つのアプリケーションで様々なサイトのデータを簡単に取り扱えるようになる。

そこで、ドライバのようなコンポーネントでサイトやファイル形式やサービスごとの差異を吸収し、アプリケーションはドライバにより正規化されたデータを扱うというアプローチを考える。

参考のためTeaOSで実現しているやり方を示すと、mountコマンドを用いて、ファイルシステムのパスにドライバやターゲットのURLを関連付けることで、アプリケーションは正規化されたデータ形式にアクセスできるようになるというものである。実装例としては下記のようなものとなる。

FSys.mount('/share/sites/nayuta-educations.com/blog',{'driver':'standard-wordpress','url':'www.nayuta-educations.com/blog','controller':'filter','force':true});
var list=FSys.ls('/share/sites/nayuta-educations.com/blog');
FSys.unmount('/share/sites/nayuta-educations.com');
カテゴリー: html5_storage   タグ: , , ,   この投稿のパーマリンク

コメントを残す