2014年06月10日

Sony Xperia Z2 レビュー : マイクロSD問題について

発売直後に突撃速攻買いした ソニー/ドコモXi エクスペリア Z2 (SO-03F) のレビューです。

- マイクロSDスロットへ書き込みができなくなった -

AndroidOS の最新版であるバージョン4.4、通称 Kitkat から外部SDの仕様が変更され基本的に書き込みできなくなっています(読み込みは今までどおり可能)。

microSD を挿入する向きはこっちです。間違えて無理に刺すと抜けなくなる可能性あるので注意
sony-docomo-xperia-z2-microsd-in.jpg

Xperia Z2 は出荷状態で Android 4.4 なのでやはり本体右にあるSDカードスロットへのアプリからの書き込みが制限されており、例えば私が常用しているESファイルエクスプローラーを使ってみると、SDカード上の任意のフォルダを指定しての書き込みは出来なくなっていました(閲覧は可能)。

sony-docomo-xperia-z2-sdcard-copy-failed.jpg

Xperia Z2 の場合は本体にプリインストールされているアプリ、例えば File Commander ならばこれまで同様に書き込みができるため、単なるファイル移動・コピーの作業ならば File Commander を併用することでなんとかなりそうですが、プリインストール・アプリではカバーしきれない作業というのは山ほどあるので、サードパーティ・アプリと microSD を組み合わせて運用する事を前提にしている人にはちょっと痛い仕様変更かもしれませんね。

なんでこんな面倒なことになるような仕様変更を今ごろになって導入したのか、正直よく判らないところもあるんですが Google の公式アナウンスによるとこの変更は『セキュリティ上の問題を減らす』のが目的と言っていて、ネットに散らかった情報をつまみ読みして私が理解した範囲では、だいたい次の2点が理由とされている模様です。

1. アプリのアンインストール時に、外部スロットのSDに書きこまれたアプリ固有の保存情報をゴミとして残さないようにするため

2. アプリ固有情報を外部ストレージに保存するのが目的なだけの場合には“外部ストレージの書き込み権限”(android.permission.WRITE_EXTERNAL_STORAGE)を与えなくてよくなる

2番目は一見プログラマ向けの利便性に見えるかもしれませんがそうではなく、KitKat より前のアンドロイドOSでは、例えばゲームの追加コンテンツをネットからダウンロードして保存するとかいった場合に外部ストレージ書き込み権限を与える必要があり、実際にはアプリから固定されたディレクトリ内容しか変更しないのに『SDカードのコンテンツを修正/削除する』という(アプリが自由自在にSDのあらゆる内容を変更するのではないかという不安を感じる)権限の要求がインストール時に見えてしまうことを避けるのが目的のようです。

とはいえ端末のほとんどが KitKat 以降に置き換えられるのはまだまだ先のことでしょうし、アプリ製作者も以前のOSとコンパチビリティを保たなければならないので、当面は今までどおり“なぜ『SDカードのコンテンツを修正/削除する』ような権限を要求されるのか”よくわからないままインストールしないとしようがない状態は続くと思われます。

コンピュータの事は結構詳しいはずなのにこの話が何を意図してるかよくわからない、と思った方もいらっしゃるかもしれませんが、じつは『外部ストレージ』という単語がクセモノで、アンドロイドOSの歴史的な経緯のためここらの事情がゴチャゴチャになっていて意味が通りにくくなってるんですね。以下で簡単に解説してみます。

- Android ストレージ領域各種のまとめ -

アンドロイド端末の外部スロットSDというのはプログラミング上のちょっとした鬼門で、当初からディレクトリの扱いなどに統一感が欠ける傾向がありトラブルの元になっていましたので、この仕様変更は“ここらでいっぺん綺麗にまとめ直そうやないか”と Google のエラい人が考えていてその布石のつもりかもしれないと思ったりもします。

まず『外部SD』だとか『外部ストレージ』だとかいう名称が問題で、この字面から想像されるような意味と現実の実装がかけ離れてたりするんですね。

