ロボアプリ上でのデータ保存(3)


 前回の投稿『ロボアプリ上でのデータ保存(2)』では、Pepper上でのファイルの書き込み・読み込みを行いました。しかしながら、ロボアプリをアップデートした場合、ロボアプリ直下に保存したデータはロボアプリを上書きしたタイミングで削除されてしまいます。構成ファイルなどを残したい場合もあると思いますので、バックアップ方法について考えてみたいと思います。

ロボアプリのアップデート

 データの保持はロボアプリのローカルストレージにすれば良いことがわかりました。しかし、ロボアプリのアップデートが実施されると、ロボアプリの構成ファイルは保存されているフォルダを含めて全て更新されてしまいます。残しておきたいデータがある場合は、バージョンアップが行われたとしてもデータを保持し続ける仕組みが必要です。

バックアップと復元

 ロボアプリのデータはロボアプリのローカルストレージ以外に保存できませんので、バックアップ手段を考えてみます。
(本作業は技術的には可能ですが、ローカルストレージ以外への保存はソフトバンクロボティクスが公開している『ロボアプリ品質チェックリスト』違反となります。『ロボアプリ上でのデータ保存(1)』をご覧ください。)

方法1

 毎回手動で保存したいデータを抜き出し、アップデート後に転送して復元する
例:
1. Pepperからデータファイルを外部バックアップ(ファイル転送プロトコル利用)
2. ロボアプリのアップデート
3. ロボアプリが保存されているフォルダへデータをリストア(ファイル転送プロトコル利用)

方法2

 ロボアプリアップデート時や任意のタイミングでデータを何らかのクラウド上に転送し、アップデート後にクラウドへ転送されたデータを新しいロボアプリでダウンロードして復元する
例:
1. ロボアプリのアップデート情報を検知し設定データをクラウドへ転送
2. ロボアプリのアップデート
3. クラウド側から設定データをダウンロードし、ロボアプリに適用

方法3

 Pepper内部にはクラウドの接続情報のみを記憶し、データは必要に応じてアップロードもしくはダウンロードを行う
例:
1. ロボアプリの起動とともに設定データをダウンロードし適用
2. 終了時に設定データをクラウドに転送

比較表

メリット デメリット
方法1 クラウドの構築が不要 ・運用上現実的ではない(利用者が都度バックアップ・リストアを行うため負荷が高い)
方法2 ・データはロボット側に保存されているため、クラウドとの接続が切断されてもロボアプリを実行させ続けることができる ・バックアップの漏れが出ないよう、タイミングを適切に設定する必要がある
・クラウド側のデータが不完全な場合でロボアップデートが実施されるとバックアップされていないデータが失われる可能性がある
方法3 ・利用者はデータの保存について意識する必要はない
・クラウドもしくはロボアプリで更新したデータが即時反映される
・クラウドとの接続が確保できないとアプリが実行できない(システムダウン・NW障害)
・利用要求が想定を越えるとアプリのパフォーマンス低下やシステムダウンに繋がる
・容量が多いコンテンツがある場合、その都度データの取得が必要になる

まとめ

 実際のロボアプリ設計では、方法2、方法3をうまく使い分けると良いでしょう。