人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Webstorage で保存したファイルは複数のPC間で共用できますか?
Firefoxを使っています。javascriptでWeb storageを使い(localStorage)配列データをPCに保存した場合、保存先はキャッシュフォルダーになるのでしょうか? 複数のPC間でこのweb storageデータを共有することはできるのでしょうか? キャッシュを消した場合、データも消えるのでstorage保存先がキャッシュの保存先と考えフォルダを丸ごとDrop boxなどで共有することも考えたのですが、複数PCでは共有できないようなことも書いてありました。このようなことはできるのでしょうか?


●質問者: kajironpu
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー

Firefox の場合、ローカルストレージのデータはプロファイルのディレクトリにある webappsstore.sqlite というファイルに格納されています。
これは、キャッシュではありません。

プロファイルのディレクトリは、明示的にディレクトリを指定して作っていなければ、Windows の場合は以下のようなディレクトリになります。

C:\Users\(ユーザID)\AppData\Roaming\Mozilla\Firefox\Profiles\(ランダムな文字列).default

webappsstore.sqlite は、SQLite という簡易的な DB のファイルです。
このファイルをコピーすれば、複数の PC で共有できなくはないです。
# 似たようなファイル名のものが後ふたつあるので、それもコピーした方が良い。

ただ、Firefox が起動しているときには、ファイルはつかみっぱなしになっているので上書きで書き込めません。
裏でファイルを同期するような仕組みだと、きちんとコピーできない場合があるような気がします。

ということができるなら、複数の PC でデータを共有できると思います。


kajironpuさんのコメント
ありがとうございます。さっそく確認してみました。 webappsstore.sqlite にちゃんとキーごとにデータが保存されているのを確認できました。2台のPCで試してみましたが、やはりだめでした。同時にPCを起動して同時にfirefoxで使うことがあるので難しそうです。ファイルを掴みっぱなしになるんですね。 ロックされているファイルとかもあり、共用できず、またDrop boxに中には競合ファイルがたくさん出来ました。 やはり別の仕組みを使うしか方法はないでしょうか? Javascriptでローカルのファイル(テキスト)とかに配列の中身を書き込むことはできるのでしょうか?もしそれができたら、複数PCで使用していたとしても、お互い毎回最初に、最新のデータファイルを読み込んで、配列にデータを格納しておき、終わったときにファイルを上書きしていけばできそうですが、どうでしょうか?(もしかしたら、タイミングによっては、データ上書きで片方のファイルが更新されない?)

a-kuma3さんのコメント
File API とか FileSystem API とか整備されてきてはいますけど、ローカルのファイルを自由に読み書きはできません。 データを複数のPCで共有するなら、サーバに保存しておくのが真っ当なやり方だと思います。 クイズの HTML はサーバに置いてあると思うので、同じサーバに CGI を使って得点データもサーバ上に保存して、必要なときに必要な分だけ持ってくる、というのが良いんじゃないかと思います。 ネットで飛行機の予約を取る、あのイメージです。 # 覚えることは増えますけれども。

kajironpuさんのコメント
いろいろアドバイスありがとうございます。クイズのhtml,javascriptは、Dropboxにあり、自前でサーバーを立ち上げておりませんでした。やはり、1台PCをサーバーにしてそこに置くほうがよさそうですね。 検索したのですがNode.jsというのが使えそうでしょうか。 CGIとはまた新しく勉強にすることが増えて刺激になります。1つ1つ進めて行けたらなと思います。 いろいろとありがとうございました。

a-kuma3さんのコメント
>> 検索したのですがNode.jsというのが使えそうでしょうか。 << 使えなくはないです。 普通、javascript というとブラウザで表示されているページの中で動く、というイメージがありますけど、それをコマンドプロンプトのようなところで動かすことができるのが Node.js です(ザックり過ぎか?)。 Node.js を使うと、簡単な Webサーバのようなものをちゃちゃっと作れます。 機能がひとつだけで良ければ、Node.js でも行けると思います。 ただ、これを機に HTML もサーバに置いて、と思うと、得点を保存するところだけじゃなくて、HTML を表示するところも自分で作らなきゃならないです。 HTML を表示するだけの Webサーバを立てるなら、Apache か IIS あたりがお手軽だと思います。 その代わり、Webサーバにファイルとして保存してある HTML を返すだけじゃなくて、得点を保存するようなプログラムも組み込む、ということになるとひと手間かかります。 選択肢としては、Webサーバとして、汎用的なものを使う or Node.js で作る、と、javascript でやりたい or 他の言語を覚えるのも良い、の組み合わせになると思います。 ・汎用的なWebサーバ × 他の言語 Apache か IIS を導入して、php か ruby 辺りを使う。 参考になるサイトや書籍は多いです。 ・Node.js でWebサーバを作る × javascript 言語としては javascript だけで通して作れるのが最大のメリット。 ただ、文法的にほぼ同じ、というだけで、ライブラリを使ったりとかブラウザの javascript とは違う部分もあります。 作り込みが多いので、本来やりたいことと外れた部分で苦労するかも。 Webサーバについては、誰かが作ったのを探す、という手もあります。 http://qiita.com/morou/items/6a1b9d09a8500f2f62e4 ・汎用的なWebサーバ × javascript Apache を導入して、Node.js を CGI として使えるモジュールを使う。 先の二つの折衷案的な位置づけ。 ちょろっと調べた感じでは、CGI-Node とか node-cgi というようなのがあるみたいです。 http://www.cgi-node.org/ https://github.com/puffnfresh/node-cgi ・Node.js でWebサーバを作る × 他の言語 メリットがありません... という感じでしょうか。

kajironpuさんのコメント
いろいろありがとうございます。まったく未知の分野ですがこれを機にいろいろ勉強してみたいと思います。ローカルのHDDにHTMLを置いて、クイズのスコアや履歴データだけをサーバーのFileに書き込んで、そこからまたデータを読み取るという形がシンプルでしょうか。まずは、WEBサーバーを作るところからさっそく始めてみます。頑張ります!

kajironpuさんのコメント
ありがとうございます。おかげさまで形ができあがりそうです。 PCを1台サーバーして、PHPを使ってトライしています。 javascriptでサーバーにCSVファイルを作成するサンプルがありました。これを利用すると配列のクイズデータの履歴をサーバー上のCSVのファイルに書き込め、データを追記できそうです。(また複数のPCからは同時に試していないのですが)ついでに、サーバーにHTMLも置いて、あとはクライアントのPCからjavascriptで(D3.jsを利用)CSVファイルを読み込んでいます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