プロパティリストは基本的に.plist拡張子を持つXMLファイルです。macOSターミナルアプリのコマンドラインを使ってプロパティリストを編集する方法は次のとおりです。
XMLは、インターネットが初めて商用化された1990年代半ばに人気を博したオープンデータフォーマットです。テキストベースのフォーマットで、キーと値のペアを用いてデータを保存します。キーはデータのラベルを提供し、値は各キーに関連するデータを保存しています。
XMLのデータ型には、ブール値(真偽値)、数値、日付、文字列(テキスト)、配列、辞書、そしてプレーンデータが含まれます。辞書とは、データ項目ごとに1つずつキーを持つ、値の集合表です。
これらのデータ型を組み合わせてXMLファイルに埋め込むことで、ほぼあらゆるものについて、多様なネストされたデータを保存できます。XMLは通常プレーンテキストとして保存されますが、インターネット上での情報データ交換の標準規格にもなっています。ただし、現在ではXMLはJSON(Javascript Object Notation)にほぼ取って代わられています。JSONはXMLと多少似ています。
Appleプラットフォーム上のXML
2000年にMac OS Xの最初のバージョンがリリースされた際、AppleはMacオペレーティングシステムの大部分のファイル形式としてXMLを採用することを明確にしました。Appleは、プロパティリスト(.plist)と呼ばれるネイティブファイル形式を使用しています。これはプレーンXMLであり、各ファイルの先頭にApple独自のXMLヘッダー情報が含まれています。
macOSの環境設定フォルダ(/Library/Preferences、または~/Library/Preferences)に.plistファイルがあるのを見たことがあるかもしれません。これは、アプリやmacOS自体が読み込んで設定を保存できるXMLデータのリストを含むシンプルなXMLファイルです。
たとえば、macOSのFinderの設定ファイルはPreferencesフォルダに保存されており、com.apple.Finder.plistという名前が付けられています。ほとんどの.plist設定ファイルは、この形式の逆DNS表記を使用しています。ファイル名の2番目の要素はソフトウェアの製造元を識別し、次にアプリ名、最後に.plist拡張子が続きます。
.plist ファイルを Apple の TextEdit アプリで開いて生のテキストとして読むことも、Apple の開発者向け IDE である Xcode で開いたり、他のほとんどのプレーンテキスト エディター アプリで開いたりすることもできます。
Xcodeには特別なフォーマット機能があり、.plistファイルをテーブルエディタとして表示します。テーブルエディタでは、各データタイプが行ごとに表示され、そのデータタイプとそのキーが表示されます。テーブル内の各項目の横にあるポップアップメニューをクリックすると、そのデータタイプを既知のフォーマット済みタイプに変更できます。
ジェネリック、不明、または不透明タイプの .plist データは、データ BLOB として扱われます。または、Apple プラットフォーム プログラミングの場合はData
(Swift)、NSData
Objective-C の場合は のデータ型として扱われます。
macOS、iOS、iPadOS、watchOSでは、アプリはアプリの説明とコンテンツの保存のために.plistファイルをバンドルしています。例えば、Info.plistファイルは、各アプリとその機能をオペレーティングシステムに対して記述します。
Apple のオペレーティング システムには、XML と .plists を他のデータ形式に変換およびシリアル化するためのシステム API があります。
プロパティリストの編集
前述のように、.plist ファイルをプレーン テキスト エディターまたは Xcode で開いて直接編集できます。
例えば、.plist ファイルをテキストエディットで開くと、タグ付きのフォーマットされていない XML が表示されます。テキストエディタで .plist ファイルのデータを書き換えるには、XML タグとその仕組みを理解する必要があります。XML タグは HTML タグと非常によく似ています。
Xcodeでは、.plistファイルを開くか、Xcodeプロジェクトウィンドウに追加して、左側のプロジェクトナビゲータでシングルクリックするだけで、.plistの内容が右側のペインに表示されます。
Apple の Xcode で .plist ファイルを編集します。
上記のウィンドウは、Apple の Chess アプリの version.plist ファイルを示しています。各行は 1 つのデータ項目で、各項目のキーは左側の列にリストされ、各データ型は中央の列に表示され、各キーの値は右側の列に表示されます。
Xcodeで.plistファイルのデータを変更するには、行のデータまたはキーを1回クリックして新しい情報を入力するか、行の中央列にある小さなポップアップメニューをクリックしてタイプを変更します。ポップアップメニューには、使用可能な.plistデータタイプのみが表示されます。
必要な変更をすべて行ったら、[ファイル] -> [保存]を選択して.plist ファイルを保存します (またはキーボードで Command + Sを押します)。
XMLの大きな利点の一つは、ファイルをあらゆるプラットフォームで編集・保存し、変換することなくコンピュータ間でコピーできることです。ソフトウェアのローカリゼーションは多くの場合、この方法で行われます。つまり、.stringsファイルにテキスト文字列を保存し、言語間の翻訳に使用します。stringsファイルには、キーと値のペアを使用した標準的なXMLも含まれています。
アプリ内にバンドルされているInfoPlist.stringsファイルには、アプリを識別するための説明情報に含まれる文字列のローカライズ版が含まれています。これは、例えばFinderでアプリの 「ファイル」→「情報を見る」を実行したときに表示されるテキストです。
CFBundleVersion
最近では、各アプリ内にバンドルされている version.plist ファイルには、やなどの Apple キーを使用して XML 形式で保存されたアプリのバージョン情報が含まれる場合があります CFBundleShortVersionString
。
Apple の開発者向けドキュメントには、情報プロパティ リストについて説明するセクションがあります。
また、「情報プロパティ リスト キー リファレンス」もありますが、これは数十年前のものであり、記載されているプロパティ リスト キーは不完全です。
Apple .plist キーのプレフィックス「CF」は、Apple プラットフォーム上の基本データ型と .plist を操作するために使用される C ベースの API である Core Foundationを表します。
Appleプラットフォーム開発における文字列ファイル
Appleの開発では、ローカライズのために文字列は.stringsファイルまたは文字列テーブルに保存されることがよくあります。開発者は、文字列ファイルのローカライズを翻訳会社に外注することで、翻訳作業を省くことができます。
アプリのバンドル(フォルダ)内を見ると、言語フォルダ内に複数の .strings ファイルが格納されているのがわかるでしょう。各フォルダの末尾には「.lproj」という拡張子が付けられ、ISO標準の2文字の国名プレフィックスが付けられています。各バージョンの strings ファイルを複製して内容を変更することで、開発者は言語を知らなくてもアプリインターフェースに新しい言語を追加できます。
macOS と iOS は、Apple デバイスで現在使用されている言語に合わせて、正しくローカライズされた文字列ファイルまたはテーブルを読み込むのに十分な機能を備えています。
別々の文字列と.plistファイルを使用することで、アプリのユーザーインターフェースを実行時または後から変更できます。テキストをアプリのバイナリコードにコンパイルする必要はありません。これはダイナミックローディングと呼ばれます。
Appleデバイスの設定でシステム言語を変更すると、同じアプリのUIテキストも新しい言語に更新されるのはそのためです。以前のOSでは、ベンダーは国や言語ごとに個別の言語対応版アプリをリリースする必要がありました。
動的読み込みでは、文字列は実際に使用されるまでメモリに読み込まれないため、実行時のアプリのメモリフットプリントも削減されます。
ターミナルで「man plist」と入力すると、.plist 形式と CF タイプの詳細を確認できます。
ターミナルでプロパティリストを編集する
macOSには(UNIX)ターミナル(シェル)アプリが搭載されており、コマンドラインでコマンドを発行してアクションを実行できます。ターミナルの最も強力な用途の一つは、バッチ処理やスクリプトの作成によるプロセスの自動化です。
多くのターミナル コマンドには、-r
ファイルがどれだけ深くネストされているかに関係なく、特定のフォルダー内で見つかったすべてのファイルの処理を続行するようにコマンドに指示する (再帰) フラグが含まれています。
ターミナルを使用すると、.plist ファイルと .strings ファイルを手動および自動で処理して、編集を高速化できます。
これは時間を節約できます。例えば、複数の言語のファイルが一括で存在し、そのすべての値を言語テーブルやその他の入力から取得した新しいローカライズされたテキストに置き換えたい場合などです。あるいは、ファイルを個別に手動で編集することなく、一括でファイル内の特定の項目のすべてのキーを一括変更したい場合などにも役立ちます。
この記事ではシェル スクリプトの自動化については説明しません。ただし、バッチ処理用のシェル スクリプトの作成に関する優れた書籍やオンライン チュートリアルは数多くあります。
OS Xは箱に入っていた
ターミナルでプロパティリストを手動で編集する
ターミナルで .plist ファイルを編集するには、組み込みdefaults
コマンドを使用します。 をdefaults
使用すると、.plist ファイルを編集および表示できるほか、名前を使用して既知のオペレーティング システムの .plist ファイルのシステム設定を行うこともできます。
コマンドの完全な使用方法についてはdefaults
、ターミナルで次のように入力してください。
man defaults
キーボードの
Returnキーを押します。
ターミナルで man システムを終了するには、Control-Zを押します。
defaults
既存の .plist ファイルの値を変更するための主なオプションは、write
書き込む新しいデータが続くオプションです。
マニュアルページに記載されているように、新しいデータは特定の形式(通常は別の.plistまたは辞書)で記述する必要があり、書き込むキーと値が含まれている必要があります。このデータの形式は正確でなければならず、正確でないとコマンドが失敗したり、ファイルのデータが破損したりする可能性があります。
例えば、manページでは、.plist内の「Default Color」という名前の配列を新しい値(255,0,0)に変更する方法が示されています。これを行うには、次のコマンドを使用します。
defaults write com.companyname.appname "Default Color" '(255, 0, 0)'
ここで、「appname」は会社「companyname」のアプリの名前です。
.plist 内の既存の値を別の .plist で上書きすることもできます。例:
defaults write com.companyname.appname '{ "Default Color" = (255, 0, 0); "Default Font" = Helvetica; }';
この例では、新しい .plist データは中括弧で囲まれており、「Default Color」と「Default Font」という 2 つのキー/値のペアが含まれています。
macOS で使用される .plist ファイル内のデータを破損すると、Mac が正しく動作しなくなる可能性があるため、既存の設定ファイルに書き込むときは注意してください。
delete
にもオプションがありますdefaults
が、 はオプションdelete
よりもさらに危険ですwrite
。一部のオプションはデータを破壊し、単一のコマンドでドメイン内の
すべてのdelete
データを削除することさえあります。
このオプションを使用すると、Mac 上のすべてのドメインのリストを印刷できますdomains
。
defaults domains
ターミナルで「man plist」と入力すると、.plist 形式の詳細を確認できます。
設定ドメイン外でのプロパティリストファイルの編集
ファイルシステム内の書き込み可能な場所にある任意の.plistファイルを編集するには、filepath
オプションを使用します。これにより、上記の設定ファイルと同じ方法で.plistファイルを編集できますが、これは任意のパスにある任意の.plistファイルに対して行えます。コマンドfilepath
でも使用できますread
。
例えば:
defaults read ~/Library/Containers/com.apple.TextEdit/Data/Library/Preferences/com.apple.TextEdit.plist
ユーザーのライブラリ フォルダーにある TextEdit アプリの設定ファイルを読み取ります。
ただし、このfilepath
オプションは設定ファイルやアプリに属するファイルだけでなく、
任意の.plist ファイルに対して機能します。
コマンドを自動化されたスクリプト ファイルに記述して組み合わせるとdefaults
、あまり手間をかけずに .plist ファイルをバッチ処理することがいかに簡単かがわかります。
実際、多くのサードパーティ製Appleソフトウェアはこのように構築されています。通常、ビルドエンジニアは自動化スクリプトを作成し、サーバーからコードベースを取得し、ローカライズされた.plistファイルと文字列ファイルをバッチ処理し、すべてのソフトウェアコンポーネントに対してビルドを実行します。その後、ビルドは通常、別のスクリプトファイルセットを使用して後処理され、リリース用の最終ソフトウェアとして組み立てられます。
このdefaults
コマンドには、特定の種類のデータを .plist ファイルに追加したり置き換えたりするためのオプションもあります。
デフォルト システムは、macOS、Mac OS X、iOS に何十年も前から存在しており、実際、今日の Apple のオペレーティング システムのほとんどの前身である NeXTStep で使用されたオリジナルのテクノロジの 1 つでした。
デフォルトシステムをマスターすると、macOSの設定を確認・変更したり、.plistファイルを編集したりと、頻繁に使うようになります。ただし、使用する前に、操作に慣れて自信が持てるかどうかを確認してください。
Apple のターミナル ユーザー ガイドには、デフォルト システムを使用して .plist ファイルと設定を編集する方法を説明する短いセクションがあります。
Windows コンピュータを使用している場合は、Altova が作成した非常に優れた XML 編集ツールを試してみてください。