【コラム】
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版」
| ポリカーボネートMacBookが完全に販売終了 - 教育市場向け販売も終了 [16:04 2/9] |
| 上海問屋、iPhoneやスマホなどに対応した4in1のマルチUSB充電ケーブル [14:48 2/9] |
| 上海問屋、本体に各種メモリカードを収納可能なUSBカードリーダー [14:43 2/9] |
| 【レポート】パナソニック、神戸工場にて新型「Let'snote」の出荷式 – 工場内も公開 [14:23 2/9] |
| 「ATOK」30周年記念の「クイズで当たる!ATOK検定キャンペーン」が開始 [12:26 2/9] |
|
アンケートで聞いた、日本各地に伝わる伝説&言い伝え [17:00 2/9] キャリア |
|
いつもいる部屋の温度、最も高かったのは3年連続で「北海道」が1位 - 今冬 [16:57 2/9] ライフ |
|
アウディ、ステーションワゴン「A6 Avant」をフルモデルチェンジ [16:54 2/9] ライフ |
|
1月の"消費者意識"指標、「暮らし向き」「収入の増え方」など前月比で上昇 [16:43 2/9] ライフ |
|
滋賀県警とケイ・オプティコム、共同で児童ポルノ拡散防止の取り組みを実施 [16:42 2/9] ネット |