LoginSignup
4
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-05-31

 ロボアプリを作っていると、どこかにデータを保存し、それを再利用したいことがあります。ロボアプリではどのように処理を行うべきなのでしょうか。
 ソフトバンクロボティクスが発行している『ロボアプリ品質チェックリスト』をみながら保存すべき場所を探ってみます。

『ロボアプリ品質チェックリスト』
https://developer.softbankrobotics.com/jp-ja/documents/checklist

※本記述の内容は全て個人の解釈です。

APIドキュメントから探る

 APIドキュメントからデータの保存に使えそうなものを探してみます。ALPreferenceManagerモジュールの説明を見ると以下のように書いてあります。

ALPreferenceManager allows managing the robot preferences.
Robot preferences are used to store, among other, all the settings for the applications running on the robot.

 ロボットアプリのデータの保存に使えそうですね。

 ですが、『ロボアプリ品質チェックリスト』のチェック項目005-004-001では

PreferenceDBへの書き込みやPreferenceの使用がないこと

と書いてありAPIとしては存在しているものの、使ってはいけないと定義されています。

チェックリストから探る

 ではどこに保存するべきなのでしょうか。
 チェック項目007-001-004には

データ保存場所:アプリ内でデータ保存する場合はアプリフォルダ内(UUID配下)に保存していること※ソース上でもデータ格納先を確認すること

という記載がありました。
 アプリフォルダ内部に保存すれば良いようです。

UUID:ロボアプリのUUIDという意味だと思います。Application IDと同義と認識しています。

アプリフォルダ内部のパスを考える

 ロボアプリがインストールされる位置は、Choregrapheから[▶︎]ボタンを押した場合と、パッケージでインストールされ実行される場合で異なります。

インストール方法 アプリフォルダのパス
Choregrapheから[▶︎]ボタン <Applications>/.lastUploadedChoregrapheBehavior
パッケージでインストール <Applications>/<ApplicationID>

 違いを吸収するために、以下のように取得します。

アプリフォルダのパスを求める
appFolder = self.behaviorAbsolutePath().replace(self.behaviorRelativePath(), "")

 ビヘイビアの完全パスから、ビヘイビアの相対パスを削り取った文字列がアプリがインストールされている位置です。これで、Choregrapheから[▶︎]ボタンでインストールされようがパッケージでインストールされようが、実行場面に応じて適切な場所を得られるようになりました。

 次にデータを保存するフォーマットを考えてみましょう。
 ロボアプリ上でのデータ保存(2)に続きます。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2