あなたの個人読書ライブラリを美しく展示するWebアプリケーションテンプレートです。
このテンプレートは、iPadのKindleアプリや他の電子書籍リーダーで読書をしている方向けの、個人蔵書管理・展示システムです。読んだ本を見つけやすくし、5星評価システムで本を評価・管理できます。
-
📖 2つの表示モード: 表紙表示・リスト表示
-
📚 複数本棚管理: テーマ別本棚の作成・キュレーション
-
⭐ 5星評価システム: 1-5星による本の評価管理・フィルタリング
-
🎯 ハイライト表示: bookIdベースでKindleのマーカー情報を自動読み込み
-
📝 個人メモ: 本ごとのレビューとおすすめ文
-
🔍 検索・フィルター: タイトル・著者・星評価での絞り込み
-
📊 読書統計: 総蔵書数の表示
-
🔗 Amazon Associates: 自動アフィリエイトリンク生成
-
🌐 公開・共有: 本棚ごとの公開設定と静的ページ生成
-
💾 データエクスポート: 設定・星評価・メモの永続化
-
📥 蔵書管理: Kindleインポート、手動追加、Google Books追加、削除機能
-
🔄 ハイライトファイル管理: スクリプトベースでのハイライトインデックス生成
-
🔀 並び替え機能: ドラッグ&ドロップによる本の順序変更・保存
-
📗 複数ストア対応: Amazon/KindleとGoogle Play Booksの両方に対応
- GitHub上でこのリポジトリの「Use this template」ボタンをクリック
- 新しいリポジトリ名を入力(例:
my-bookshelf) - 「Create repository from template」をクリック
- 作成したリポジトリをPublic(公開)に設定
- ファイルがすべてアップロードされていることを確認
- 作成したリポジトリで Settings > Pages を開く
- Source を「Deploy from a branch」に設定
- Branch を「main」に設定
- Saveボタンをクリック
- 数分待つとサイトが公開される(URLが表示されます)
テンプレートにはサンプルデータが含まれています:
- ローカルサーバーを起動(後述)
- ブラウザでアクセスして動作を確認
- サンプル本「面倒なことはChatGPTにやらせよう」にはハイライトも含まれています
方法1: Kindleデータのインポート(推奨)
- Kindle Bookshelf ExporterをChromeにインストール
- Kindle Cloud Readerで蔵書データをJSONファイルとしてエクスポート
- ブラウザで「📥 Kindleインポート」ボタンをクリックしてインポート
方法2: 手動で本を追加(Amazon/Kindle)
- 「➕ 手動追加」ボタンをクリック
- 「Amazon/Kindle」タブを選択
- ASIN、タイトル、著者を入力
- 購入日と読書状況を設定
方法3: Google Play Booksの本を追加
- 「➕ 手動追加」ボタンをクリック
- 「Google Play Books」タブを選択
- ボリュームIDを入力(Google BooksのURLの
?id=以降の文字列、例:-DFzEAAAQBAJ) - 「自動取得」ボタンで書籍情報を取得、または手動でタイトル・著者を入力
方法4: データファイルを直接編集
data/library.jsonを編集(後述のデータフォーマット参照)
アプリケーションのデフォルト設定をdata/config.jsonで指定できます。サイドバーの「⚙️ 設定エクスポート」ボタンで現在の設定をエクスポートすることもできます。
| 設定項目 | 説明 | 値 |
|---|---|---|
affiliateId |
Amazon AssociatesのアフィリエイトID | 文字列(例: "your-id-22") |
defaultView |
デフォルトの表示モード | "covers": 表紙表示、"list": リスト表示 |
coverSize |
表紙サイズ | "small": 小、"medium": 中、"large": 大 |
booksPerPage |
1ページあたりの表示数 | 25, 50, 100, 200, "all" |
enableSeriesGrouping |
シリーズグループ化 | true: 有効、false: 無効 |
showImagesInOverview |
概要での画像表示 | true: 表示、false: 非表示 |
sortOrder |
並び順 | "custom": カスタム順、"acquiredTime": 購入日、"title": タイトル、"authors": 著者 |
sortDirection |
並び方向 | "asc": 昇順、"desc": 降順 |
設定例:
{
"affiliateId": "your-affiliate-id",
"defaultView": "covers",
"coverSize": "medium",
"booksPerPage": 50,
"enableSeriesGrouping": true,
"showImagesInOverview": true,
"sortOrder": "acquiredTime",
"sortDirection": "desc"
}- アフィリエイトID:
data/config.jsonのaffiliateIdを変更 - 本棚の作成: デフォルトの本棚を編集、新しい本棚を追加
- カラーテーマ: CSS変数でカスタマイズ
- Obsidian Kindle PluginをObsidianにインストール
- プラグインを使ってKindleハイライトをMarkdown形式でエクスポート
- エクスポートしたファイルを
data/KindleHighlights/フォルダに配置 - ターミナルで
scripts/generate-highlights-index.shを実行してインデックス作成 - YAMLフロントマターにASIN情報が含まれていることを確認
virtual-bookshelf/
├── index.html # メインページ
├── css/
│ └── bookshelf.css # スタイルシート
├── js/
│ ├── bookshelf.js # メイン機能
│ ├── book-manager.js # 蔵書CRUD管理(Amazon/Google Books対応)
│ ├── highlights.js # ハイライト表示
│ ├── series-manager.js # 漫画シリーズ検出・グループ化
│ └── static-bookshelf-generator.js # 静的ページ生成
├── templates/
│ └── bookshelf-template.html # 静的ページテンプレート
├── static/ # 静的ページファイル(手動配置)
│ └── bookshelf-*.html # 生成された静的本棚ページ
├── data/
│ ├── library.json # メイン蔵書データ
│ ├── config.json # ユーザー設定
│ ├── highlights-index.json # ハイライトファイルのASINマッピング
│ ├── KindleHighlights/ # ハイライトMarkdownファイル(元ファイル)
│ └── HighlightsASCII/ # ASCIIファイル名のハイライト(Web表示用)
├── scripts/
│ └── generate-highlights-index.sh # ハイライトインデックス生成スクリプト
├── sample/
│ └── sample_books.json # サンプル蔵書データ(参考用)
└── .gitignore # Git除外設定
# HTTPサーバーを起動(CORS制約回避のため)
python -m http.server 8000
# または
npx serve .
# または
php -S localhost:8000
# ハイライトインデックス生成(ハイライト機能を使用する場合)
./scripts/generate-highlights-index.shブラウザで http://localhost:8000 を開く
書籍の識別子として汎用的なbookIdを使用しています。Amazon/Kindleの場合はASIN、Google Booksの場合はボリュームIDがbookIdになります。
{
"formatVersion": 2,
"exportDate": "2025-11-16T16:03:19.724Z",
"books": {
"B0XXXXXXXXX": {
"bookId": "B0XXXXXXXXX",
"title": "Kindle書籍タイトル",
"authors": "著者名",
"acquiredTime": 1756899555435,
"readStatus": "READ|UNKNOWN",
"productImage": "https://m.media-amazon.com/images/I/...",
"source": "kindle_import",
"addedDate": 1756899555435
},
"-DFzEAAAQBAJ": {
"bookId": "-DFzEAAAQBAJ",
"title": "Google Books書籍タイトル",
"authors": "著者名",
"acquiredTime": 1756899555435,
"readStatus": "UNKNOWN",
"productImage": "https://books.google.com/...",
"source": "google_books",
"addedDate": 1756899555435
}
},
"metadata": {
"totalBooks": 100,
"manuallyAdded": 5,
"importedFromKindle": 95,
"lastImportDate": 1756899555435
},
"bookshelves": [
{
"id": "tech-books",
"name": "💻 技術書",
"description": "プログラミング・技術関連の本",
"books": ["B0XXXXXXXXX", "-DFzEAAAQBAJ"],
"isPublic": true,
"color": "#3498db"
}
],
"notes": {
"B0XXXXXXXXX": {
"memo": "素晴らしい本でした!詳細は[こちら](https://example.com)をご覧ください",
"rating": 5
}
},
"settings": {
"defaultView": "hybrid",
"affiliateId": "your-affiliate-id",
"showHighlights": true,
"currentBookshelf": "all",
"theme": "light",
"booksPerPage": 50
},
"bookOrder": {
"all": ["B0XXXXXXXXX", "-DFzEAAAQBAJ"],
"tech-books": ["B0XXXXXXXXX"]
}
}| source | 説明 | bookIdの形式 | リンク先 |
|---|---|---|---|
kindle_import |
Kindleからインポート | ASIN(例: B00XXXXX) |
Amazon |
manual_add |
手動追加(Amazon) | ASIN | Amazon |
google_books |
Google Books追加 | ボリュームID(例: -DFzEAAAQBAJ) |
Google Books |
- 表示切り替え: ヘッダーのボタンで表紙・リスト表示を切り替え
- 本棚選択: ドロップダウンで表示する本棚を選択
- 検索: 検索ボックスでタイトル・著者を検索
- フィルター: サイドバーで読書状況や星評価で絞り込み
- 詳細表示: 本をクリックして詳細モーダルを表示
- 星評価: モーダル内で1-5星の評価を設定・変更・リセット
- 本棚の作成: 新しいテーマの本棚を作成
- 本の追加: 詳細モーダルで本を複数の本棚に追加
- 公開設定: 本棚ごとに公開・非公開を設定
- 並び替え: ドラッグハンドル(⋮⋮)で本の順序を変更
- 静的ページ生成: 公開本棚のSNS共有用静的HTMLページ作成
- 公開設定: 本棚編集時に「📤 この本棚を公開する」をチェック
- 静的ページ生成: 本棚管理で「📤 共有ページ」ボタンをクリック
- HTMLファイルダウンロード:
bookshelf-{ID}.htmlファイルが自動ダウンロード - ファイル配置: ダウンロードしたファイルを
static/フォルダに配置 - SNS共有: Twitter/Facebook/LINEで直接共有、またはURLコピー
- アクセス方法:
- 本棚セレクターで公開本棚選択→「🌐 静的ページ」ボタン
- 本棚一覧カードの「🌐 静的ページ」ボタン
# 1. ダウンロードされたHTMLファイルを確認
ls ~/Downloads/bookshelf-*.html
# 2. staticフォルダを作成(まだない場合)
mkdir -p static
# 3. HTMLファイルを配置
cp ~/Downloads/bookshelf-*.html static/
# 4. Gitにコミット・プッシュ
git add static/
git commit -m "Add static bookshelf pages"
git push origin main注意: GitHubページにファイルをプッシュ後、URLが有効になります(例: https://yourusername.github.io/your-repo/static/bookshelf-12345.html)
- 評価設定: 詳細モーダルで本に1-5星の評価を設定
- 評価リセット: 「評価をリセット」ボタンで未評価に戻す
- フィルタリング: チェックボックスで特定の星評価の本のみ表示
- 複数選択: 星2,3,4や星4,5など複数の評価を組み合わせ表示
- 「💾 データエクスポート」でlibrary.jsonをダウンロード
- ダウンロードしたファイルを
data/library.jsonとして保存 - GitHubリポジトリにpushして設定を永続化
- ブラウザ: Chrome, Firefox, Safari, Edge (最新版)
- デバイス: デスクトップ、タブレット、スマートフォン
- 要件: JavaScript有効、LocalStorage利用可能
- 個人データはブラウザのローカルストレージに保存
- 公開設定しない限り個人メモは非公開
- サーバーサイド処理なし(完全クライアントサイド)
css/bookshelf.cssでカラーテーマや表示サイズを調整- CSS変数
--book-width,--book-heightで本のサイズ調整
- 新機能は適切なクラス(VirtualBookshelf/BookManager等)に追加
- スタイリングは
css/bookshelf.cssに追加
data/config.jsonのaffiliateIdを変更- アフィリエイトプログラムの利用規約を確認
MIT License
- Kindle Bookshelf Exporter - Kindleデータエクスポート用Chrome拡張機能
- Obsidian Kindle Plugin - Kindleハイライト抽出用Obsidianプラグイン
🎉 Happy Reading! あなただけの素敵な本棚を作成してください!