RabbitBoxのデータをデバイス間で共有したい話 その1

本格的にiPhoneの最適化を行おうと思っていますが、 その前にiCloudなどを利用してデバイス間でのデータ共有をサポートできないか 検討してみることにしました。

結果的にRabbitBoxの内部構造を再設計し、 ドキュメントベースAppにすることが最も効果的そうなので各種実験と実装を行なっています。地獄です😇

現在はなんとか形になってきていますが、かなり紆余曲折がありましたので数回に分けて記事にしようと思います。

RabbitBox - 画像収集と整理アプリ

RabbitBox - 画像収集と整理アプリ

  • Yoshinobu Sugain
  • 写真/ビデオ
  • 無料
apps.apple.com

そもそもの経緯

RabbitBoxのような画像管理を複数デバイスで共有する場合、アプリケーションサーバを実装しまって集中管理した方が整合性とりやすそうですし、AndroidWebブラウザ対応など将来性もあるよなぁと思います。 ただ、趣味の延長で開発していることもあり、バックエンドサービスの運用は行いたくないというのが本音です。 RabbitBoxはあくまでスタンドアロンアプリとして開発を継続するつもりです。

このような理由もあり、現バージョンのRabbitBoxはローカルデバイス内で完結するアプリとして開発しています。ただ、私本人もなのですがiPadiPhoneでデータを共有したい場面は多々あり、デバイス間のデータ共有を正式サポートしようと思い立ちました。

共有方法の検討

バイス間のデータ共有方法は開発初期からなんとなく考えていましたが、具体的な手法については検討していませんでした。ぼんやりとした案としては、

  • Dropbox API を使う
  • ImageBox(≒アルバム)のエクスポート・インポート機能でやり過ごす
  • iCloud を使う

のようなものを考えていました。

Dropbox APIを使う

DropboxAPIを使用するとかなり自由なことができそうでした。 ただ、全員がDropbox使っているわけではないですし、特定のサービスに依存するのもどうかと考えて保留としました。

ImageBoxのエクスポート・インポート機能でやり過ごす

これは最有力でした。実装も比較的簡単ですし、今のRabbitBoxの内部設計的にも対応は難しくありません。 ただ、実際にテスト実装してみると次のような問題があり、断念しました。

  • iPadのImageBoxをiPhoneで少し見たいという場合でも全データの「エクスポート→iCloudなどでの転送→インポート」が必要
  • インポートするデータとApp内のImageBoxデータで約2倍のストレージを消費する
  • バイス間でのやり取り(iCloud同期も含め)時に全データの転送が必要(1枚画像が追加されただけでも全画像データの転送が必要になる)

iCloudを使う

最終的にはこの方向で進めています。

  • Appleの標準サービス(Dropboxのような別サービスでない)
  • 更新のあった部分だけ同期してくれる(らしい)

ただ、情報が少ない……というか分かりづらい😇

次回以降はiCloud周りで調べた内容を備忘録も兼ねて書いていこうと思います。