PCやスマートフォン、さまざまなプラットフォームの機器を併用するとき、わりと多いのが、ファイルの転送だ。写真やダウンロードしたファイルなど、機器から別の機器へファイルを転送することがある。もちろん、転送したくなるのはファイルだけではないが、ファイル交換ができるような環境があるなら、ほかのものを送るのはそれほど難しくない。たとえばWebページのURLなら同じブラウザで履歴を共有しているため、簡単に別のマシンでも開くことができる。というわけで、さまざまなプラットフォーム同士で、ファイル転送がどれだけ簡単にできるのかを調べて見た。

  • ファイル転送したい

想定したのは、「Windows」、「Linux」、「スマートフォン(Android)」、「Chromebook」の4つのプラットフォーム(表01)。ファイル転送するといっても、いろいろな条件がある。今回は、自宅やオフィスなどのLANが整った環境と、外出先など、LANが使えない状況を考えてみた。前者を「自宅」環境、後者を「外出先」環境と呼ぶことにする(表02)。このため、WinodwsとLinuxは、デスクトップマシンも対象にしてある。これに対して、AndroidやChromebookのデスクトップマシンは一般的ではないため除外してある。

■表1
有線LAN 無線LAN Bluetooth 携帯ネットワーク
Windows *1 Desktop × × ×
Windows Laptop ×
Linux *2 Desktop × × ×
Linux Laptop ×
Android *3 ×
Chromebook *4 × ×
*1:Windows10 Ver.20H2
*2:Ubuntu 18.04
*3:Android 11
*4:ChromeOS Ver.91
■表2
LAN(有線,無線) WLAN アクセスポイント Bluetooth通信 インターネット接続 IPアドレス Desktopマシン
自宅/オフィス ×*1 割り当て済み あり
外出先 × × スマホのみ可 割り当てなし なし
*1:Bluetoothを装備しないデスクトップマシンが含まれる可能性があるため

「ファイル転送したい」といっても、いろいろな状況がある。今すぐもらってファイルを開きたいという場合もあれば、転送に時間がかかってもいいし、もしかしたら受け取ったファイルを開くのは明日になるかもしれないという場合もある。これらを「待ち時間不可」、「待ち時間可」として区別しておく。この4つの組み合わせでファイル転送が「簡単」にできるのかを考えてみた。

「簡単」とは、定義しにくいが、原則ワイヤレス転送で、ファイルの転送元か転送先のどちらかのみのGUI操作で可能なものか、双方で簡単な操作(ファイルや保存先の指定など)で転送が可能なことを想定した。なお、アプリのインストールや一回設定すれば以後、設定する必要がない「事前設定」に関しては多少複雑でも範疇に含めることにした。しかし、ファイル転送アプリ以外に、ネットワーク接続を確立するコマンドを入力する、IPアドレスを手動で割り当てる、疑似的なアクセスポイントを動作させるなどの複雑な操作が必要な方法は「簡単」ではないとした。

結論から言ってしまうと、自宅やオフィスなどのLAN環境がある「自宅」環境の場合には、どうとでもなるし、簡単な方法がある。しかし、外出先でLANにもインターネットにも接続できないとき、今すぐファイルが必要な「待ち時間不可」の場合には、簡単な方法がなく、場合によってはUSBメモリなどのお世話にならねばならないこともありそうだ。

「待ち時間可」の場合には、OneDriveやGoogle Driveなどのオンラインストレージサービスを使えばなんとかなる。オンラインストレージサービスの多くは、Webブラウザからも利用可能であり、対象とした4つのプラットフォームではすべて利用可能だ。外出先環境では、オンラインストレージ機能の「同期」機能を使えば、インターネット接続がなくても転送の指示は可能だ。「簡単」ではないが、スマートフォンのテザリング(モバイルホットスポット)を使ってインターネット接続し、オンラインストレージサービスにアクセスすることもできる。

LANが使える環境でファイル転送を簡単にするには?

どの機器も同一のLANに接続できるなら、「待ち時間不可」でファイルを転送する方法は複数ある(表03)。とくにWindowsがファイル転送の一方になる場合、Windowsのファイル共有プロトコル(SMBと呼ばれる)には、Linux、Chromebookが標準対応しており、AndroidにはSMBに対応したサードパーティアプリがあるため比較的簡単にファイル転送が行える。しかも、Windows側のファイル共有設定が済んでいる場合、SMBクライアントの設定を行うだけでよく。操作も片方からのみで済む。

■表3
転送先→
↓転送元
Windows Desktop Linux Desktop Android Chromebook
Windows Desktop SMB /SnapDrop*1 Linux SMB mount /SnapDrop Android SMB対応アプリ*2 /SnapDrop Chromebook SMBクライアント*4 /SnapDrop
Linux Desktop Linux SMB mount /SnapDrop NFS /SnapDrop SnapDrop /KDEConnect*3 SnapDrop
Android Android SMB対応アプリ /SnapDrop SnapDrop /KDEConnect ニアバイシェア*5 /SnapDrop ニアバイシェア /SnapDrop
Chromebook Chromebook SMBクライアント /SnapDrop SnapDrop ニアバイシェア /SnapDrop ニアバイシェア /SnapDrop
*1:https://snapdrop.net/
*2:ファイルエクスプローラー系アプリに搭載されていることが多い(例:CXファイルエクスプローラーなど)
*3:https://kdeconnect.kde.org/ Windows-Linux間の転送にも利用可
*4:ファイルを開く、保存する、削除する - Chromebook ヘルプ https://support.google.com/chromebook/answer/1700055?hl=ja&ref_topic=3415535#zippy=%2C別のクラウド-ファイル-システムを追加する
*5:本文参照

