【コラム】
7月上旬、早くもSnow Leopardの一般公開が始まるようですね。ご存知ない? いえ、札幌市円山動物園の話、5月に生まれたユキヒョウの双子の赤ちゃんです。まぎらわしくてすいませんが、TVで見た姿があまりに可愛らしかったもので。
さて、今回は「OS Xの独自コマンド」について。その多くは、GUIでの利用が前提のOS X独自機能をCUIでも利用可能にする「スペアキー」的存在と考えられるが、一方ではGUIとは直接関係ない方向での機能強化も行われている。ここでは、NeXTSTEP時代から引き継がれているコマンド「open」を例に、独自コマンドのあり方を考えてみよう。
OS XのOS Xたる機能は、基本的にAppKitやCocoaなどのフレームワークを利用したGUIアプリケーションにより提供される。「Mac」という金看板を掲げる以上、洗練されたGUIの装備はむしろ必然で、無骨なCUIが異端視されるのもやむを得ないところだ。
しかし、AppleはCUIを見捨てていない。傾注しているとは言い難いが、PantherにTiger、そしてLeopardと、バージョンアップに応じて整備が進められていることは確かだ。実際、Pantherの頃には、ひとまず納得できるレベルまでTerminal.appのマルチバイト文字対応が完了し、Tigerのときにはcpやmvなどのコマンドがリソースフォークに対応、Leopardではファイル拡張属性のサポートに伴うコマンドの追加 / 機能向上(ls、xattrなど) が行われている。
CUIを見捨てないというよりは、GUIを備えたアプリケーション (以下、GUIアプリ) を追加するときには、あわせて同等の機能を持つコマンドを提供する傾向も見受けられる。たとえば、LeopardではQuick Lookとともにqlmanageコマンドが追加されたし、TigerでSpotlightが登場したときには「md」から始まるコマンド群が追加されている。システム環境設定のCUI版的機能を備える「systemsetup」や、名前そのままの「softwareupdate」というコマンドもある。GUIアプリと同等とまではいかないものの、ある程度の処理はコマンドラインでも可能なように配慮されている、と考えて差し支えないだろう。
既存のコマンドも放置されてはいない。NeXTSTEP時代から存在する独自コマンド「open」を例にすると、TigerとLeopardでは利用できるオプションが違う。もちろん機能が向上しており、Appleによりメンテナンスが続けられていることは確かだ。
ちなみに、このopenコマンドは、コマンドラインにおけるLaunchServices (アプリケーションを特定し起動するための機能を提供するAPIおよびサービス) のインタフェースとしての役割を果たす。簡単にいえば、Finder上でファイルをダブルクリックしたときと同等の効果をコマンドラインで実現するコマンドだが、シェルを使い慣れたユーザにとってはありがたい存在だ。基本的な使い方については、「第9回 openコマンドはこんなに便利!」を参照してほしい。
これまで、独自コマンドの追加 / 改良はGUIアプリの動きにあわせたもの -- Quick Lookとともにqlmanageコマンドが追加されるなど -- と考えていたが、openコマンドの機能アップについては、LaunchServicesが大きく変わらないだけに、その考え方では説明できないはず。Appleの基本姿勢まではわからないが、(独自)コマンドはGUIアプリの従属物ではない、ということは確かだろう。
では、そのopenコマンドの変更点について説明しておこう。新しく追加されたオプションは「-h」と「-n」、「-W」と「-g」の4つだが、「-g」は開いたウインドウを前面に表示しないというシンプルなものなので省略、残り3つを取りあげることにする。
新しい「-h」オプションは、システム上のヘッダファイルを検索、Xcodeで表示するためのオプションだ。拡張子 (.h) の入力は不要、NSString.hであれば「open -h NSString」とだけ入力すればOK。ファイル名の一部が重複するもの (この場合「NSStringDrawing.h」など) が検出された場合は、どのヘッダファイルを表示するかを選択することも可能だ。なお、検索の対象はLaunchServicesが管理する範囲 (システムプロファイラの「フレームワーク」に表示されるもの) に限られるため、通常の作業領域 (~/Library/Frameworksを除く) や/Developer以下にあるものは除外される。
$ open -h LaunchServices
追加された「-n」は、新しいインスタンスでファイルを開くためのオプションだ。OS Xでは、同じLaunchServicesが起動すべきと判定したアプリケーションがすでに起動されている場合、そのアプリケーションを使おうとするが、この「-n」を指定すると、別のインスタンスとしてアプリケーションを起動する。また、新しいオプション「-W」と組み合わせることにより、すでに起動されているアプリケーションが終了されるのを待って起動させることもできるので、工夫次第では便利に使えるかもしれない。
$ open -n mycar.jpg
iPhone上で動く3D CGモデラ/レンダラ「iTracer」 - OS 3.0対応で高速化
【コラム】Mac Fan ソフトウェアレビュー 第62回 セキュリティソフト「ノートン・インターネットセキュリティ Mac版」
| 【レポート】マカフィーの世界の専門家の意識調査「サイバー防衛報告書」とセキュリティソリューション [21:15 5/25] |
| アップル、Aperture 3.2.4を公開 - バグ修正、安定性向上など [20:51 5/25] |
| 【レポート】GTC 2012 - VGXでエンタープライズ環境でのGPU需要開拓を狙うNVIDIA [20:07 5/25] |
| デル、期間限定キャンペーンに特価アイテム追加、アップグレード無料も継続 [19:41 5/25] |
| 上海問屋、iPhoneとほぼ同じ薄さのバッテリ内蔵ヘッドホンアンプ [19:05 5/25] |
|
[9nine]制服姿見納め? セーラー服で登場も川島海荷「4人はコスプレ」 [19:15 5/27] エンタメ |
|
「NO.6」4巻は書き下ろしドラマCD付、木乃のサイン会も [18:49 5/27] ホビー |
|
[今週の新刊]マンガ大賞3回ノミネート「アイアムアヒーロー」 カープ愛「球場ラヴァーズ」も [18:33 5/27] ホビー |
|
「ゆりてつ」サイン会は作者と都電に揺られるツアー仕立て [17:45 5/27] ホビー |
|
【ネタバレもありの徹底解明コラム】『サザエさん』タマの意外な事実 [17:30 5/27] ホビー |