プロパティリスト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/06 13:34 UTC 版)
拡張子 | .plist |
---|---|
MIMEタイプ | application/x-plist |
開発者 | Apple および GNUstep、 かつては NeXT |
種別 | データシリアライゼーション |
プロパティリスト(property list)は、macOS Cocoa・NeXTSTEP・GNUstepなどで利用されるオブジェクトシリアライゼーションのためのファイルである。また、 .plist
という拡張子をもつので、plistファイルと呼ばれることが多い。
プロパティリストは NSPropertyListSerialization
クラスによってパースされる。プロパティリストが含むことができるのは、Foundation
または Core Foundation
のオブジェクトのみである。プロパティリスト全体は配列(NSArray
)または連想配列(NSDictionary
)でなければならない。
実用では、ユーザーの設定を保存するのによく使われる。これはWindowsにおけるレジストリと似た使い方である。また、プロパティリストはバンドルの情報を格納するためにも用いられ、以前のMac OSではリソースフォークが近い用途に用いられていた。
表現形式
プロパティリストが表現するデータは抽象的なもので、永続化のためのファイルフォーマットは固定されてはいない。元々、NeXTSTEPではひとつのフォーマットが使われていたが、その後のGNUstepやmacOSのフレームワークで異なるフォーマットが誕生した。
NeXTSTEP
NeXTSTEPにおいては、プロパティリストは可読なフォーマットとして設計され、人間が手で編集し、プログラミング言語風の構文をもつASCIIテキストに直列化された。
文字列 (NSString
) は、
"This is a plist string"
バイナリデータ (NSData
) は16進表記で、
< 54637374 696D67 >
配列は、
( "one", "two", "three" )
連想配列は、
{
"key" = "value";
…
}
と表記する。
このオリジナルのプロパティリストには制限があり、NSValue
(数値、真偽値など)のオブジェクトは表現できなかった。
GNUstep
GNUstep は NeXTSTEP のフォーマットを採用し、いくつかの拡張を施した。
NSValue
をサポートした。<*INNN>
(NNN
が数値)のように表記する。NSDate
(時刻)をサポートした。<*DYYYY-MM-DD HH:MM:SS timezone>
のように表記する。
GNUstep はまた、後述するmacOSのフォーマットも読み書きすることができる。(defaults)
- GNUstep に付属するツールにplget[1]などがある。
$ cat com.example.app.plist | plget key
$ cat com.example.app.plist | plget key | plget key
のようにすることでplist内の階層化されたキーに対応する値が取得できる。
macOS
macOSはNeXTSTEPのフォーマットも扱うことができるが、Appleは別にふたつの新しいフォーマットを開発した。
Mac OS X 10.0では、NeXTSTEPのフォーマットは非推奨とされ、Appleが定義したDTD [2]を持つ、新しいXMLフォーマットが登場した。
しかし、XMLは空間効率に問題があるため、10.2で新しいバイナリフォーマットが登場した。これはv10.4以降のデフォルトのフォーマットとなった。
10.2以降で利用できるユーティリティ「plutil」を使うと、プロパティリストの文法チェックや、フォーマット間の変換が可能となる。
macOSのXMLフォーマットで使われるタグと、それに対応するFoundation
のクラスを示す。ルート要素は<plist>
である。また、GNUstepのフォーマットとは多少違いがある。
クラス名 | XML要素 |
---|---|
NSString |
string |
NSNumber |
real 、integer 、true 、false |
NSDate |
date |
NSData |
data |
NSArray |
array |
NSDictionary |
dict |
dict
要素の中身は
<dict>
<key>key</key>
<string>value</string>
</dict>
のように記述する。
脚注
- ^ http://manpages.ubuntu.com/manpages/intrepid/man1/pldes.1.html
- ^ https://www.apple.com/DTDs/PropertyList-1.0.dtd
外部リンク
プロパティリスト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/09 19:49 UTC 版)
プロパティリスト (plist) はAppleがプログラムの設定に用いる形式である。launchdがフォルダを参照したときやlaunchctlを使ってジョブがサブミットされたとき、どのようにプログラムを実行するかが書かれたplistファイルを読む。 よく使われるキーを以下に示す。すべてが載ったリストは、launchd.plistについてのAppleによるマニュアルを参照。 キー説明必須かどうかLabel ジョブの名称。慣習により、ジョブの名称は.plist拡張子を除いたplistのファイル名とおなじ。 必須。 Program 実行ファイルへのパス。シンプルな起動に役立つ。 ProgramかProgramArgumentsのどちらか一つが必須。 ProgramArguments unixコマンドを表した文字列。はじめの文字列はふつう実行ファイルへのパスで、あとの文字列はオプションやパラメータを含む。 UserName ここで与えられたユーザでジョブを実行する。必ずしもそれをlaunchdにサブミットしたユーザでなくてもよい。 オプション。デフォルトではrootかカレントユーザ。 OnDemand 10.5では非推奨。ジョブを持続的に実行するかどうかを定義するブーリアンフラグ。 オプション。デフォルトではtrue。 RunAtLoad launchdにジョブがロードされたときすぐにタスクを起動するかどうかを定義するブーリアンフラグ。 オプション。デフォルトではfalse。 StartOnMount 新しいファイルシステムがマウントされたときにタスクを起動するかどうかを定義するブーリアンフラグ。 QueueDirectories 新しいファイルがないかディレクトリを監視する。開始するにはディレクトリは空でなければならない。また、QueueDirectoriesがふたたびタスクを起動するまえに空の状態にもどさなければならない。 オプション。 WatchPaths 変更がないかファイルかフォルダのパスを監視する。 StartInterval ジョブをくり返して実行するスケジュールにする。実行のあいだのウェイト秒数として指定される。 StartCalendarInterval ジョブスケジューリング。構文はcronと同様。 RootDirectory ジョブを実行するまえにこのディレクトリにchrootする。 WorkingDirectory ジョブを実行するまえにこのディレクトリにchdirする。 StandardInPath, StandardOutPath, StandardErrorPath 立ち上げたプロセスのための入出力ファイルを定義するキー。 LowPriorityIO ファイルシステムI/Oをするときタスクの優先度が低いことをカーネルにしらせる。 AbandonProcessGroup launchdによって立ち上げられたタスクが起動したサブプロセスを、タスクがおわったときにkillするかどうかを定義するブーリアンフラグ。短いタスクが長いサブタスクを起動するところで役立つが、ゾンビプロセスを生じるかもしれない。 オプション。デフォルトではfalse。
※この「プロパティリスト」の解説は、「launchd」の解説の一部です。
「プロパティリスト」を含む「launchd」の記事については、「launchd」の概要を参照ください。
- プロパティ リストのページへのリンク