日々新しい本を探す活字中毒な人のため、新刊情報を淡々と表示するサイト
現在対応している書籍データベースは次の通りです。
イシューリストを見てください。バグを発見した場合も、こちらに報告するか、プルリクエストをどうぞ。
lib/
: データ更新と、フロントエンドで使うライブラリ (単体テスト可能なもの)src/
: フロントエンドのコードのソース_layouts
: Jekyllのテンプレートtag
: Riotのタグファイル (コンポーネント)
dist
: ここに生成したファイルは、gh-pages
ブランチにデプロイされるbook
: 書籍の詳細ページのためのMarkdownファイル。data
: 日付ごとの書籍データを格納したjsonファイルなど。
詳細は、npm scriptsと、update.jsを参照。
- ビルド
src
ディレクトリの中身を、dist
にrsync
(一部拡張子を除く)rollup
で、main.js
とbook.js
をそれぞれバンドル。rollup.config.js参照postcss
で、global.css
を処理
- データ更新
- openBDから、ISBN全件(
/coverage/
)を取得 ignore.txt
に存在するISBNを除外- openBDに書誌データの詳細を問い合わせ
- 2週間より前の発売日のものを、
ignore.txt
に追記 - それ以外のものは、Markdown(のフロントマッタ)に吐き出し
- 同時に、日付ごとに振り分けて、jsonファイルに
- さらに、前後2週間 + 2週間についてのインデックスファイルも生成 (各日2件までの書籍データの一部のみ)
- デプロイ
- GitHub Pagesへデプロイ
- 「シェア」できることが必須なので、OGPが使えるよう、書籍ごとに静的なページを用意した。ブランチを少しでも軽くしたいので、HTMLに展開するのではなく、Markdownのフロントマッタに入れている。(HTML化はGitHub側がやってくれる)
- 毎度全件(80万件)の書籍データをダウンロードすると時間がかかってしまうので、2週間以上前に発売された書籍のISBNについては
ignore.txt
ファイル内にキャッシュ。毎日の更新では、ここに含まれないデータのみを取得している。今のところ、1万件以内に収まっている。 - 毎日更新は、Travisのcron jobで自動実行。
AGPL © 2017 Tsutomu Kawamura