Skip to content

File System API Backend

Narazaka edited this page Nov 5, 2015 · 2 revisions

ファイルシステムAPIバックエンド

なぜFileAPIではないのか

HTML5 File APIは実ファイルにアクセスできるわかりやすいAPIである。

しかしイカガカ、NanikaStrageでは下記の理由でこれの利用は現状していない。

ディレクトリ走査の必要性

毎回zip解凍するのでなくインストールをするというベースウェアの動作のため、ディレクトリ中のファイル一覧が利用できるものが必要だった。 FileAPIはこれに対応していない。

ChromeではFileSystemAPIというのがあるが、Chromeだけであり、広い環境で動くものでは無いので採用を見送った。

ユースケース

自動テストにイカガカの一部を使うなどのユースケースのためコンソール起動も想定して、結果ブラウザでしか使えない技術を避けた。

なぜnode.js APIとそのエミュレートなのか

その代替としてnode.jsのFileSystem APIをベースとしている。

ブラウザではBrowserFSを利用している。

デスクトップ版動作想定

イカガカはブラウザばかりではなく、デスクトップ版としてelectronやnw.jsでの動作を想定している。 これらは背景透過で不定形ウインドウを作ることが可能なため、既存のmateriaなどと同じような表示を実現できる。

これらではnode.js APIを使用してファイルシステムへのフルアクセスが可能なので、自然とこれに対応するためnode.js FS APIを検討した。

ブラウザでのエミュレートの存在

BrowserFSのIndexedDBバックエンドを使うことによって、非同期APIのみだがnode.js FS APIとほぼ互換のAPIでファイルシステムをエミュレートすることが出来た。

これによってnode.js FS APIをつかうことが可能であることがわかり、採用した。