【コラム】

OS X ハッキング!

125 今さら聞けないdefaultsコマンドの使い方

    海上忍  [2005/02/28]

    2月26日、Macintoshの産みの親といわれるJef Raskin氏が逝去された。享年61歳。この場を借りて御冥福をお祈り致します。

    さて、今回はdefaultsコマンドの使い方について。これまで何度も実行例を挙げていながら説明らしい説明を加えたことはなかったので、Mac OS Xにおける"初期設定ファイル"のあり方も絡めながら基本的な用法を紹介してみよう。

    初期設定ファイルの本当の姿

    Cocoa APIを使用するアプリケーションは、設定情報を「.plist」という拡張子が付いたテキストファイルに保存することが一般的だ。Classicアプリや一部のCarbonアプリにはリソースフォークを使用するものがあるが、Cocoaアプリは起動時にこのテキストファイルを読み込み、設定値として使用する。環境設定パネルなどを通じた設定変更も、このファイルに反映される仕組みだ。

    この「デフォルト・データベース」の仕組みは、NEXTSTEPの時代から存在する。OS Xでは、エンコード形式はUTF-8に、フォーマットはXMLに、保存先は~/Library/Preferencesに変更されたが、NSUserDefaultsクラスを使用するなど基本構造に大きな変化はない。これから説明するdefaultsコマンドも、書式や利用目的はほぼ同じだ。

    初期設定ファイルを読み取る

    初期設定ファイルは、基本的に「デベロッパのドメイン名.アプリケーション名.plist」というルールに則り命名されている。iTunesならば「com.apple.iTunes.plist」、Adobe Reader 7.0ならば「com.adobe.Reader7.0.plist」といった具合に、ドメイン名を記述する方向が反対なことに留意しておけばOK。

    内容の読み取り方だが、defaultsコマンドを利用する場合は内部コマンドの「read」を利用する。続けてキー名を指定すると特定の項目を表示できるが、省略すれば全項目が表示される。その際、拡張子の「.plist」を付ける必要はない。iTunesを例にすると、以下の要領でコマンドを実行すればいいだろう。ただし、そのままでは情報量が多すぎてページがスクロールしてしまうので、ページャにパイプ(| less)して使うことになるはずだ。

    $ defaults read com.apple.iTunes

    初期設定ファイルに新規エントリを作成する

    新規エントリを書き加える場合には、内部コマンドの「write」を使用する。デフォルトデータベースの指定やキー名の有無など、書式は読み取り時(read)と変わらない。

    なお、デフォルトデータベースに「NSGlobalDomain」を指定すると、システムフォントやアンチエイリアスの有無など、カレントユーザの作業環境全体に関する設定ができる。「Apple Global Domain」としてもいいが(機能差はない)、シェルのコマンドラインとして入力するときには前後を「"」で囲まなければならないので、NSGlobalDomainのほうが扱いやすい。

    よく知られたTIPSだが、「NSWindowResizeTime」キーの追加を用例として挙げておこう。以下のとおりコマンドを実行し、再ログインしてから適当なアプリケーションで(印刷ダイアログなどの)シートを表示してほしい。これまで"フワッ"だったシートの表示速度が"ズバッ"に変わるはずだ。

    $ defaults write NSGlobalDomain NSWindowResizeTime 0.001

    初期設定ファイルからエントリを削除する

    デフォルトデータベースの読み書きに専用のコマンドが用意されている理由の1つには、直接初期設定ファイルを編集することが適当ではないから、ということが挙げられる。基本的にはプレインテキストが使用されるものの、エンコード方式がUTF-8であること、XMLの書式に従わなければならないこと、特殊な制御文字を使用するファイルもあることなどを考えると、できるだけdefaultsコマンドを利用すべきといえるだろう。

    前掲のNSWindowResizeTimeキーの削除を例にすると、以下のとおりコマンドを実行すればOK。内部コマンド「delete」を使用し、キーおよび設定値を安全に削除している。

    $ defaults delete NSGlobalDomain NSWindowResizeTime

    「Property List Editor」を使う手もある

    デフォルトデータベースの書式は決まっているが、どのようなキー名を使用するか、保持するデータは文字列なのか2進数なのか、決めるのは開発者だ。値を指定する方法も1つではなく、2進数では「0」か「1」でもいいし、「-bool YES」(1と同じ)としてもいい。

    よくわからなければ、開発環境に付属の「Property List Editor」を使う手もある。Finderで「Preferences」フォルダを開いて目的の初期設定ファイルをダブルクリックするもよし、以下の要領でopenコマンドで開くもよし。データそのものは意味不明でも、デフォルトデータベースの構造の理解に役立つはずだ。データの編集と保存も可能なので、defaultsコマンドの代役にもなる。

    $ open ~/Library/Preferences/com.apple.iTunes.plist

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン