ダウンロードしたデータを端末に保存する(1)

 

アプリは、毎回Googleスプレッドシートから試験データをダウンロードしています。


メリットは

・誤植の修正等がすぐに反映される。

デメリットは

・毎回データ通信が発生する。


ということになります。


データ通信が当たり前の世の中なのでこれでよいかと思っていましたが、(というか技術がなかっただけなのですが、、、)ダウンロードしたデータを端末に保存して利用する仕様に変更することにしました。


この仕様に変更する場合、2つの課題が出てきました。


1.修正等があった場合のデータの再ダウンロードをいつするのか?

2.どうやってダウンロードした試験データを保存・読み出しするのか?(Unity標準のPlayerprefsを利用するのか?)


1について

誤植報告をいただいた段階ですぐに修正を行っています。


Googleスプレッドシートの「検索と置換」を利用すると比較的簡単に修正が可能です。


試験のデータは、各回の科目単位でシートに分けて保存しており、最大値で(試験回数+模試回数)✕科目数=(10+10)✕20=400個になります。


この400個それぞれに修正日時を持たせ、保存していた日時より新しくなっていれば再度ダウンロードする仕様に変更することにしました。


「検索と置換」での修正をonEdit(e)で感知しその日時をGoogleスプレッドシートに書き込みます


「すべて置換」で一括置換を行うとonEdit(e)がイベントを拾えないので一つずつ「検索」→「置換」を行います。


2について

試験データは、Googleスプレッドから読み出し2次元配列に入れた後、表示等を行っています。


Easy Save*では、その2次元配列をそのまま保存・読み出しできます。


凄いの一言です。


例えば、配列をData[50,4]とすると


保存

ES3.Save<string[,]>("キー名", Data);


読み出し

Data=ES3.Load<string[,]>("キー名");


Episode33において「次回のメジャーバージョンアップでは、Easy Saveの使用をやめ、UnityのPlayerPrefsを使用する予定です。」とか「アプリでは、Easy Saveほどの高機能は必要ないため、PlayerPrefsで十分だと考えています。」とか書きましたが、前言撤回です


Easy Save、凄いです!


Easy Save*
簡単にセーブ&ロード&暗号化が実装できるアセット(Unity プロジェクトで使用するゲームやアプリケーションを作成するためのアイテム)