📚

ObsidianのBases機能でKindleの本棚を作る

に公開

Obsidianがバージョン1.10で導入した新機能「Bases」は、ノートのメタデータを活用してデータベースのようなビューを作成できる強力な機能です。このBasesのカードビュー機能が、まるで本棚のようにKindleの蔵書を整理するのに最適ではないかと考えました。

私のObsidianのVaultではKindle Highlightsプラグインを利用してKindleのハイライトを同期しており、各ノートには書影URLを含む書籍情報がフロントマターとして保存されています。今回はこの情報を活用します。

Kindle Highlightsのフロントマター

まず、Kindle Highlightsプラグインが生成するMarkdownのフロントマターを確認します。以下のような形式になっています。

 ---
kindle-sync:
  bookId: '15428'
  title: ガーリー・エアフォースVII (電撃文庫)
  author: 夏海 公司、遠坂 あさぎ
  asin: B01M5IECL8
  lastAnnotatedDate: '2025-08-11'
  bookImageUrl: 'https://m.media-amazon.com/images/I/91rWS46OsuL._SY160.jpg'
  highlightsCount: 9
--- 

この中で特に重要なのが、書影のURLであるbookImageUrlです。このURLをBasesで表示させることで、視覚的な本棚を実現できます。

Basesの設定手順

ObsidianでBasesを利用するには、まずBases機能を有効にする必要があります。

  1. Basesの有効化:

    • Obsidianの設定 > コアプラグインを開きます。
    • Basesを有効にします。
  2. Basesファイルの作成:

    • 本棚ビューを作成したいフォルダで右クリックし、「新規作成」>「Bases」を選択します。
    • 作成された.baseファイルを、Obsidianの外部エディタ(VS Codeなど)で開くか、Obsidian内でテキストファイルとして開きます。
  3. コードの貼り付け:

    • 表示されたコードブロックに、後述する「完成したBasesの設定」のコードを貼り付けます。

この3ステップで、あなたのObsidianにもKindleの本棚が完成します。

完成したBasesの設定

そして、完成したBasesの設定がこちらです。

formulas:
  booktitle: |
    file.properties["kindle-sync"].title
  bookimage: |
    file.properties["kindle-sync"].bookImageUrl
  author: |
    file.properties["kindle-sync"].author
views:
  - type: table
    name: Table
    filters:
      and:
        - '!note["kindle-sync"].isEmpty()'
    order:
      - formula.booktitle
      - formula.bookimage
    sort:
      - property: formula.bookimage
        direction: ASC
      - property: kindle-sync
        direction: ASC
  - type: cards
    name: View
    filters:
      and:
        - '!note["kindle-sync"].isEmpty()'
    groupBy:
      property: formula.author
      direction: ASC
    order:
      - formula.booktitle
    sort:
      - property: formula.booktitle
        direction: ASC
    image: formula.bookimage

コードの解説

このコードが何をしているのかを解説します。

formulas

formulasでは、フロントマターの深い階層にある情報にアクセスしやすくするために、短い名前の「変数」を定義しています。

  • booktitle: file.properties["kindle-sync"].title というパスから、本のタイトルを取得します。
  • bookimage: 同様に、書影の画像URLを取得します。
  • author: 著者の名前を取得します。

views

viewsでは、取得したデータをどのように表示するかを定義します。ここではtablecardsの2種類のビューを作成しています。

共通のフィルター

両方のビューにfiltersが設定されています。

filters:
  and:
    - '!note["kindle-sync"].isEmpty()'

これは、「kindle-syncというプロパティ(フロントマター)を持つノートだけを対象にする」という条件です。これにより、Kindleから同期した本の情報だけをBasesの表示対象にできます。

cardsビュー

cardsビューは、本棚のような見た目を実現するためのメインのビューです。

  • type: cards: 表示形式としてカードビューを選択します。
  • name: View: ビューの名前を「View」に設定します。
  • groupBy: formula.authorを指定することで、formulasで定義した著者名で本をグループ化します。これにより、同じ著者の本がまとまって表示されます。
  • order: formula.booktitleを指定することで、カードの表示順をタイトル順にしています。
  • sort: formula.booktitleを昇順(ASC)で並べ替える設定です。
  • image: formula.bookimage: カードの画像として、formulasで定義した書影のURLを使用します。これが書影を表示する重要な設定です。

このように設定することで、Kindleから同期した本の情報を、著者ごとにまとめられた本棚としてObsidian上で視覚的に閲覧できるようになります。

Discussion