このページの本文へ

前へ 1 2 次へ

Windows Info 第398回

Windows Subsystem for Androidの進化を確認 エクスプローラーからのファイルのドラッグ&ドロップが可に

2023年09月24日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

ローカルネットワークアクセス機能を搭載

 7月に公開されたバージョン2306.40000.4.0では、ローカルネットワークアクセス機能が搭載された。これはWSAからのネットワークアクセスを、Win32側のIPアドレスを用いて実行するものだ。設定は、WSA設定の「詳細設定」→「試験的な機能」→「ローカルネットワークアクセス」から。

Windows Subsystem for Android

WSAの設定アプリ。ローカルネットワークアクセスやユーザーフォルダ共有は現時点では「試験的な機能」になっている

 この設定が作られる以前は、WSAからのネットワークアクセスは、WSAをホストしている仮想マシンのネットワークスイッチ設定を使い、ホスト側とは異なるIPアドレスからLAN側をアクセスしていた。

 WSAは、仮想マシンで実行されるLinuxカーネルで動作する。このため、ホスト側Win32とはネットワークスタックが異なる。Windowsの仮想マシンでは、「仮想ネットワークスイッチ」を使って、違うネットワークアドレスを仮想マシンに割り当て、仮想的な内部ネットワークを介して、ホストやホストが接続するLANにアクセスする。このあたりの仕組みは、WSL2とまったく同じである。

 しかしWSAでは、IPアドレスをWin32側と同じにできる。ローカルネットワークアクセスを有効にするとAndroidのIPアドレスは、Win32側と同じになる。これは、Androidアプリデバッグ用のadb.exeで接続して、シェルを起動することで確認できる。また、アクセスされる側で調べても同様の結果が出る。

Windows Subsystem for Android

adbコマンドでシェルを起動してWSAのIPアドレスを調べた。ローカルネットワークアクセスをオンにすると、WSAのIPアドレスがWin32側のIPアドレスと同じになった

 一般に2つの異なるTCP/IPネットワークスタックが同一のIPアドレスを扱うことは困難だ。スタック内で接続状態を管理しなければならないからだ。だとすると、WSAではLinuxカーネル内のTCP/IPスタックではなく、Win32側のTCP/IPスタックを利用していることが想定される。このローカルネットワークアクセスの切り替えではWSAの再起動が必要になることから、カーネルやそれに近いモジュールが切り替えられていると想像される。

 ちなみにWSAでは、WSLとは異なるLinuxカーネルが使われている。これは、Linuxカーネルのバージョンが異なることから判断できる。WSAのカーネルバージョンは、前述のadb経由でシェルを起動することで確認できる。どちらも「uname -a」コマンドでカーネルバージョンを調べられる。原稿執筆時点では、WSAのカーネルバージョンは「5.15.104-windows-subsystem-for-android-20230710+」、WSLは「5.15.90.1-microsoft-standard-WSL2」だ。

Windows Subsystem for Android

WSAとWSLでは同一マシン内であっても、異なるバージョンを使う。これは、それぞれ専用のLinuxカーネルイメージを用いていることを意味している

フォルダ共有機能も強化される

 この7月のアップデートでは、フォルダ共有機能も強化された。1つ前のバージョンで「ユーザーフォルダ共有」機能として提供された機能は、任意のフォルダを共有できるフォルダ共有機能になった。これは、同じくWSA設定の「詳細設定」→「試験的な機能」→「ユーザーフォルダーを共有する」から可能。Androidアプリ側では「/sdcard/Windows」が共有フォルダとなる。

 名称はそのままだが、「フォルダーの変更」ボタンを使うことで、任意のフォルダーをWSAとWin32側で共有することが可能になる。「ユーザーフォルダー」の名前が残るのは、デフォルトがユーザーフォルダーになっていることに加え、隠しファイルなど動作に支障が出るファイルなどへのWSAからのアクセスが禁止されているからだ。

 なお、現時点で最新となるWSA バージョン 2307.40000.5.0は、Android 13のセキュリティアップデートやWebViewの更新で、そのほかの改良点としては、プラットフォームの安定性が向上とあるだけだ。これまでの更新でも、頻繁に安定性の向上が入るところを見ると、まだまだ不安定な部分が残るのであろう。

 WSA(Windows Subsystem Android)とWSL(Windows Subsystem Linux)は、名称が似ていて、仮想マシンを使って実現されているが、異なるLinuxカーネルを使うなど、実装には大きな違いがあるようだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン