ASCII.jp Windows 10のデバイスポータルにアクセスする
Windows 10のRS1(Anniversary Update)以降には、「デバイスポータル」と呼ばれる機能が搭載されている。これは、開発者向けの機能。ネットワークを介して、他のマシンのデバイスポータルにアクセスすることで、該当マシンの内部情報を得ることができる。
デバイスポータルは、ウェブブラウザを使って、ネットワーク接続した他のマシンの状態などを監視、制御できる
モバイルルータやNASなど、ウェブブラウザを使って、該当のIPアドレスで示されるページを開くと、デバイスの設定や状態を表示するものがあるが、デバイスポータルは、これと同じものだ。内部的にはデバイスポータル専用のウェブサーバ(httpサーバ)が起動していて、ブラウザを使ってアクセスする。また、REST形式でJSONを返すAPIも定義されており、必要な設定をリモートで行なったり、情報を入手するプログラムを開発することも可能だ。
●APIリファレンス https://docs.microsoft.com/ja-jp/windows/uwp/debug-test-perf/device-portal-api-core
セキュリティ的には、問題になる機能であるため、初期状態では動作は禁止されており、「設定」アプリで開発者モードをオンにしたときにのみ有効になる。基本的には、PCの所有者なら誰でも簡単にオンにできるが、よくわからないなら開発者モード自体オンにしないことをおすすめする。また、外出時に持ち出すようなPCでは、絶対にオンにしないほうがいい。
万一、ローカルのネットワークに接続してデバイスポータルを利用するような場合でも、外出前にデバイスポータルや開発者モード(開発者モード自体、セキュリティを低下させてしまう)をオフにするべきだ。
デバイスポータルを使うには、「設定」→「更新とセキュリティ」→「開発者向け」で開発者モードをオンにする。なお、RS2からは、開発者モードをオンにしても再起動は必要なくなった。
デバイスポータルを有効にするにはまず、開発者モードに設定する
開発者モードがオンになると、「デバイスポータルを有効にする」がオンにできるようになる。オンにすると、その下に「認証」「ユーザー名」「パスワード」といった欄が表示される。
次に「デバイスポータルを有効にする」を「オン」にして、ユーザー名とパスワードを設定する
これは、デバイスポータルへネットワーク経由でアクセスする場合に使うユーザー名とパスワードを設定するものだ。「認証」の設定をオフにすると、ユーザー名などの入力が不要になるが、ユーザー名などは、ブラウザの補完機能により2回目以降は入力する必要がないため、オフにする意味はあまりない。
逆にオフにしてしまうと、LAN内のすべてのマシンから簡単にデバイスポータルを使うことが可能になってしまう。デバイスポータルからはファイルを削除することもできれば、マシンをシャットダウンや再起動させることも可能であるため、作業中に操作されると大変なことになる可能性もある。ユーザー名とパスワードは必ず設定しておいて、デバイスポータルへは簡単にアクセスできないようにしておくべきだろう。
かつて、インターネット用ルーターが普及し始めた頃、ウェブサーバを使った設定ページがインターネット側からもアクセスできた。このため、パスワードを設定していないルータを片端からリセットしていくというイタズラが流行った。イタズラする気はなくとも、偶然、設定ページが開いたのを見て、ブラウザに表示されている再起動ボタンを押してしまうこともあるだろう。
開発用などに使う場合は、ユーザー名、パスワードは他のマシンと共通のものでもかまわない。要は何も知らないユーザーが安易にアクセスすることを防ぐためのものであり、セキュリティを高めるという目的のものではないと考えた方がいいだろう。イメージ的には、映画やアニメなどでみかける自爆装置のボタンについている「フタ」のようなものだ。
デバイスポータルを起動する
デバイスポータルは、デスクトップ版のWindows 10だけでなく、MobileやIoTなどWindows 10すべてのバージョンで利用できる。ただし、その初期設定やアクセス方法には違いがある。実際に他のマシンからアクセスしてみよう。Windows 10 Desktopの場合、設定ページで、デバイスポータルを有効にすると、アクセスのためのURLが下に表示される。基本的には、
https://[IPアドレス]:50443http://[IPアドレス]:50080
のどちらかを使う。機種にもよるが、負荷が違うためか、httpのほうがhttpsより反応がいいようだ。またブラウザにはEdgeを使うほうがよい。IEを使うとページ表示がおかしくなることがある。
最初にログインページが出るので、デバイスポータルで設定したユーザー名とパスワードを入力する。これでデバイスポータルを開くことができる。なお、httpsの場合、ブラウザが証明書エラーであることを表示するが、強制的に表示させる。ブラウザによっては、ボタンなどを押して詳細ページを開く必要がある。
これに対してWindows 10 Mobileの場合には、
https://[IPアドレス]:443http://[IPアドレス]:80
を使う。ただし、Windows 10 Mobile側で認証をオンにしている場合、「設定」→「更新とセキュリティ」→「開発者用」→「デバイスの検出」をオンにして、下にあるペアリングボタンを押し、PINを表示させる。
Windows 10 Mobileのデバイスポータルをアクセスするには、デバイスの検出をオンにして「ペアリング」ボタンを押してPINを表示させ、これをアクセスする側のウェブブラウザで入力する
表示されたPINをブラウザに入力すれば、デバイスポータルを開くことができる。このとき、「Remember my computer」をオンにしておくとPINが保存され、次回からデバイスポータルを直接開くことができるようになる。
デバイスポータルウィンドウの左側には、「Tool」と呼ばれる機能に対応するページのリストがある。Windows 10 DesktopとMobileではToolページの数が違う。ただし、最後にある「Scratch」は、ツールを登録するワークスペース用なので、機能項目ではない。また、実際には、初期状態ではページがなく、ユーザーがワークスペースに割り当ててはじめて見ることができるToolがいくつかある。
最後にあるScratchは、自由にToolを登録できるワークスペース。ウィンドウ左上のハンバーガーアイコンをクリックしてメニューから「Add tools to workspace」を選択する
さらにいうと、Windows 10 Desktopでは、現行のRS2(Creators Update)とRS3(Fall Creators Update)でも項目が違う。おそらくWindows 10 Mobileでも違うと思われるが筆者の手元にはWindows 10 Mobileマシンが1台しかないのでわからなかった。
これらをまとめたのが以下の表になる。多くの項目が共通だが、Desktopではデバッグ用やMixed Reality機能のサポートがある。
基本的な使い方は、以下のURLに解説がある。
https://docs.microsoft.com/ja-jp/windows/uwp/debug-test-perf/device-portal
基本的にはどの機能も開発者向けになんらかのカタチでソフトウェアのデバッグや検証などに利用するものだが、Running processesなどは、PCがフリーズした場合に、問題のあると思われるプロセスを強制停止させる場合に利用できる。
従来こうした作業は、Windows 8まではtelnet(Windowsの機能を有効化)、Windows 10ではssh(Windows10では開発者モードではsshサーバーが動作する)を利用しなければならなかった。こうした機能を使い、cmd.exeを動かし、そこからtasklist、taskkillといったコマンドを利用していた。
しかし、デバイスポータルが使えるなら、ここから該当のプログラムを見つけて強制終了させることが可能になる。ただし、現在のところWindows 10 Mobileのデバイスポータルには、プロセスを強制終了させる機能がなく、実行中のプロセスの一覧を表示するだけだ。なお、最悪の場合、どのプラットフォームでもデバイスポータルから再起動や電源オフも可能だ。
また、Windows 10 DesktopでPreview版のRS3を使っているならUSB DevicesツールをScratchなどに表示させると、USBデバイスについてWindowsが認識している情報を表示できる。
標準ではページに割り当てられていないUSB Deviceでは、USBデバイスに関してWindowsが認識している情報を表示させることができる
なお、ページ左側のリストの最後にある「Scratch」は、任意の機能をタブとして配置できる「ワークスペース」だ。ここに利用頻度が高いものや関連の高いツールを配置することができる。なお、ワークスペース自体、複数追加できるため、仕事に応じて自分用のツール配置を作ることが可能だ。
なお、ワークスペースの登録は、ブラウザ側に保存されるようだが、ワークスペース設定のインポート、エクスポート機能があり、他のマシンでも同じワークスペースが利用できるようになる。特に記載はないが、エクスポートされるのは、JSON形式のテキストファイルであり、原則どのプラットフォームのウェブブラウザでも読み込めるはずだ。