サービスメニュー(または単にサービス) は、macOSのユーザー インターフェイス要素です。サービスとは、ユーザーの選択からの入力を受け入れ、それを処理し、必要に応じて結果をクリップボードに戻すプログラムです。このコンセプトはNeXTSTEPオペレーティング システムに由来し、そこからmacOSとGNUstepに引き継がれました。同様の機能は他のオペレーティング システムでもエミュレートできます。
macOS
Apple は、サービス メニューを、同社のオペレーティング システムの他の機能と関連付けて宣伝しています。たとえば、マウスでテキストを選択し、 Spotlightのサービスを使用することで、デスクトップでテキストを検索できます。その他の中心的なサービスには、スクリーンショットを撮るためのGrabや、システムスペル チェッカーがあります。この概念は、Unix パイプに相当するGUIに似ており、任意のデータを処理してプログラム間で渡すことができます。
サービスはアプリケーションサービスとして実装することができ、選択されたデータを操作するアプリケーションの機能の一部を公開し、通常はインターフェイスを表示しません。開発者向けドキュメントでは、Appleはアプリケーションが「一般的に役立つ」機能を提供するためにサービスを使用することを推奨しており、例としてROT13暗号化をサービスとして提供するUsenetクライアントを挙げています。 [1]スタンドアロンサービスは、ホストアプリケーションなしで作成することもできます。スタンドアロンサービスはシンプルで単一目的であり、GUIを設計する必要がないため、スタンドアロンサービスの作成は初心者のmacOSプログラミングプロジェクトとして人気があります。
多くのアプリケーションはユーザーに確認せずにエントリをインストールするため、macOS のサービス メニューはすぐに数十のエントリでいっぱいになる傾向があります。ほとんどのユーザーは、使用可能なオプションの小さなサブセットのみを使用するため、メニューを削減してカスタマイズすると、より高速で快適に使用できるようになります。Mac OS X Snow Leopardより前では、これを行うにはサードパーティ製のソフトウェアが必要でした。Snow Leopard では、システム環境設定のキーボード パネルからサービス メニューをカスタマイズできます。
エミュレーション
ソフトウェアの観点から見ると、サービス メニューはプロセス間通信の手段です。ユーザーにとっては、選択したデータに対してアクションを実行するためのインターフェイスです。サービス メニューのエミュレーションは、オペレーティング システムでこれを実現する方法がいくつかあるという事実に基づいています。macOS でも、コンテキストメニューハンドラーと呼ばれる代替システムがあり、これはクラシック Mac OSから引き継がれています。
X Window Systemでは、アプリケーションで選択されたデータは、他のすべてのプログラムで使用できます。したがって、サービス メニューは、現在の選択を取得し、ユーザーがアクションを選択できるようにするアプリケーションになります。処理されたデータを元のアプリケーションに返す部分が欠けています。代わりに、サービスは新しいウィンドウを開いて結果を表示できます。
あるいは、サービスが現在のカット バッファを操作の結果に置き換えて、ユーザーに貼り付けの実行のみを実行させることもできます (ツールキットによってコピー/選択および貼り付けコマンドの実装が異なり、外部プログラムの制御下では実行されない可能性が高いため)。
参考文献
- ^ 「サービスの提供」。apple.com。
外部リンク
- Apple Developer Connection のシステムサービス入門
- PyGTK を使用した Linux/Unix のサービス メニュー エミュレーション
