DMMブックスやKindleの「購入済み商品」ページから自身の書籍リストを取得し、CSVファイルとして出力・検索するツールです。
注意: out/ ディレクトリは本番用の出力ファイル専用です。テスト中に生成される一時ファイルは、プロジェクトルートの .tmp ディレクトリ内に作成され、out/ には書き込まれません。
このプロジェクトは pnpm のワークスペース機能を利用したマルチパッケージ構成(モノレpo)になっています。
packages/dmm: DMMブックス用のスクレイパーpackages/kindle: Kindle用のパーサーpackages/csv-search-app: CSV検索用のWebアプリケーションpackages/common: 共通の型定義や設定
- Node.js: 実行環境
- TypeScript: プロジェクト全体の言語
- pnpm: パッケージマネージャー(ワークスペース機能を利用)
- Puppeteer: ブラウザ自動操作ライブラリ
- Hono: Webアプリケーションのバックエンドフレームワーク
- Vue 3: フロントエンドフレームワーク
- Vite: フロントエンドのビルドツール
- Rolldown: Viteで使用する高速なRust製バンドラ
- Vitest: テストフレームワーク
- Docker / Dev Containers: 開発環境のコンテナ化
-
リポジトリのクローン:
git clone <repository_url> cd e-book-list
-
.envファイルの作成: プロジェクトのルートディレクトリに.envという名前のファイルを作成し、必要な情報を記述します。# .env ファイルの内容 # --- DMM Scraper用 --- DMM_EMAIL=[email protected] DMM_PASSWORD=your_password # --- Kindle Parser用 --- KINDLE_XML_PATH=./kindle-cache.xml
-
開発環境の構築:
- VS Codeでこのプロジェクトフォルダを開きます。
- 「Reopen in Container」を選択するか、コマンドパレット (
Ctrl+Shift+P) から「Dev Containers: Rebuild and Reopen in Container」を実行します。 - 初回起動時に、Dockerイメージのビルドと
pnpmによる依存パッケージのインストールが自動的に行われます。
Dev Container内のターミナルで、実行したいパッケージを指定してコマンドを実行します。
# DMMブックスのライブラリを取得
pnpm --filter dmm-scraper start
# Kindleのライブラリを取得
pnpm --filter kindle-scraper startデータは out/ ディレクトリにCSVファイルとして出力されます。
取得したCSVデータを検索・閲覧するためのWebアプリケーションを起動します。
開発モード:
# バックエンドとフロントエンドを同時に開発モードで起動
pnpm dev:web開発用Webアプリケーションは http://localhost:5173 で利用可能になります。Vite開発サーバーがAPIリクエストをバックエンドHonoサーバー (http://localhost:3000) にプロキシします。
本番モード:
# アプリケーションをビルド
pnpm build
# ビルドされたアプリケーションを起動
pnpm start:webWebアプリケーションは http://localhost:3000 で利用可能になります。
プロジェクトには単体テストが含まれています。以下のコマンドでテストスイートを実行できます。
pnpm testより詳細な情報については、各パッケージのドキュメントを参照してください。