群島舎

shelff JSON仕様

shelffは、PDFファイルのメタデータや読書進捗をJSONファイルとしてiCloud上に保存します。このページでは、shelffが読み書きするJSONファイルの仕様を説明します。

shelffはこれらのJSONファイルを通じてデータを管理しており、他のツールからも同じファイルを読み書きすることで、shelffと連携できます。

概要

shelffは3種類のJSONファイルを使用します。

ファイル 場所 役割
*.pdf.meta.json 各PDFと同じディレクトリ 個別PDFのメタデータ・読書進捗・表示設定
categories.json shelffドキュメントルート カテゴリの定義と順序
tags.json shelffドキュメントルート タグの表示順序

メタデータファイル(*.pdf.meta.json)は、shelffでPDFを最初に開いたときに自動的に作成されます。このときdc:titleにはファイル名が設定されます。

文字エンコーディングはUTF-8です。日付はISO 8601形式で記録されます。

メタデータファイル *.pdf.meta.json

各PDFファイルに対応するメタデータファイルです。PDFファイルと同じディレクトリに、元のファイル名に.meta.jsonを付加した名前で保存されます。

例: my-book.pdfmy-book.pdf.meta.json

{
  "schemaVersion": 1,
  "metadata": {
    "dc:title": "プログラミング入門",
    "dc:creator": ["山田太郎"],
    "dc:publisher": "技術出版社",
    "dc:date": "2024",
    "dc:language": "ja",
    "dc:subject": ["プログラミング", "入門"],
    "dc:identifier": "978-4-00-000000-0"
  },
  "reading": {
    "lastReadPage": 42,
    "totalPages": 300,
    "lastReadAt": "2025-03-20T14:30:00Z",
    "status": "reading",
    "finishedAt": null
  },
  "display": {
    "direction": "LTR",
    "pageLayout": "spread-with-cover"
  },
  "category": "技術書",
  "tags": ["Swift", "入門"]
}

トップレベルフィールド

フィールド 必須 説明
schemaVersion 整数 はい スキーマバージョン。現在は1
metadata オブジェクト はい 書誌メタデータ(後述)
reading オブジェクト いいえ 読書進捗(後述)
display オブジェクト いいえ 表示設定(後述)
category 文字列 いいえ カテゴリ名(1つのPDFにつき1つ)
tags 文字列の配列 いいえ タグ名の配列

metadataオブジェクト

書誌メタデータです。フィールド名はDublin Core Metadata Termsに基づいたdc:接頭辞付きのキーを使用しています。

フィールド 必須 説明
dc:title 文字列 はい タイトル
dc:creator 文字列の配列 いいえ 著者
dc:date 文字列 いいえ 日付。"2024""2024-06""2024-06-15"のいずれも有効
dc:publisher 文字列 いいえ 出版社
dc:language 文字列 いいえ 言語コード(例: "ja""en"
dc:subject 文字列の配列 いいえ 主題・キーワード
dc:identifier 文字列 いいえ 識別子(ISBNなど)

readingオブジェクト

フィールド 必須 説明
lastReadPage 整数 はい 最後に読んだページ番号(1始まり)
totalPages 整数 はい 総ページ数
lastReadAt 文字列 はい 最終閲覧日時(ISO 8601)
status 文字列 いいえ 読書ステータス: "unread" / "reading" / "finished"
finishedAt 文字列 いいえ 読了日時(ISO 8601)

displayオブジェクト

フィールド 必須 説明
direction 文字列 はい 読み方向: "LTR"(左→右)/ "RTL"(右→左)
pageLayout 文字列 いいえ ページレイアウト: "single" / "spread" / "spread-with-cover"

カテゴリファイル categories.json

shelffドキュメントルートに保存される、カテゴリの定義ファイルです。各PDFは最大1つのカテゴリに属します。

{
  "version": 1,
  "categories": [
    { "name": "技術書", "order": 0 },
    { "name": "小説", "order": 1 },
    { "name": "論文", "order": 2 }
  ]
}
フィールド 説明
version 整数 スキーマバージョン。現在は1
categories 配列 カテゴリの配列。各要素はname(文字列)とorder(整数、0始まり)を持つ

タグファイル tags.json

shelffドキュメントルートに保存される、タグの表示順序ファイルです。タグ自体の定義は各PDFのメタデータファイル内のtagsフィールドで行われます。このファイルはタグの表示順序のみを管理します。

{
  "version": 1,
  "tagOrder": ["Swift", "SwiftUI", "プログラミング", "読みかけ"]
}
フィールド 説明
version 整数 スキーマバージョン。現在は1
tagOrder 文字列の配列 タグの表示順序。この配列に含まれないタグは名前順で末尾に表示される

JSON Schema

各ファイル形式のJSON Schemaは以下のリポジトリで公開しています。