たとえば私も音楽プレイヤーとして愛用している Android Walkman シリーズですが、いずれも物理的なメカ上は外部スロットやマイクロSDカードの類はどこにも存在しませんが、設定アプリの『ストレージ容量』の表示を見ると『内部ストレージ』と『USBストレージ』などと分けて書いてあり、ESファイルエクスプローラー等で確認すると何故か "sdcard" のマウントが存在して、中を見てみるとそれが設定アプリで表示されるところの『USBストレージ』になってるんですね。物理的なストレージは一個しかありませんから HDD をパーティションで2ドライブにしてるみたいな構成になってるわけです。

なぜこんな事になっているかというと、AndroidOS ではアプリおよびアプリに強く紐付けられた情報の置き場所と、汎用データとして読み書きする情報(音楽や動画とかそのほか諸々)の置き場所は、別々のストレージ領域を使うことを前提にシステムが設計されているからです。

AndroidOS のシステム本体やインストールしたアプリの本体が配置される『メインストレージ』あるいは『内部ストレージ』と呼ばれる場所には、個々のアプリ毎の固有データを保存するディレクトリ(通常は"data/"配下)があり、アプリ固有に保存する例えばログイン用パスワードデータのようなものは他アプリからのアクセスを禁止するためにこのローカルディレクトリ内に保存します。ちなみにこういうセキュリティモデルを“サンドボックス化”といいます。

一方でプレイヤーで再生する動画やら音楽、画像などのメディアファイルとか、PDF リーダーで読む PDFファイルなんかは色々なアプリから自由にアクセスできないと不便です(でないと同じファイルを逐一個別のアプリそれぞれごとのローカルディレクトリにコピーしないといけないことになりますがこれは馬鹿げています)。というわけで、そういう公開データは『サブストレージ』だとか『外部ストレージ』と呼ぶ場所に配置するようになっているわけです。

つまり物理的なメディアを区別するための呼称ではなく、アプリ内部情報が『内部ストレージエリア』で公開情報が『外部ストレージエリア』の意味合いだったのが、スマホなど実際の端末では『外部ストレージ』として端末内部(たいていは電池蓋を開けないと見れない場所にある)に microSD の物理メディアを差して実装してあったために『外部ストレージ=マイクロSD』というのが定番になってしまったんですね。そのためにマウントされたディレクトリ名も"sdcard"が一般化してしまったわけです。

それでは Xperia Z2 の右サイドにあるようなSDカードを簡単に抜き差しできる SDカード・スロットはどういう扱いかというと、これは厳密には『セカンダリ外部ストレージ』と呼びます。ファイラーで見ると "sdcard1" とか表示されることが多いと思います。これに対し先述の“端末内部にあるが外部ストレージ”というまるでナゾナゾみたいなやつは『プライマリ外部ストレージ』と言います。

ちなみに Android Walkman のようにSDカードが無いのにプライマリ外部ストレージが存在する場合、設定アプリのストレージ容量表示では『USBストレージ』と表記されファイラーなどで見ると "sdcard" と表示されることが多いです。といっても、ここらの具合も機種依存が激しく "mnt/sdcard0" だったり "storage/sdcard0" だったり "/storage/emulated/0/" だったり、あるいはそれら複数が実装されていたりする上に、資料やアプリによって呼び方がまちまちで例えば Xperia Z2 にプリインストの File Commander はこのプライマリ外部ストレージを『内部ストレージ』と呼称しています(ほんま何がなんやら…)。

このほかにUSBホスト機能によってUSBメモリ(いわゆるPenDrive)とかカードリーダーを接続できる場合、接続したストレージは『USBストレージ・デバイス』と呼ばれますが、これが前述のエミュレートされたプライマリ外部ストレージ(実体は内蔵ストレージでファイラー表記では通常"sdcard")の設定アプリの容量表示の表記である『USBストレージ』と紛らわしく(たぶん PC と接続するとUSBメモリみたいにアクセスできるという意味なんでしょうけど)、またまた混乱に拍車をかけています。ほんまゴチャゴチャですね。Google さんがここらをなんとかしたいと思う気持は判らんではないです。

そんなわけでこの“KitKat でのSDカード問題”と漠然と呼ばれている件は、より正確な表現をすると

