• URIの謎を解け

WindowsのUWPアプリは、Windowsだけが起動でき、アプリケーションからは起動することができない。そのためUWPアプリにはURI起動という方法がある。これはUWPアプリを開発時に登録したスキーム名で、Windowsのプロトコルハンドラーとして登録するもの。「http://~」でブラウザが、「mailto:~」でメールアプリが起動するのと同じ仕組みである。

URIは、いわゆるURLのことだ。URIとは世の中にある何らかの「リソース」の「位置」(あるいは入手方法)を表すもので、その先頭部分を「スキーマ」といい、後続する部分を処理するための「方法」(プログラム)や「プロトコル」を表す。

プロトコルハンドラーとはURIをWindowsで処理するための仕組み。たとえば、“https”にはブラウザが関連付けされており、ブラウザが起動しURIを解釈する。Windowsでは、このスキーマと処理プログラムの関係を自由に定義できるようになっている。

UWPのアプリケーションの一部は、独自のスキーマを持つ。たとえば、Windows標準の電卓プログラムは、“ms-calculator”というスキーマ名を使って自分自身をプロトコルハンドラーに登録している。このため、“ms-calculator:”というURI(後ろのセミコロンに注意)をWebブラウザーのアドレス欄に入れる、あるいはcmd.exeのstartコマンドで「start ms-calculator:」実行すると、電卓プログラムが起動する(写真01)。

  • 写真01: Webブラウザのアドレス欄に「ms-calculator:」というURIを入力すると、電卓アプリの起動についての確認が行われたのち電卓が起動。コマンドラインではstartコマンドでこのURIを開くことができる

Chromebookにも似たような仕組みがあり、「chrome://settings/」とブラウザのアドレス欄に入れると、設定ページが開く。後ろに設定ページ内の項目を表す「パス」を続けると、たとえば「chrome://settings/appearance」とすれば、「設定」の「デザイン」が開く。

キーワードの資料はないが、ChromebookのブラウザからURIを入れて設定ページを開いて、項目を選択すると、URL欄にURIが表示される。入力可能なトップレベルのキーワードは、「chrome://chrome-url」で一覧を表示できる。一部の機能は、AndroidのChromeブラウザでも動作する。

WindowsでもUWPアプリとスキーマの対応表が公開されているわけではない。リスト01は、UWPのパッケージ情報からスキーマ名を取得するためのWindows PowerShellの「コマンド」である。$UWPURIという変数に結果が入る。キーにはピリオドをアンダーバーに置き換えたパッケージ名が使われている(写真02)。ハッシュテーブルにしてあるので、コマンドラインでキーの補完が使える。以前解説したように補完キーを変更しておくと、入力行に対して部分補完を行い、リストを表示させることができる。


リスト1

$UWPURI=@{};(Get-AppxPackage | % {if($_.installlocation -ne $null){$t=$(([XML](Get-Content (Join-Path $_.InstallLocation "Appxmanifest.xml"))).Package.Applications.Application.Extensions.Extension.Protocol.Name);if($t -ne $null) {@{URI=$t;Name=$_.Name}}}}).ForEach({$UWPURI.add($($PSItem.Name -replace '\.','_'),$PSItem.URI)});
  • 写真02: リストのコマンドで、UWPのパッケージ情報に起動用URIが定義されていれば取り出すことが可能。結果は$UWPURIという変数に入り、パッケージ名はコマンドラインの補完機能で選択できるほか、キー名一覧(keysプロパティ)を使ったり、キーを検索することでURIを取り出せる

・窓辺の小石(29) コマンドライン補完機構
https://news.mynavi.jp/article/pebbleinthe_window-29/

Windowsのプロトコルハンドラーは、Win32プログラムにも対応付けできる。MSのサイトに「予約済みのURIスキーム名」というリストがあり、これを見るとExcelを起動するためのスキーマ「ms-excel」などが予約済みになっていることがわかる。

・予約済みのファイルと URI スキーム名
https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/reserved-uri-scheme-names#reserved-uri-scheme-names

URI起動では、スキーマに続くパスをUWPアプリ側で解釈するものがあり挙動が変わる。たとえば「スマートフォン連携」では、「ms-phone://photos」でフォトが、「 tel:// 」で通話、「 ms-phone://messages」でメッセージを表示できる。すべてではないが、一部のWindows標準アプリに関しては、ドキュメントが公開されている。

・URI に応じた既定のアプリの起動
https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/launch-default-app

同様にWindows 10/11の設定ページには、「ms-settings:」というスキーマがあり、これを使って設定ページを開くことが可能だ。これについては、MSのサイトに資料がある。

・Windows 設定アプリの起動
https://docs.microsoft.com/ja-jp/windows/uwp/launch-resume/launch-settings-app

Windowsの一部の機能は、パッケージで配付されている。たとえば、コマンドラインで「start ms-actioncenter:」と入力すれば、アクションセンターが開く。URI起動をうまく使うとシステムのさまざまな機能を動かすショートカットなどを作成できる。

今回のタイトルの元ネタは、1968年のテレビドラマ「怪奇大作戦」である。主題歌の歌詞にSRIという組織名が入るのでURIとの関係で選んだ。最近話題の円谷プロの作品で、あくまでも子供向け番組で楽天的な感じがあったウルトラマンのあと、同時間帯のシリーズは、シリアスな路線に入る。全話ではないものの、子供向け感が完全に消えた話がいくつかある作品。