ガイド

adbかMTPか:同じケーブルでファイルを移す2つの方法

Androidスマホがコンピュータにファイルを渡す方法は2つあります。1つは誰でも使えて、設定も要りません。もう1つは開発者向けで、スイッチを1つ入れる必要がありますが、できることはずっと多くなります。

MTPは、スマホのUSB設定でファイル転送を選んだときに使われるものです。ほかには何も要らず、MTPアプリがあるどのコンピュータでも使え、スマホのファイルを一覧で表示して、ドラッグで出し入れできます。adb(Android Debug Bridge)は、Androidの開発者ツールが使うプロトコルです。USB デバッグを一度オンにする必要がありますが、そのかわりにコンピュータは、ファイルのコピー機能、スマホ上のシェル、そしてそれらの上に作られたあらゆるものを使えるようになります。

借りたコンピュータで写真を数枚移すだけなら、MTPが手軽です。ターミナル、スクリプト、大きなフォルダ、4 GBを超えるファイル、あるいはスマホをドライブとして扱いたいなら、adbのほうが強力です。どちらもmacOSには組み込まれていないので、Macではどちらもアプリかダウンロードを通じて使います。

MTPとは

MTP(Media Transfer Protocol)は、カメラ用のプロトコルPTPの拡張としてMicrosoftで生まれ、Androidでは2011年からUSBでのファイル転送に使われています。スマホはストレージの管理を手放さず、すべてのファイルとフォルダを番号付きのオブジェクトとして提供します。コンピュータはまず一覧を求め、次にオブジェクトを1つずつ、一度に1つの操作で要求します。仕組みと、Macが単独ではMTPをマウントできない理由は、MTPのしくみでくわしく説明しています。

adbとは

adbは、GoogleのSDK Platform-Toolsに含まれています。macOS、Windows、Linux向けに無料でダウンロードできます。adbは3つの部分でできています。入力するadbコマンド、コンピュータのバックグラウンドで動くサーバー、そしてそれに応答するスマホ上のデーモンです。Android Studioは要りません。Homebrewが入ったMacなら、コマンド1つでインストールできます。

brew install --cask android-platform-tools

スマホをつないで許可したら、ファイルの操作に使うのは次のコマンドです。

adb devices
adb pull /sdcard/DCIM/Camera ~/Pictures/Phone
adb push ~/Music/Album /sdcard/Music/
adb shell ls -l /sdcard/Download

adb pullはスマホからファイルやフォルダごとコピーし、adb pushはスマホへコピーします。adb shellはスマホ上でコマンドを実行し、コマンドを指定しなければ対話型のシェルを開きます。

スマホ側で必要なこと

MTP:ファイル転送モード

  1. スマホのロックを解除し、ケーブルをつなぎます。
  2. このデバイスを USB で充電中の通知をタップします。
  3. USB の接続用途でファイル転送を選びます。Pixelではファイル転送 / Android Auto(File transfer / Android Auto)と表示されます。

ほとんどのスマホは、次につないだときには充電だけに戻ります。そうしたくない場合は、開発者向けオプションにデフォルトの USB 設定があります。

adb:USB デバッグ

  1. 設定 > デバイス情報を開き、ビルド番号を7回タップします。Samsungでは端末情報(About phone) > ソフトウェア情報(Software information)の中にあります。
  2. 新しく現れた開発者向けオプションで、USB デバッグをオンにします。
  3. ケーブルをつなぎます。スマホにUSB デバッグを許可しますか?と表示され、コンピュータのRSAキーのフィンガープリントが示されます。このパソコンからの USB デバッグを常に許可するにチェックを入れ、許可をタップします。

メニューの場所はメーカーによって変わるので、Samsung、Pixel、Xiaomi、OnePlus、Motorolaの手順はUSB デバッグをオンにする方法にまとめています。

USB デバッグは安全?

