Yosemiteシリーズ第2弾となる今回は「Widget Simulator」について。開発者以外にはほとんど知られていない(はず)のツールだが、なかなかどうして、一般ユーザでも工夫次第では便利に使える。
「ウィジェット」から「ウィジェット」へ
Widget Simulatorの使いかたを紹介する前に、OS X Yosemiteにおける「ウィジェット」の存在についてまとめておこう。
まずは「ウィジェット」の定義について。従来OS Xで「ウィジェット」といえば、Dashboard上で動作するHTMLとJavaScriptで記述されたWEBアプリを指すが、有り体に言えばTiger(v10.4)の登場以来"冴えない"状況が続いている。Appleは自社サイト上に「Dashboard ウィジェット」なる配布ページを用意し、フォローする様子を見せているが、正直盛り上がりに欠ける。そのページにあるウィジェットの公開日を見ても、この1~2年のものは希だ。
Apple自身もこの状況を認識しているのだろう、Yosemiteのシステム環境設定「Mission Control」パネルにはDashboardをオフにするスイッチが追加された。従来はdefaultsコマンドを利用するなど一貫して裏ワザ扱いだったが、ここにはAppleの割り切りが透けて見える。敢えて大胆に予測すると(ということのほどでもないが)、Dashboardは次バージョンではレガシー扱いとなりデフォルトではオフになるのではなかろうか。
それを後押しするのが、Yosemiteで投入された「App Extentions(機能拡張)」だ。App Extentionsは機能というよりアプリケーション間におけるデータ連係のポリシーに関する規約であり、開発フレームワーク(NSExtension)も提供される。技術仕様は基本的にiOSとOS X共通で、機能によってはどちらか一方専用となるが、開発ノウハウは共有できる。
機能拡張を含むアプリケーションは、一見では他と変わらず独立して動作するが、バンドル内部に収められたモジュール(*.appex)により、他のアプリケーションやシステムプロセスに機能を提供する。ウィジェットは7種定義された機能拡張の1つで、一般的なアプリケーションではなく通知センターの「今日」タブにかぎり連係可能だ。
前述したとおりDashboardウィジェットが半ば放置気味なことからしても、Appleがどちらの「ウィジェット」に本腰を入れているかは明白。DashboardのHTML5を意識したアプローチも悪くはなかったが、Appleの"ネイティブ"に高い優先順位を置く戦略は一貫しており、App Extentionsのウィジェットもその延長線上にある。Yosemiteの次のOSでは、その存在感がさらに増しているかもしれない。
「Widget Simulator」の使いかた
ウィジェットはアプリケーション(*.app)の体裁をとるが、そのバンドル内部にモジュール(*.appex)を持つ。このモジュールが通知センターと連係することにより、ふだんは単独動作するアプリケーションをウィジェット化するというわけだ。この場合、ウィジェットが機能の出し手で通知センターが機能の受け手、と考えていいだろう。ただし、「天気」などウィジェットとしてしか存在しないものもある。
では、通知センターと同じ"受け手"としての能力を備えたアプリケーションを用意するとどうなるか。それが「Widget Simulator」であり、通知センターの「今日」タブと同じ内容を表示できる開発者向けのシミュレータだ。
Widget Simulatorは開発環境(Xcode)ではなく、/System/Library/Frameworksディレクトリ以下にある「NotificationCenter.framework」の内部に格納されている。直接起動するのは手間なので、適当なウィジェットのモジュール(*.appex)をFinderでダブルクリックすればいい。ウィジェットを持つ、つまり通知センターの「今日」タブに表示可能なアプリケーションのバンドルを開き、「PlugIns」ディレクトリを探せば見つかるはずだ。なお、「天気」などウィジェットとしてしか存在しないものは、「NotificationCenter.framework」内部にある。
モジュールをダブルクリックすると、Widget Simulatorが起動し、そこで通知センターとまったく同じ機能を利用できる。「株価」や「天気」はもちろん、サードパーティー製アプリケーションでも変わらず動作するはずだ。ウインドウサイズも上下方向であれば調整できるので、Dashboardのウィジェット的にも使える。バンドルを開く作業が手間であれば、ウインドウのタイトル部分に表示されているアイコンをデスクトップへドラッグ&ドロップすれば、エイリアスも作成できる。通知センターに常駐させたくはないがサッと起動したい、そんなウィジェットのランチャー代わりに使えそうだ。