/shinkan.today

「新刊トゥデイ」

Primary LanguageJavaScript

新刊トゥデイ

日々新しい本を探す活字中毒な人のため、新刊情報を淡々と表示するサイト

情報ソース

現在対応している書籍データベースは次の通りです。

開発状況・バグ報告

イシューリストを見てください。バグを発見した場合も、こちらに報告するか、プルリクエストをどうぞ。

開発者向け情報

ディレクトリ構成

  • lib/: データ更新と、フロントエンドで使うライブラリ (単体テスト可能なもの)
  • src/: フロントエンドのコードのソース
    • _layouts: Jekyllのテンプレート
    • tag: Riotのタグファイル (コンポーネント)
  • dist: ここに生成したファイルは、gh-pagesブランチにデプロイされる
    • book: 書籍の詳細ページのためのMarkdownファイル。
    • data: 日付ごとの書籍データを格納したjsonファイルなど。

デプロイの流れ

詳細は、npm scriptsと、update.jsを参照。

  1. ビルド
  • srcディレクトリの中身を、distrsync(一部拡張子を除く)
  • rollupで、main.jsbook.jsをそれぞれバンドル。rollup.config.js参照
  • postcssで、global.cssを処理
  1. データ更新
  • openBDから、ISBN全件(/coverage/)を取得
  • ignore.txtに存在するISBNを除外
  • openBDに書誌データの詳細を問い合わせ
  • 2週間より前の発売日のものを、ignore.txtに追記
  • それ以外のものは、Markdown(のフロントマッタ)に吐き出し
  • 同時に、日付ごとに振り分けて、jsonファイルに
  • さらに、前後2週間 + 2週間についてのインデックスファイルも生成 (各日2件までの書籍データの一部のみ)
  1. デプロイ
  • GitHub Pagesへデプロイ

構成のポイント

  • 「シェア」できることが必須なので、OGPが使えるよう、書籍ごとに静的なページを用意した。ブランチを少しでも軽くしたいので、HTMLに展開するのではなく、Markdownのフロントマッタに入れている。(HTML化はGitHub側がやってくれる)
  • 毎度全件(80万件)の書籍データをダウンロードすると時間がかかってしまうので、2週間以上前に発売された書籍のISBNについてはignore.txtファイル内にキャッシュ。毎日の更新では、ここに含まれないデータのみを取得している。今のところ、1万件以内に収まっている。
  • 毎日更新は、Travisのcron jobで自動実行。

ライセンス

AGPL © 2017 Tsutomu Kawamura