自分のコンピュータだけを許可しているかぎり、USB デバッグは名前から受ける印象よりも安全です。Android 4.2.2以降、スマホは、誰かがロックを解除してそのコンピュータの鍵を受け入れるまで、そのコンピュータからのadbコマンドを1つも受け付けません。

MTPの仕組みはもっと単純です。スマホのロックが解除されている必要があり、ファイル転送がオンのあいだは、ケーブルをつないだ人なら誰でも共有ストレージにアクセスできます。コンピュータごとの許可はありません。

それぞれにできること

MTPアプリターミナルでadbSideMount(Finderでadb)
スマホ側ファイル転送(つなぐたびに選ぶ)USB デバッグ(一度オンにするだけ)USB デバッグ(一度オンにするだけ)
双方向のファイルコピー可能可能可能
4 GBを超えるファイルアプリによる可能可能
Macのどのアプリからでも、ファイルをその場で開くスマホをマウントするアプリのみ不可(先にpullが必要)可能
ターミナル、スクリプト、rsync不可独自のコマンドのみ(rsyncは不可)可能(ボリューム上で)
スマホ上のシェル、アプリのインストール不可可能不可
Wi-Fi経由不可可能(Android 11以降)可能(Android 11以降)
Macでそれぞれの方法にできること。最近のスマホではどちらのプロトコルも生の転送速度は十分に速いので、速度は比較から外しています。

左の列の多くは、MTPのオブジェクトモデルが理由です。MTPは番号でオブジェクトを丸ごと渡し、一度に1つの操作しかできません。これは、ウインドウにファイルをドラッグで出し入れするのには向いています。adbのファイル機能はパスで動くので、ターミナルやスクリプトが期待するとおりに使えます。また、adbのシェルを使えば、何もコピーせずに、スマホ上でファイルを探したり、移動したり、削除したりできます。

共通点もあります。一度にスマホを使えるプログラムは1つだけです。MTPのセッションも、adbの接続も1つだけ。MTPアプリが開いていれば別のアプリは接続できず、スマホを使えるadbサーバーも一度に1つだけです。

使い分け

SideMountと自分のadbを両方使う場合は、交代で使います。マウントする前に自分のadbサーバーを終了し、Finderでスマホを取り出せば、スマホは自分のadbに戻ります。最初の接続はセットアップガイドで順に説明しています。ワイヤレスの方法も含めたAndroidとMacのあいだでファイルを移すすべての方法もあわせてどうぞ。

よくある質問

adbはMTPより速いですか?

本質的には変わりません。USB 3ケーブルでつないだ最近のスマホなら、どちらも大きなファイルを速く移せます。プロトコルよりも、コンピュータ側のアプリの違いのほうが大きく効きます。USB 2のスマホやケーブルでは、どちらも約20〜40 MB/sが上限です。

adbを使うにはAndroid Studioが必要ですか?

いいえ。adbは、GoogleのSDK Platform-Toolsという小さな単体のダウンロードに含まれています。Homebrewならbrew install --cask android-platform-toolsでも入れられます。Macアプリの中には自分でadbを話すものもあり、その場合はどちらも要りません。

USB デバッグを通じて、誰かにファイルをコピーされることはありますか?

スマホがすでに許可したコンピュータからだけです。新しいコンピュータには、スマホのロック解除と、「USB デバッグを許可しますか?」の確認での許可が必要です。念のため、開発者向けオプションの「USB デバッグの許可の取り消し」を使うか、必要ないときはUSB デバッグをオフにしてください。

adb devicesでunauthorizedと表示されるのはなぜですか?

スマホが、まだこのコンピュータの鍵を受け入れていないからです。ロックを解除して、「USB デバッグを許可しますか?」の確認を探してください。表示されない場合は、開発者向けオプションで許可を取り消し、つなぎ直して、スマホにもう一度尋ねさせてください。

AndroidスマホがFinderに。

7日間無料、カード登録不要。macOS 26以降。

macOS版をダウンロード