第3回 plist(プロパティリスト)とFoundation【前編】Undocumented Mac OS X(3/4 ページ)

» 2007年05月14日 09時03分 公開
[白山貴之,ITmedia]

NeXT形式plistの文法

 NeXT形式plistの文法は極めて簡単である。小括弧「()」でくくられた中身が配列、中括弧「{}」でくくられた中身がディクショナリを表す。配列の要素ごとの区切りは「,」(カンマ)、ディクショナリの要素ごとの区切りは「;」(セミコロン)である。文字列は「"」(ダブルクオート)でくくられるのが前提だが、空白などほかに紛らわしい要素がなければダブルクオートを省略することも許される。文字列以外のバイナリデータは「<>」でくくられた16進数の集まりで表現される。数値および真偽値に対応する表現は存在しない(リスト1)

 すでに述べたように、Mac OS XではXML形式plistが推奨されており、各フレームワークでもこのNeXT形式(ドキュメントではold-styleとされている)は読み込みのみのサポートとなっている。しかし、いったん慣れるとそらで書けるほどに簡単であり、またXMLに比べれば読みやすいため、defaultsコマンドなどの出力ではいまだ使用されている(実行例1)


% defaults read org.mozilla.firefox
{
    "AppleNavServices:PutFile:0:Disclosure" = <01>;
    "AppleNavServices:PutFile:0:Position" = <013700d8 >;
    "AppleNavServices:PutFile:0:Size" = <00000000 00bd0230 >;
    NavPanelPreferredColumnContentWidth = 170;
実行例1 defaultsコマンドの出力例

XML形式plistの文法

 Mac OS X標準のplistは、XMLを用いた書式になる。前のページで示したリスト2は、リスト1と同じ内容をXMLで書き直したものだ。リスト2に登場していないタグには、データを示すがある。また数値は、整数のや実数のといったタグでくくることで表現され、そしての2つの独立したタグをもって真偽値を表現する。XMLの宣言を利用することでどんな文字コードを使っているかも明確に表現できる。

 なお、リスト3はリスト1、2と同じデータの構造をRubyでの表現で示したものだ。

{

    "キー1" => "値1",

    "キー2" => {

        "サブキー1" = "値2"

    },

    "キー3" => [

        "配列メンバー1",

        "配列メンバー2",

        "配列メンバー3"

    ]

}


リスト3  リスト1〜2をRubyでの表現で書き直したもの

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