Siri、使ってますか? 私は取材や打ち合わせの予定を入れるときには、すべてSiri経由になってしまいました。手が離せないとき、便利ですよね。ただ、慣れるに従い自分の口調がぞんざいになってきたような……Siriさんにロボット工学三原則を遵守させるためにも、ちゃんと敬意を払わねば。
さて、今回は「URLスキーム」について。一部のiOSユーザには知られた存在だが、もちろんOS Xにも同様の実装が存在する。それに直接アクセスすることで、アプリケーションの知られざる起動方法を探ることが目的だ。
What's "URL Scheme"?
URLスキームとは、ネットワーク上のリソース(アドレス)を示すときに使う機構のこと。インターネット上のリソースを特定するときに使われる「http」がその代表ともいえる存在で、以下の要領で使用される。「mailto」や「ftp」も同じURLスキームの一種で、HTMLなどハイパーリンクを用いた文書でよく見かけられる。
(スキーム名):(スキームごとに定義された表現形式)
インターネットで公式に利用されるURLスキームは、RFCに定義された数十種類とされる(IANAのURLスキーム一覧)。Webサイトのように、多様なデバイス/プラットフォームからアクセスされるリソースの場合、このルールは重要だ。しかし、Appleはこの仕組みを生かし(Appleにかぎらず他のデベロッパーも)、特定のOS/デバイス内部で各種リソースにアクセスする方法として利用している。
たとえば、SafariのURLバーに「ical://」と入力しEnterを押してみよう。間もなく、iCalが起動するはずだ。これは、iCal.appのバンドル内部にあるプロパティリスト(Info.plist)で「CFBundleURLScheme」に「ical」を定義することで、LaunchServices経由で起動できるようにしているのだ。
このカスタムURLスキーム、OS XよりむしろiOSで大いに活用されている。SafariのURLバーに文字列を入力してアプリを起動することはもちろん、アプリから他のアプリに値を引き渡しつつタスクを切り替えるなど、いまやiOSにとって欠かせない機能だ。
表1:OS X LionのカスタムURLスキームの例 | |
---|---|
addressbook:// | アドレスブック |
dict:// | 辞書(Dictionary.app) |
ical:// | iCal |
itms:// | iTunes(itmss、itunesも可) |
URLスキームをOS Xで活用する
前述したとおり、URLスキームはiOS独自の実装ではない。マルチタスク/マルチウインドウが当たり前のOS Xでは、iOSのようにアプリの切り替えには苦労しないため、それほど注目されていないだけだ。
しかし、工夫次第では便利に使える場面もある。ここでは3つほど、その便利な(と筆者は思うのだが)使い方を紹介してみよう。なお、入力例はすべてopenコマンドを使用しているが、引数部分をSafariのURLバーに入力しても同じ結果を得られるはずだ。
アプリケーションランチャーとして使う
OS X独自のコマンド「open」は、LaunchServicesと連携するため、引数にURLスキームを利用できる。どのような文字列を解釈するかは、アプリケーション次第だが、スキーム名だけを指定すれば、「なんちゃってアプリケーションランチャー」として利用できる。たとえば、以下のとおりコマンドラインを実行すれば、アドレスブックが起動するはずだ。
$ open addressbook:
辞書の検索
OS X Lionには、大辞泉やプログレッシブ英和・和英中辞典、類語例解辞典、さらにはApple用語辞典まで、日本語辞書が大盤振る舞いされている。アプリケーションの辞書(Dictionary.app)はControl-Command-Dで呼び出すことがキホンだが、カスタムURLスキームもしっかり定義されているので、次のようにopenコマンドから辞書を引くことも可能だ。
$ open dict://日本海海戦
サクッとiTunes Storeにアクセス
iTunesを起動して、ツールバーで「iTunes Store」を選択して、さらに「App Store」をクリックして……とOS Xでは手間のかかるiTunes Storeの利用も、URLスキームを使えば近道できる。エイリアスを定義しておけば、入力する文字数はさらに短縮可能だ。すごく便利だ、と胸を張って言えないところが微妙だが、本コラムらしい活用法ということで、どうかひとつ。
$ open itms://itunes.apple.com/jp/genre/id36
表2:主なiTunes StoreのURL | |
---|---|
ミュージック | itms://itunes.apple.com/jp/genre/id34 |
アプリ | itms://itunes.apple.com/jp/genre/id36 |
映画 | itms://itunes.apple.com/jp/genre/id33 |
ミュージックビデオ | itms://itunes.apple.com/jp/genre/id31 |