【コラム】
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版」
| 古いグラフィックスカードを最新のAPUに、AMDが期間限定キャンペーン [18:25 5/24] |
| 全面タッチセンサーのBluetoothキーボード - Windows/Android/iOS対応 [18:22 5/24] |
| ツラい朝は爆弾で起きる [17:27 5/24] |
| 【コラム】リンゴ印のライフハック 第8回 近ごろのMacで音楽を愉しむための"お約束" [15:50 5/24] |
| 東芝、USB 3.0対応の外付け型HDDのラインナップに1TB/3TBモデルを追加 [15:25 5/24] |
|
【コラム】鉄道写真コレクション 第168回 JR九州813系、R201編成を先頭に鹿児島本線を走る9両編成 [18:30 5/24] 旅行 |
|
【レポート】KDDI研究所がメディア向けに新技術などを公開 - 周波数利用効率をLTEの約3倍にする「Advanced MIMO」など紹介 [18:29 5/24] 携帯 |
|
古いグラフィックスカードを最新のAPUに、AMDが期間限定キャンペーン [18:25 5/24] パソコン |
|
全面タッチセンサーのBluetoothキーボード - Windows/Android/iOS対応 [18:22 5/24] パソコン |
|
JBossDataGridのリスナーのコールバック関数を呼び出す [18:20 5/24] エンタープライズ |