# PLIST Studio（plist 開き方・変換）

.plist をドロップすると、XML でもバイナリ（bplist00）でも中身を木構造で表示します。XML・バイナリ・JSON への変換と保存もできます。実行ファイルの情報を見るなら EXE/DLL の情報表示、XML の整形や XPath 検索なら XML 整形を使います。

- URL: https://tools.itlibra.com/ja/plist-studio
- 端末内で処理・アップロードなし
- 最終更新: 2026-10-31

## 使い方

1. .plist ファイルを画面の枠にドロップするか、「ファイルを選択」で開きます。XML とバイナリ（bplist00）は自動で判定します。
2. 右の「構造」で dict・array などを開いて、キーと値を確かめます。日時は ISO 8601（UTC）、データはバイト数と先頭のバイト列で表示します。
3. XML の内容が手元にあるなら、「XML を貼り付け」の欄に貼るだけでも表示できます（バイナリは貼り付けられません）。
4. 「XML で保存」「バイナリで保存」「JSON で保存」で別の形式にします。JSON はコピーもできます。
5. 壊れた値は赤い表示で場所と理由を示します。読めないファイルは、どこで止まったかを表示します。

## こんなときに

- Info.plist や entitlements の中身を、XML のまま読まずに木で確かめたい
- Mac や iPhone のバイナリ plist（bplist00）を、テキストの XML に変換して差分を取りたい
- plist を JSON にして、スクリプトや他のツールに渡したい
- 設定ファイルのキーがどの型で入っているか（文字列・整数・真偽値・日時）を確かめたい
- 壊れた plist がどこで壊れているかを、オフセットや循環参照の有無から見つけたい

## できること

### XML とバイナリの両方を読む

XML plist 1.0 と、バイナリ plist の bplist00 を同じ画面で開きます。バイナリは trailer・offset table・オブジェクトの位置と長さを、読む前に範囲内かどうか検査します。

### 型を区別して表示

dict・array・string・integer（64 ビットを超える整数も桁のまま）・real・true/false・date（UTC）・data（バイト数と先頭 16 バイト）を、型の名前つきで表示します。

### XML・バイナリ・JSON の相互変換

読み込んだ内容を XML plist 1.0 かバイナリ（bplist00）で保存し、JSON にもできます。JSON にできない date と data の表し方は、画面に明示します。

### 壊れた箇所を場所つきで示す

循環参照（自分を指す配列・辞書）、範囲外の offset、深さ 512 段を超える入れ子は、そこで止めて「壊れた値」と理由を示します。読み込み自体は止まりません。

### 外部へ取りに行かない XML

DOCTYPE の内部実体（\<!ENTITY）は拒否し、外部の DTD や実体は取得しません。XML の実体は & \< \> " ' と数字の参照だけを解釈します。


## 対応形式

### 入力

- XML plist 1.0（.plist）
- バイナリ plist（bplist00）
- 貼り付けた XML 文字（UTF-8・UTF-16）

### 出力

- XML plist 1.0（.plist）
- バイナリ plist（bplist00・.bplist）
- JSON（.json）


## 対応状況

| 機能 | 対応 | 補足 |
| --- | --- | --- |
| XML plist 1.0 の読み込み | 対応 | — |
| バイナリ plist（bplist00）の読み込み | 対応 | — |
| XML・バイナリ・JSON への書き出し | 対応 | JSON では date・data・uid は文字列になります |
| XML の日時の精度 | 一部対応 | 書き出す XML は秒までです（ミリ秒は切り捨て） |
| bplist00 以外のバージョン（bplist15 など） | 非対応 | — |
| NSKeyedArchiver の参照をたどった解釈 | 非対応 | 木のまま表示します（UID は値として表示） |
| 外部 DTD・外部実体の取得 | 非対応 | 取得しません。内部実体の宣言は拒否します |
| 値の編集 | 非対応 | 表示と書き出しだけです |
| XML の文字コード | 一部対応 | UTF-8・UTF-16（BOM つき）のみ。ほかは読めません |
| オフラインでの利用 | 対応 | 一度開いたあとは通信なしで動作 |

## 制限・注意事項

- ファイルは 10 MB まで。それを超えるとファイルを読まずに止めます。
- 入れ子は 512 段まで。値の数は 20 万件まで（バイナリで同じ値を何度も指す場合も数えます）。超えた部分は省略して表示します。
- 画面に表示するのは先頭 2,000 件です。全体は書き出して確認してください。
- 整数は XML では 40 桁まで、バイナリでは 128 ビットまでです。それより大きい値は書き出せません。
- XML の制御文字（0x00〜0x1F の一部）と対にならないサロゲートは XML で表せないため、書き出せません。

## プライバシーと安全性

読み込んだ plist の中身は、お使いのブラウザの中だけで処理します。サーバーへの送信や保存は行いません。Info.plist に含まれる識別子や証明書の情報も、外部には出ません。

## よくある質問

### plist は何で開けばよいですか？

テキストの XML plist なら、どのテキストエディタでも開けます。バイナリ plist（bplist00）はテキストエディタでは中身が読めないため、本ツールで開くと木構造で確かめられ、XML にも変換できます。

### バイナリ plist を XML に変換するにはどうしますか？

ファイルをドロップして「XML で保存」を押します。変換後の XML は、読み込んだ内容と同じ構造で、キーの順序も保ちます。date はミリ秒が切り捨てられる点だけ注意してください。

### plist を JSON にできますか？

できます。「JSON で保存」か「JSON をコピー」を使います。JSON には日時や data の型情報が残らないため、date は ISO 8601 の文字列、data は Base64 の文字列になります。

### plist が「壊れている」と出るのはなぜですか？

バイナリでは、範囲外の位置や長さ、自分自身を指す循環参照が見つかると止まります。XML では閉じタグの対応、エンティティの書き方、文字コードを確認してください。どこで止まったかは画面に表示されます。
