Ubuntu 13.04には間に合わなかった新機能の一つに「Smart Scopes」が存在します。Dashの検索ポテンシャルを大幅に飛躍させるこの機能を、今回は紹介しましょう。
Smart Scopesとは
「Smart Scopes」について説明する前に、Unityにおける「Scope」について説明しておきましょう。
UnityにおけるScope
Ubuntuの標準UIであるUnityにおいて、Superキー(Windowsキー)を押す、もしくは左上のUbuntu Logoボタンを押すときに表示されるインターフェースを「Dash」と呼びます。「Dash」はコンピュータ内外のさまざまなリソースを検索・表示・実行するためのインターフェースです。
Dashで検索する場合、検索カテゴリーごとに「Lens」と呼ばれる独立したインターフェースを用意することがあります。たとえばアプリケーションを検索するための「アプリLens」、ファイルやフォルダを検索するための「ファイルLens」と言った具合です。
さらにLensの中で実際に検索を行うロジック部分を「Scope」と呼びます。ファイルLensはローカルファイルの検索機能を内蔵していますが、他にも「unity-scope-gdrive」という名前の、「Google Drive」上のファイルを検索するためのScopeが存在します。GDrive Scopeを追加したうえで[1]、ファイルLens上で検索を行うとScopeがGoogle Drive APIを使って検索してくれるので、Google DriveのファイルもファイルLensの検索結果に現れるようになります。
このように、検索インターフェースであるDash/Lensと検索ロジックであるScopeが分離しているため、ユーザはScopeを追加することで自由に検索機能を強化できるのです。
Smart Scopesの開発
WikiでLens/Scopeを実装するためのAPIが公開されていることもあって、いくつものLensやScopeがコミュニティベースで開発されてきました。Lens/Scopeシステムが実装された11.10のリリース後には、これらをまとめるための「One Hundred Scopes」プロジェクトも立ち上がっています。
ただしLensを増やすということはそれだけ常駐サービスを増やすということになり、Dashのインターフェースも複雑になってしまいます。Scopeを増やすと、より多くのサービスへ問い合わせることになるため、実装方法によってはDashの応答性が悪くなります。
そこで立ち上がったのが「Smart Scopesプロジェクト」です。
Smart Scopesの目標と現状
Smart Scopesは次の内容を実現することを目標としています。
- できるだけ多くのカテゴリーをDashから検索できるようにすること
- 検索語にあわせて使用するScopeを自動的に切り替えられること
- 表示するScopeの優先順位をユーザの操作から賢く推定できること
- 使用しないScopeはユーザの設定でオフにできること
これらを実現するために、ホームLens(Superキーで表示されるLens )にも、他のLensと同様の「フィルター」が実装されます。
さらに重要なこととして、自動切り替えや推定の精度を上げるために、検索語や地域設定だけでなくフィルターの設定やディスプレイサイズなどもCanonicalのサーバに送信されるようになります[2]。
Smart Scopesの機能はほぼ実装されたのですが、実装のタイミングがFeature Freeze以降(2013年3月のvUDSのあと)であったこと、2013年3月末時点で充分なクオリティが確保できなかったことから13.04への導入は見送られました。ただし、機能自体はほぼ実現できているので、13.10には確実に入る予定です。
インストール方法
13.04にSmart Scopesは導入されませんでしたがPPAが用意されているので、比較的簡単に体験できます。
ただしこのPPAを導入すると、Unity本体や関連ライブラリもアップグレードされて、Smart Scopesに対応していない既存のLensは削除されます。また、正式なUnityではないので環境がより不安定になる可能性があります。自分の環境に導入しても良いかどうかは、あらかじめ熟慮しておくべきでしょう。
Smart Scopesを導入するには、端末を開いて以下のコマンドを実行してください[3]。
最後のコマンドでいくつかのパッケージが削除されます。Lens/Scope以外が削除される場合はそれが本当に正しいかどうか今一度確認しておきましょう。
さらに公式リポジトリのUnityが更新されたときも、PPAのUnityを優先して使用するように、Pinningの設定を行います。設定済のファイルがパッケージ化されているのでそれをインストールしてしまいましょう。
この後に、再起動すればインストール完了です。
Smart Scopesを使用する
再起動したあとにSuperキーを押してDashを表示してみましょう。これまでとは異なり、ホームLensであっても右にフィルターが表示されるはずです。これがインストールされたScope一覧となります。
試しに「東京」で検索してみましょう。これまであった「More Suggestions」(さらに提案)だけでなく、Reference(Wikipediaなどの検索)やCode(GitHubなどの検索)も検索結果に現れているはずです。たとえばWikipediaの検索結果を右クリックしてみましょう。冒頭の一部や画像がプレビューに現れます。
右のフィルターを見るとReferenceやCodeなどがハイライトされて他は背景と同じ色になっています。ホームLensではハイライトされたものだけが検索対象になり、その結果が表示されるのです。どれを検索対象にするかはは検索内容によって動的に判断されます。
たとえばSourcesにあるCOLOURloversは、Graphicsカテゴリーで使われているカラーパターンやパレットの共有サイトです。「東京」でいくつかの作品が検索結果に表示されていますが、これらを検索したくない場合は、COLOURloversをクリックして無効化しましょう。これだけでGraphicsカテゴリーが自動的に非表示になるはずです。
なお、このとき検索語とともに「どのフィルターがオンになっているか」という情報がCanonicalのサーバに送られます。「どんな検索語のときにどんなフィルターが使われるか」という情報を蓄積することで、将来的に検索語に合わせて自動的にフィルターを切り替えることが「Smart Scopes」の1つの目標になっています。
Scopeを無効化する
フィルターを使うことで、検索対象を絞り込めることはわかりました。しかしそもそもディスプレイサイズによっては、フィルターのリスト自体が大きくて見づらいかもしれません。そこで、使わないScopeは無効化してしまいましょう。
Super+Aを押してアプリLensを開きます。右上の「結果の絞り込み」をクリックするとフィルターが開くはずです。この先頭にある「Search plugins」をクリックするとインストールされたScope一覧が表示されます。
無効化したいScopeを選択してプレビューを表示させましょう。「Disable」をクリックすると無効化完了です。有効化する場合は同じ手順で「Enable」をクリックしてください。
ホームLensを開いてフィルター一覧を表示してみましょう。無効にしたScopeが表示されなくなっているはずです。
便利なScope
せっかくいろいろなScopeをインストールしたので、便利そうなScopeをいくつか紹介します。
ブックマークScope
使用しているWebブラウザのブックマークを検索対象とします。FirefoxとChromiumをサポートしています。
ちなみにあまり知られていませんが、標準のUnityでもDashに直接URLを入力するとそのアドレスのページをWebブラウザで開くことができます。
Weather Scope
Open Weather Mapを使った天気をInfoカテゴリーに表示します。ただし日本語名ではなく、英語名で検索しなくてはならないことに注意してください。
GitHub/Launchpad Scope
GitHub/Lauchpadにあるプロジェクトを検索し、概要部分を表示します。選択するとプロジェクトページを開きます。
まとめ
今後の予定は、まずPPA相当の機能をSaucyのUnityに統合することです。これはほぼ完了しています。さらに100 ScopesにあるScopeをなるべくたくさん、公式リポジトリに投入する必要があります。幸い、SaucyではデスクトップUnityのAPIはほとんど変わらない予定なので、既存のScopeをそのまま使えるはずです。
さらに先日行われたvUDSでは、Scopeの優先順位を個人単位で設定できること、速度を改善するためにPythonからGoへ移植することなども議論されましたが、実現するかどうかは不明です。
いずれにせよDashを使った検索機能はUnityの要となります。今後もさまざまな情報をUnityで文字どおり「統一的に」検索できるようになるはずなので、これからのUnityにご期待ください。