“『セカンダリ外部ストレージ』への書き込みはアプリ固有のパッケージディレクトリを除き、出来なくなる”

ということになるんですね。

- SDカードに書き込める場合もある -

KitKat を搭載した現行の Xperia Z2 を使ってSDカードに対し出来る事と出来ない事を以下にまとめてみました。
※ルート化して仕様を回避するケースは除外します

・読み込みは今までどおりのことが出来る。

・File Commander などプリインストール・アプリは、読み書きともこれまでどおりのことが出来る。

・USBケーブルでPCに接続してPC側からSDカードの中身を覗く場合は従来どおり読み書きが出来る。

・ESファイルエクスプローラーなどサードパーティアプリでは、本体スロットに差したSDカードに自由な書き込みはできない。

“自由な”と表現したのは、自由度は低いですがSDカード内の自分のパッケージディレクトリには書き込みできるからです。パッケージディレクトリ名はアプリの開発者が決めたユニークなパッケージ名から自動的に決定されるので、ユーザーが自由に選ぶことはできません。なのでファイラー系は絶望的ですが、カメラアプリ等で写真をSDカードに保存するような仕様は今後も継続可能と思われます(ただし保存先フォルダを自由に選べないし、アプリのアンイストール時はフォルダごと消去される)。

またUSBストレージ・デバイスについてはこれまでどおり使えますので、SDカードリーダーをUSBホストケーブルで接続した場合は、これまでどおりESファイルエクスプローラー等でSDカードに読み書きが可能です。

サンワサプライの Android USBホスト対応 microSD リーダー ADR-GSDU5BK を経由してSDカードにアクセスした例
sony-docomo-xperia-z2-con-cardreader.jpg

Xperia Z2 の場合、ファイラーからは "storage/usbdisk" というディレクトリが見えるのでそこにコピーします。

このサンワサプライのOTGケーブル…というかホスト変換ソケットを介してペンドライブやらHDDやら繋いでみましたが、Xperia Z2 は USB ホストを搭載してるのでいずれも利用可能です(HDDは条件アリ)。

USBメモリもOK
sony-docomo-xperia-z2-con-pendrive.jpg

HDD はバスパワーのものは駄目なようです。電力不足でしょうね。3種類ほど試しましたがどれもだめでした。

ACパワーの場合でも、認識はしてもファイルシステムが NTFS だと駄目っぽいです。このときマウント解除しようとタップすると「フォーマットしますか?」みたいなことを聞いてくるので注意です。言うまでもないですがフォーマットするとHDDの内容が消えます。そもそもマウントされてないのでそのままサクっとケーブルはずしましょう。

sony-docomo-xperia-z2-con-hdd-failed.jpg

バスパワーでも FAT32 でフォーマットしてあり間にパワードのUSBハブをカマすと認識しました。試しに本体からファイルコピーしてみましたが問題ないようです。ただ Android に大容量のHDDを接続するような用途はあまりテストされてないような気がするので使う場合は自己責任で。まず内容消えても困らないHDDで試すのがオススメ。

sony-docomo-xperia-z2-con-hub-and-hdd.jpg

ややトリッキー(?)な使い方ですが、Walkman F886 をUSB接続して Xperia 側のファイラーでファイルのやり取りとかもできます。ついでに充電もできちゃいます。意味あるかどうかは知りませんが…。

sony-docomo-xperia-z2-con-nw-f886.jpg

ひき続き Xperia Z2 の音質に関するレビューをします。





スポンサードリンク
posted by blogsapo at 23:43 | Comment(1) | TrackBack(0) | モバイル・周辺機器 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
とても参考になりました。
気になっていたところがスッキリして、気づいてなかったところも勉強になりました。

それにしても不便な仕様変更ですよね。。
プライマリ外部ストレージのくだり、なんとかしたいというのは分かりますが、初めにしてなかったルール作りをちゃんとすればいいことでないのかしらと。
セキュリティやらクラウド化やら他の狙いも見えますが、なんだかまるでリンゴさんになっていくかのような。。

ありがとうございました。
Posted by すねお at 2014年08月07日 09:35
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック