某量販店の店頭で触ってきました、新発売の「Magic Mouse」。ついにメタリックな外観を持つ純正マウスの登場です。イジりまわす前に裏返しにして、しばらく見入ってしまいました。今月発売のMac Fan 12月号から、Wireless Keyboardのロードテストを担当しているのですが、白いボディのMighty Mouseはデザイン的にマッチしないもので、正直引っかかっていたんですよ。モノクロページなので、関係ないといえば関係ないのですがね。

さて、今回は「サービス」について。メニューバーの片隅に配置されたこの機能、NeXT時代からあるにもかかわらず、知る人ぞ知る的な存在となっている。それがSnow Leopardでリニューアルされ、グッと使いやすくなった。早速、その概要と実践を解説してみよう。

「サービス」の復権

オペレーションシステムにおいて「サービス」という場合、一般的にはファイルサーバやプリントサーバなどの常駐型プログラム (デーモン) を意味するが、OS Xではアプリケーション間通信機能を指すことがある。メニューバーのトップメニュー直下 (Finderなら[Finder]→[サービス])に配置され、サブメニューを実行することでさまざまな処理を行うというアレだ。詳細は、「第329回 故き『サービス』を温めて新しきを知る」に書いたとおり、ペーストボードを介しデータをやり取りする目的で利用する。

しかしこのサービス、あまり利用されてこなかった。理由はいくつか考えられるが、(サービスとして選択できる) メニューが多くわかりにくかったこと、コピー / ペーストなど汎用的な機能に比べると必要性が低かったこと、プラグイン機構の整備などシステム横断的な拡張性があまり考慮されてこなかったことが挙げられる。しかも、OS X 10.0の頃から機能の質 / 量ともに大きな進展は見られず、結果として"埋もれて"しまったのだろう。

関連性がないものは表示されなくなりスッキリとした、Snow Leopardの「サービス」

Snow Leopardでは、この不遇の時期を過ごしたサービスがようやくブラッシュアップ。使用状況にあわせてメニュー内容が再構成されるため、現在利用しているアプリケーションと無関係のサービスがずらずら表示されなくなった。システム環境設定の「キーボード」ペインにサービス項目が追加され、特定のサービスを非表示にすることも可能になった。サービス名左横には、「ピクチャ」や「メッセージ送信」といった文字列も表示されるようになり、一目で機能を把握できる。NeXT時代には多くのユーザが常用していた (Open Sesameを覚えている人、いますか?) はずのサービスも、これで復権と相成るか。

システム環境設定の「キーボード」ペインでは、表示 / 非表示やショートカットキーなどサービスを細かく設定できる

サービスを自作する

Snow Leopardにおけるサービスの変貌は、UIの変更によるところが大きいが、Automatorで自作可能になったことも少なからぬ効果をあげている。Leopard以前は、XcodeでCocoa / Carbonベースのアプリケーションを作成しなければならなかったのだから、長足の進歩だ。

「サービス」テンプレートを使えば、自作のサービスもかんたんに作成できる

サービスの作りかたは至ってかんたん、Automatorの起動直後に表示されるテンプレートで「サービス」を選択し、ワークフローをデザインしたあと保存すればOK。受け取るデータ種 (ex. テキスト、PDFファイル、イメージファイル) と検索対象 (ex. Finder、Safari) については、ワークフローでどのような処理を行うかによって決定すればいい。あとは、有無を言わさずサービス用のディレクトリ ( ~/Library/Services ) が選択される点にさえ注意すれば、オリジナルのサービスを作成できてしまう。

実例を紹介してみよう。Finderで適当なイメージファイル (ただしQuickTimeがサポートするもの) を選択した状態から実行すると、そのファイルをJPEGに変換するというサービスだ。ここでは、シェルスクリプト中でsipsコマンドを使い変換しているが、「イメージのタイプを変更」アクションを使ってもいいだろう。

わずか数行のスクリプトでも、立派にサービスとして機能する

次に紹介するサンプルは、題して「Open with Google Map」。JPEGのメタデータ (EXIF) に埋め込まれたGPSの位置情報を取得し、Google Mapsで表示するというもの。フリーウェアのExiftoolを利用したシェルスクリプトベースのサービスだが、結構便利だと自負している。ただし、面倒くさがりな筆者は(案の定)エラーチェックをサボっているので、EXIFに経度 / 緯度情報を持たないファイルを対象としたところで、なにも表示されないので念のため。

たったこれだけの記述で、JPEGからGPS情報を抜き出しGoogle Mapsで表示するサービスを作成できる

事実上Finderでプラグインが動作しなくなったいま、コンテキストメニュー経由で実行できるサービスは貴重な存在かも