見出し画像

「読んだ本」をObsidianで管理する

先日、以下の記事を書きました。

この中で、「読み終えた本の読書メモをノートとして記録する」ときに、AmazonのPA-API(Product Advertising API)というAPIを使っていると紹介しました。
具体的に、どのようにしてページを生成しているのかについて解説します。

PA-APIとは

PA-APIはAmazonで販売されている商品について、その情報を取得できるAPIです。APIはApplication Programming Interfaceの略で、プログラムから既存のライブラリを使うときに、そのライブラリを呼び出すインターフェイスのことです。

PA-APIの場合、Amazonが販売している商品の情報を取得するライブラリがAmazon側にあり、そのライブラリを使うときにどのようにしてパラメータを渡せばよいのか、という情報が公開されているのです。
そして、それをさまざまなプログラミング言語から呼び出すためのSDK(Software Development Kit)も提供されています。

利用者としては、上記のサイトに書かれている内容に沿って、自分の好きなプログラミング言語でAmazonのライブラリを呼び出すことで、Amazonで販売されている商品の情報を取得できます。

取得できる情報

では、具体的にどのような情報が取得できるのでしょうか?

たとえば、書籍のISBNを指定して情報を取得すると、プログラミング言語としてPHPを使った場合は、以下のような結果が得られます。

Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\ItemInfo Object
(
    [container:protected] => Array
        (
            [byLineInfo] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\ByLineInfo Object
                (
                    [container:protected] => Array
                        (
                            [brand] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 翔泳社
                                            [label] => Brand
                                            [locale] => ja_JP
                                        )
                                )
                            [contributors] => Array
                                (
                                    [0] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\Contributor Object
                                        (
                                            [container:protected] => Array
                                                (
                                                    [locale] => ja_JP
                                                    [name] => 増井 敏克
                                                    [role] => 著
                                                    [roleType] => author
                                                )
                                        )
                                )
                            [manufacturer] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 翔泳社
                                            [label] => Manufacturer
                                            [locale] => ja_JP
                                        )
                                )
                        )
                )
            [classifications] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\Classifications Object
                (
                    [container:protected] => Array
                        (
                            [binding] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 単行本(ソフトカバー)
                                            [label] => Binding
                                            [locale] => ja_JP
                                        )
                                )
                            [productGroup] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 本
                                            [label] => ProductGroup
                                            [locale] => ja_JP
                                        )
                                )
                        )
                )
            [contentInfo] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\ContentInfo Object
                (
                    [container:protected] => Array
                        (
                            [edition] => 
                            [languages] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\Languages Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValues] => Array
                                                (
                                                    [0] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\LanguageType Object
                                                        (
                                                            [container:protected] => Array
                                                                (
                                                                    [displayValue] => 日本語
                                                                    [type] => 発行済み
                                                                )
                                                        )
                                                )
                                            [label] => Language
                                            [locale] => ja_JP
                                        )
                                )
                            [pagesCount] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleIntegerValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 296
                                            [label] => NumberOfPages
                                            [locale] => en_US
                                        )
                                )
                            [publicationDate] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                                (
                                    [container:protected] => Array
                                        (
                                            [displayValue] => 2019-05-13T00:00:01Z
                                            [label] => PublicationDate
                                            [locale] => en_US
                                        )
                                )
                        )
                )
            [contentRating] => 
            [externalIds] => 
            [features] => 
            [manufactureInfo] => 
            [productInfo] => 
            [technicalInfo] => 
            [title] => Amazon\ProductAdvertisingAPI\v1\com\amazon\paapi5\v1\SingleStringValuedAttribute Object
                (
                    [container:protected] => Array
                        (
                            [displayValue] => IT用語図鑑 ビジネスで使える厳選キーワード256
                            [label] => Title
                            [locale] => ja_JP
                        )
                )
            [tradeInInfo] => 
        )
)

これは、以下の本の情報を取得した場合です。

少し長いですが、「出版社」や「著者」、「ページ数」、「発行日」、「タイトル」などが取得できていることがわかります。
また、他にも書影のURLやAmazonでの売れ筋ランキングなど、Amazonのページ内で取得できるような情報をプログラムから取得できます。

Obsidianでノートを生成する

あとは、上記の情報を使って、Obsidianで管理するようなノートを生成するプログラムを作成します。ISBNを指定して実行するだけで、Obsidian用のMarkdownファイルを生成するのです。

私の場合は、生成するファイル名としてISBNを使っています。これは、同じタイトルでファイルが重複することを避けるためです。
ただし、ISBNだけだと、どの本なのかパッとみてわかりません。そこで、Obsidianが備える「エイリアス」の機能を使います。

また、あわせて本の情報をタグで管理しています。たとえば、上記の『IT用語図鑑』の場合は、次のようなファイルを「4798160016.md」というファイル名で生成します。

---
tags: ["書籍/著者/増井敏克", "書籍/出版社/翔泳社", "書籍/発売日/2019/05"]
aliases: ["IT用語図鑑 ビジネスで使える厳選キーワード256"]
---

# IT用語図鑑 ビジネスで使える厳選キーワード256

## 書籍情報

- 著者など
	- 増井敏克(著)
- 出版社:翔泳社
- 発売日:2019-05-13
- ページ数:296

![書影](https://m.media-amazon.com/images/I/515mtH16KIL._SL500_.jpg)

先頭のフロントマター部分の「tags」でタグを指定することで、同じ著者の本や同じ出版社の本を管理できますし、発売日が近い本を調べることもできます。
「aliases」でエイリアスを指定しているため、Obsidianのクイックスイッチャーで本のタイトルの一部(たとえば「図鑑」)と入力するだけで、その文字が含まれているノートの一覧に表示されます。もちろん、他のノートからリンクするときも、補完候補として表示されるのです。

読書メモを追記して管理する

本を管理するとき、書籍の情報だけでなく、読書メモなどを記録したい場合もあります。
このときも、Markdownで管理しているObsidianは便利です。具体的には、上記で生成したページ内にいくらでも情報を追記できるのです。

購入した日や読んだ日を書いてもいいですし、読んだ感想を書いても問題ありません。一般的な書籍管理ツールで機能が不足していても、Obsidianならさまざまな工夫ができるのです。

もちろん、上記ではページ数は単純なテキストですが、ObsidianのDataviewプラグインを使って集計することもできます(ページ数の部分をInline fieldなどにしておく)。これにより、これまでに読んだページ数の合計などを簡単に集計できるのです。

こうなると、単純な読書メモというよりも、データベースというイメージで使えます。
ぜひいろいろ試してみてください。

この記事が気に入ったらサポートをしてみませんか?