しかし、それ以上に簡単な方法もある。たとえば、SnapDropやShareDropのようなWebアプリケーションを使う方法だ。SnapDrop(写真01)は、ブラウザでサイトを開けば、同一LANに設定している他のSnapDropサイトを開いているマシンが表示される。これを指定して、送信元でファイルを指定してやればよい。インターネット接続とLAN接続の両方があるなら簡単でソフトウェアのインストールも不要な方法だ。

  • 写真01: SnapDropは、LAN内でSnapDropを起動しているマシンを発見し、WebRTCでファイルをローカルで転送するWebアプリ。同様のコンセプトのWebアプリには、ShareDropなどがある

・SnapDrop
https://snapdrop.net/
・ShareDrop
https://www.sharedrop.io/
・GitHub
https://github.com/RobinLinus/snapdrop
https://github.com/szimek/sharedrop

自宅やオフィスなどの環境では、デスクトップマシンが存在する可能性があるため、無線LANやBluetoothは利用できない可能性が高い。このため、Bluetoothや無線LANを想定したファイル共有は利用できないことがある。

外出先では、Bluetoothのファイル転送プロファイルが適任

外出先には、LANも無線LANのアクセスポイントもないことがある。また、スマートフォン以外の多くのプラットフォームでは、3G/4G/5Gといった携帯電話ネットワーク接続機能を搭載している機器はまだ少数派で、インターネット接続もできない可能性がある。この環境の最大の問題は、無線LANなどのネットワークインタフェースがあっても、IPアドレスが割り当てられていないことだ。

この環境で多くの組み合わせをカバーできたのは、Bluetoothのファイル転送プロファイル(File Transfer Profile。FTP)だった(表04)。Bluetoothでは通信時にIPアドレスは不要で相手をBluetoothアドレスでのみ識別するため、LANやインターネットのない環境で利用可能だ。

■表4
転送先→
↓転送元
Windows Laptop Linux Laptop Android Chromebook
Windows Laptop 近距離共有*1 /BT-FTP*2 BT-FTP*3 BT-FTP*4 ?
Linux Laptop BT-FTP BT-FTP BT-FTP ?
Android BT-FTP BT-FTP ニアバイシェア*1 ニアバイシェア
Chromebook ? ? ニアバイシェア ニアバイシェア
BT-FTP:Bluetooth ファイル転送プロファイル
*1:本文参照
*2:Bluetooth を介してファイルを送信する https://support.microsoft.com/ja-jp/windows/bluetooth-を介してファイルを送信する-36f8cf26-d1ff-50d1-4b73-3a56e5b43e6a
*3:https://help.ubuntu.com/stable/ubuntu-help/bluetooth-send-file.html.ja
*4:標準のFilesアプリなどで転送ファイルを選択後、シェアアイコンからBluetoothを選択

しかし、残念なことに、Chromebookは、他のプラットフォームのホストとBluetoothペアリングする機能がなく、Bluetooth-FTPが使えないようだ。使えないと明確に書いた文書を見つけることはできなかったが、Chromebookのヘルプページでは、キーボード、マウス、ヘッドセット、ヘッドホン/スピーカーが接続できるBluetoothデバイスであるとされていた。

複数のプラットフォームでChromebookとBluetoothペアリングを試してみたが、Chromebookとはペアリングできず、Bluetooth-FTPの転送対象に指定することできなかった。双方のプラットフォームバージョンやBluetoothコントローラーの組み合わせ的な問題もあるかもしれないが、さすがに個人の範囲を超える検証であるため断念した。

逆にいうと、Windows、Linux、Android間は、Bluetooth-FTPが利用できるため、外出先でもファイル転送は可能だ。また、Windows 10には、「近接距離共有」という機能があり、LANやWLANアクセスポイントに接続していなくても、近くにあるWindows 10マシン同士でファイル転送が行える。同様の機能は、Android(6.0以降)とChromebook(バージョン89以降)にもあり、「ニアバイシェア」と呼ばれている。これを使えば、Android、Chromebookは相互にファイルの転送が可能だ。ただし、ニアバイシェアと近接距離共有の間には互換性はない。

・Windows 10 近距離共有
https://support.microsoft.com/ja-jp/
・Androidヘルプ ニアバイシェア
https://support.google.com/android/answer/9286773?hl=ja
・Chromebooks announces new features for 10th birthday(搭載発表時のブログ)
https://blog.google/products/chromebooks/chromebook-turns-10-new-features/

いろいろ調べてみたが、ChromebookとWindowsまたはLinuxの組み合わせの場合、「外出先」環境で「簡単」に利用できるファイル交換方法がなさそうという結論になった。ニアバイシェアを使ってAndroidを経由させる、テザリングしてという方法もないわけでないが「簡単」とはいえないだろう。もし、上記2つの組み合わせを外出先で使うのであれば、最悪の場合を考えて、両方に装着できるUSBメモリを持ち歩いたほうがいいかもしれない。

外出先など、LANが存在しない環境では同一プラットフォーム間でのファイル転送はかなりこなれてきた感はあるものの、異なるプラットフォーム間のファイル転送は、いまだに「発展途上」だ。論理的には可能でも、OSのバージョンやデバイスドライバーなどの影響を受けて、転送がうまくいかない場合があり、失敗したときのトラブルシューティングはかなり面倒だ。BluetoothのFile Transfer Protocolは多くのプラットフォームで利用できるものの速度的な限界がある。流行は、Bluetooth LEで接続、無線LAN経由で転送だが、標準仕様がなく、プラットフォーム側の実装依存になっているのが残念なところだ。