Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Androidアプリのストレージ戦略

6,643 views

Published on

本セッションでは「AndroidってSDカード使えるんでしょ?」と急に出てきたちょっとヤバそうな仕様との付き合い方、
「気づいたらアプリで容量使いすぎて死にそう」という機能要件をクリアするためのストレージ戦略を解説します。
内部/拡張などストレージの種類を問わず、アプリがデータを保持するための最適な場所について横断的に考察します。

今は昔、古来のAndroidアプリではSDカードのパスを探すだけで一苦労がありました。
現在、Android SDKが提供するExternal Stroage APIでは拡張ストレージへのアクセスを可能にしており、
アプリはより多くの情報を拡張領域に保存できます。

セッションではアプリケーションの種類や保存するコンテンツの性質を考慮しながら内部/拡張ストレージを上手に使い分ける方法を紹介します。
利用にあたってはマルチアカウント、端末の空き容量、クラウド連携、暗号化など設計上考慮すべきポイントを押さえつつ、
過去のTipsが今も使えるのか?という疑問やAndroidアプリ開発のスタンダードは存在するのか?という設計上の課題を解消します。

Published in: Technology
  • Dating for everyone is here: ❶❶❶ http://bit.ly/2F4cEJi ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Androidアプリのストレージ戦略

  1. 1. Android アプリのストレージ戦略 ~AndroidってSDカード使えるんでしょ?~
  2. 2. @mhidaka
  3. 3. SD
  4. 4. SDカードは概念
  5. 5. ユーザーの考えるSDカード 持ち運べる 入れ替えられる 拡張できる 完璧かよ
  6. 6. 開発者の考えるSDカード 存在しないときがある ファイルが入れ替わる 誰かが書き換える 地獄かよ
  7. 7. ギャップを埋めよう 果たして埋まるのか
  8. 8. Goal Androidのストレージ制約を 理解する 制約と機能要件のバランスを 図る これならできそう
  9. 9. Android One
  10. 10. SDカードの内部ストレージ化 Marshmallowの新機能 Android Oneで有効化 ヤバそう
  11. 11. Keywords • 内部ストレージ • 外部ストレージ • 拡張ストレージ 後で説明します
  12. 12. Keywords • Permission • Multi User • Storage Access Framework • Scoped Directory Access 難しそう
  13. 13. Android ストレージの進化
  14. 14. Q. SDカードを使うと大容量アプリが 可能になるんですか? しないほうが幸せです。 Export / Importなら選択肢の 1つとして考えてもいいです 読者からのお手紙
  15. 15. Standard Strategy <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" ... > 内部ストレージへのインストールを 推奨(デフォルト値) ※API Level 8を懐かしむページです
  16. 16. Standard Strategy ・Service ・Alarm Service ・IME ・Account Manager ・Sync Adapters ・Device Administrators ・listening for "boot completed" 外部ストレージへのインストールで は次の機能は動きませんし、いまは 誰もやってません
  17. 17. Q. ではキャッシュデータが適してる と聞きましたがSDカードを使ってい いですか? キャッシュには使わない 別なやり方がある
  18. 18. Standard Strategy 内部ストレージに余裕がある アプリキャッシュは自分で管理 ただしキャッシュを削除するア プリが少なく、内部ストレージ を圧迫することが多い
  19. 19. Q. どうしても外部ストレージが使い たいです。SDカードへのアクセスは こうやるんですか? /sdcard /mnt/sdcard /mnt/sdcard/external_sd /storage/sdcard0 牧歌的。
  20. 20. Standard Strategy Android 4.4以降、外部ストレー ジの利用方法が変わりました。 Storage Access Framework
  21. 21. ファイル表現の抽象化 DocumentsProvider: 外部ストレージやオンライン などストレージを抽象化する DropboxとかGoogle Driveとか
  22. 22. Standard Strategy private void createNewFile() { Intent intent = new Intent( Intent.ACTION_CREATE_DOCUMENT); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TITLE, "Untitled.txt"); startActivityForResult(intent, CREATE_DOCUMENT_REQUEST); } ファイルを作る
  23. 23. Standard Strategy private void save(Uri uri, String text) throws FileNotFoundException, IOException { OutputStream outputStream = null; try { outputStream = getContentResolver(). openOutputStream(uri); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(outputStream)); writer.write(text); writer.flush(); } finally { IOUtil.forceClose(outputStream); } } 書き込む
  24. 24. Q. なぜ外部ストレージへのアクセス が抽象化されたのですか? マルチユーザ対応のため、今 までのようなパーミッション 制御では限界が来ました Android 4.4から仕込み
  25. 25. Permission制御の変化 ファイルへのアクセス制御から ピッカーでのユーザ許可へ 提供側はDocumentProviderを 通じてストレージへのアクセス を許可&書き込みを行う
  26. 26. WRITE_EXTERNAL_STORAGE Android 4.1で追加 本権限の適用範囲にポータブ ルな外部ストレージを含まな い(4.4~適用)
  27. 27. マルチユーザ時でのセキュリテイ 伝統的なマウントポイントによるアク セス制限ではマルチユーザ対応に限界 (アプリデータを守りきれない) マルチユーザでのストレージ構成
  28. 28. Androidのストレージ戦略 内部ストレージ: アプリ用。基本的に隠蔽 拡張ストレージ: デバイスのプライマリストレージ 外部ストレージ: 抜き差し可能なポータブルストレージ なるほど分からん。
  29. 29. 内部ストレージ アクセス管理を強化。アプリケー ション領域ごとアクセス権を設定 他のユーザ、アプリから見れなく なった コマンド実行も制限
  30. 30. 拡張ストレージ マルチユーザ対応にあたり、ユーザごとに独 立した拡張ストレージが必要に。 いままではシングルユーザのため、ファイル 構造が見えていても問題なかった。現在はPC 接続時にUSBデバイス(MTP)として表示。 音楽や動画、写真、データを置く。デバイス 上のプライマリストレージ WRITE_EXTERNAL_STORAGE適用範囲
  31. 31. 外部ストレージ デバイス上のセカンダリストレージ 基本的にはUSBメモリのようなポー タブルストレージが対象。 アクセスは制限。Storage Access Framework経由のみ許可 機密データは置けない
  32. 32. Q. 拡張ストレージという区分はなぜ 必要なのですか? A. 製品と同じライフサイク ルの記憶メモリ(バッテリの 裏にあるようなSDカード) に対応するためです
  33. 33. Standard Strategy Context.getExternalFilesDirs() Context.getExternalCacheDirs() Context.getObbDirs() Android 4.4~では 複数の拡張ストレージに対応
  34. 34. Standard Strategy Android 6.0~ではUSBメディアの サポートも開始 Storage Access Frameworkで制御 可能(外部ストレージとして) direct access is explicitly blocked for privacy and security reasons.
  35. 35. SDカードの内部ストレージ化 外部ストレージを内部ストレージに 転用する
  36. 36. SDカード(外部ストレージのまま) ポータブル可能な外部ストレージと して扱いたい場合はStorage Access Framework経由でのアクセ ス 書き込みは制限される
  37. 37. SDカードの内部ストレージ化 バッテリパックの内側や、SIMと同 じように刺して抜き差しを考慮しな いSDカードは内部ストレージとし て扱えるようにできる
  38. 38. SDカードの内部ストレージ化 暗号化およびフォーマットされ、製 品のライフサイクルに組み込まれる かわりに内部ストレージとして使え る(アプリのインストール可能) フォーマットはext4, f2fs SDカード好きすぎでは…
  39. 39. What’s New in Android 7.0 FileSystemのパーミッション変更 アプリ間のファイル共有変更 Scoped Directory Access
  40. 40. Standard Strategy アプリのプライベートディレクトリ にアクセス制限(700)を追加 所有者でも緩和できない MODE_WORLD_READBLEや MODE_WORLD_WRITEBLEを使うと SecurityExeptionが発生
  41. 41. Standard Strategy 自身のアプリ外への file:// URI の公 開を禁止する StrictModeが適用 ファイルURIを含むIntentは FileUriExposedExceptionになる FileProviderで回避
  42. 42. Scoped Directory Access
  43. 43. Scoped Directory Access StorageManager sm = (StorageManager) getSystemService(Context.STORAGE_SERVICE); StorageVolume volume = sm. getPrimaryStorageVolume(); Intent intent = volume. createAccessIntent( Environment.DIRECTORY_PICTURES); startActivityForResult(intent, request_code); ディレクトリを直接呼び出す similar to using URIs returned by the Storage Access Framework.
  44. 44. まとめ
  45. 45. Q. つまりどういうことですか? ざっくりと 内部 拡張 外部 フォーマット Ext4, f2fs exFATなど アクセス File IO Storage Access Framework アプリから見た公 開度 private private public public マルチユーザ対応 OK OK NG
  46. 46. Q. バックアップ用途でSDカードは向 いているのですか? 一長一短です。小さければShared PreferencesにしてBackupオプ ションを使うと楽です。サーバが あればインターネットの向こう側 も楽ですが基本的にアプリ以外で 同じ苦労をしているに過ぎません 選択肢は多い
  47. 47. Q. SDカードのマウント状態はわかり ますか? EnvironmentにAPIがあります 結局ファイル制御なのでR/Wの エラーハンドリングをきっちり するといいでしょう 信頼性は低い
  48. 48. Q. USBメモリにもアプリからアクセ スしたいです アプリ独自でやるならUSBホス ト機能を使ってお話するかんじ です(ファイラーも必要になる ので重い) 外部ストレージ
  49. 49. @mhidaka Thank you! 公式アプリからセッションフィード バックをお待ちしてます

×