ほとんどのアンドロイド機には、USBコネクタがあり、充電とPC接続に利用できます。Android 3.0までは、PCに接続すると、USBの大容量ストレージ(マスストレージクラス)デバイスとして認識されていました。しかし、Android 3.1からは、MTPと呼ばれる方式でもPCと接続できるようになりました。

Galaxy NexusのUSB接続オプション。MTPまたはPTPを切り替えることができる

ただし、どの方式を使うのかは、デバイスメーカー次第で、MTPでしか接続させないデバイスもあれば、USB大容量ストレージと切り替えられるもの、USB大容量ストレージでしか接続できないものもあります。このあたりは、メーカーの裁量になっており、2.xでもMTPを使えるものや、4.xでもUSB大容量ストレージしかサポートしないものがあります。

Android 4.1であっても、PCとの接続はUSB大容量ストレージ接続しかサポートされていない機種もある

さて、MTPがUSB大容量ストレージと違う所は、PCと接続しても、アンドロイド側でメモリカードをアンマウントしなくてもいいことです。これは、2つの接続方式の違いによります。

USBマスストレージクラスは、USB経由でハードディスクや光学ドライブ、フロッピーなどを接続するための仕様です。このUSBマスストレージクラスのデバイスを接続すると、USBよりも上の部分では、ハードディスクなどのような直接オペレーティングシステムが操作するデバイスのように見えます。SATAなどでハードディスクを接続したような状態と同じです。

一般にPC(Windows)がこうした外部記憶デバイスを使う場合、デバイスにファイルシステムを構築します。シリアルATAデバイスの場合、Windowsは、ストレージにあるファイルシステムを認識し、それに応じて処理を行おうとします。もし、ファイルシステムが認識できないような場合には、ストレージが初期化されていないと想定してフォーマットするかどうかを聞いてきます。

USBマスストレージクラスを使った場合には、Windows側には、ハードディスクでいえば、セクターがすべて見えているようなもので、Windows側のファイルシステムドライバが、動いて、ファイルの読み書きなどの操作を行います。

これに対してMTPの場合には、ネットワークドライブのようにWindowsからは見え、ファイルやフォルダだけが見え、その下のセクターやFAT領域のようなものはまったく見えません。

しかし、Windowsのエクスプローラーは、この2つのデバイスをちゃんと扱えるようになっています。ただし、USBマスストレージデバイスには、ドライブが割り当てられるのに対して、MTPデバイスには、ドライブが割り当てられず、機種名などがマイコンピュータ内に追加されます。どちらも、フォルダやファイルが見えるのですが、アクセスされるメカニズムが違っています。

接続が完了すると、通知領域にUSBとメディアデバイスとして接続している(MTPで接続している)と表示される。これをタップすることで、設定画面へと移行する

それでは、MTPデバイスのメリットとは何になるのでしょうか? USBマスストレージの場合、CPU側からメモリカードが直接アクセスされるため、アンドロイド側では、どのファイルがアクセスされているのかを簡単に判断することはできません。このため、PCからアクセスしている間にAndroid側のアプリケーションがファイルを書き換えてしまわないように、メモリカードをアンマウントします。このようにすることで、PC側とアンドロイド側で同時にデータを書き換えてしまったり、書き換えている最中のデータを読んでしまうことを避けているのです。

また、ファイルやフォルダの記憶場所などを示すファイルシステムの情報は重要な部分であり、ここを無関係に2つのプログラムがアクセスすることはできません。ファイルシステムを管理するのは1つのシステムだけに限定しなければなりません。

こうした理由があるので、USBマスストレージクラスとしてPCとアンドロイドを接続する場合、アンドロイド側は、メモリカードをアンマウントしてアンドロイド側からのアクセスができないようにします。

USB大容量ストレージで接続しようとすると、メモリカードがアンマウントされるため、アクセスできなくなるため、警告表示が出る

これに対して、MTPを使う場合、PC側からはフォルダやファイルだけが見えて、それ以上下のセクターやFAT領域のようなものは見えません。それらの管理は、アンドロイド側で行われており、PC側は、ファイルやフォルダを直接指定してコピーや削除などの操作を行います。

実際の操作をアンドロイド側で行うため、メモリカードをアンマウントする必要はなく、アンドロイド側で操作する必要があるためにアンマウントすること自体が不可能です。

しかし、アンマウントしないことにいくつかのメリットがあります。たとえば、メモリカードへのアクセスを前提としたアプリを動かし続けられることです。カメラアプリなどは、撮影画像をメモリカードに保存できるようになっていますが、MTPで接続していれば、接続中にも撮影が可能です。

MTP(Media Transfer Protocol)は、デジタルカメラ用の画像伝送のプロトコルであるPTP(Picture Transfor Protocol)を発展させて、画像以外のデータも扱えるようにしたプロトコルです。

PTPがデジカメで撮影した画像をPC側に吸い上げるような目的で作れたのに対し、MTPでは、こうした用途のほかに、PC側からポータブルメディアプレーヤーなどに音楽データを転送する場合などにも使えるように拡張されています。また、こうした場合に、音楽データとは別にジャケット写真などを使うことがありますが、MTPでは、こうした「メタデータ」(データを補足するデータ)やDRM機能などを扱うことも可能になっています。

エクスプローラーからアクセスすると単純にフォルダやファイルしか見えませんが、ウィンドウズ・メディアプレーヤーからみると、ちゃんと音楽プレーヤーとして認識され、同期を行うことが可能になります。このとき、メディアプレーヤー側でジャケット写真などを付けて音楽データを管理していると、アンドロイド側にもジャケット写真が転送されます(うまく転送されないときには再度メディアプレーヤー側で同期してみてください)。

MTP経由でウィンドウズ・メディアプレーヤーから音楽データを送ると、ジャケット写真も一緒に送られる。PC上では、このジャケット写真は、MP3ファイルとは別ファイルであり、メディアプレーヤーがジャケット写真データとして別に管理していた

編集部注: 本稿は、2012年8月31日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。