マンガが好きで、発売前に知って予約しておきたいのです。
しかし、Amazonでは好きな作家をフォローしていてもなんか微妙なタイミング。
毎日Amazonや楽天を新刊パトロールするのも面倒だし・・・
そこで、 openBD
という公開APIから書籍情報を引っ張って、タイトルや著者名の検索ワードから自動検索するボットを作成しました。
それ、プログラムにやらせよう!
特徴
- 毎日、最新の書籍データを取得
- 毎週、検索ワードで2週間分の新刊をチェック、検索結果をLINEで通知
というシンプルなボットを作成しました。
1か月ほどテストしていましたが、そろそろみんなに使ってもらいたいので公開します。
マンガ新刊チェック!
LINEでお友達登録して、トーク画面のリッチメニューから検索してください。
MacやWindowsはこちらからどうぞ。
https://manga.bitto.jp/
ざっと使い方
これだけで、毎週自動で新刊チェックします!
技術的な話
一応Qiitaなので、技術的な概要も書きます。
書籍データはopenBDから取得
openBDは、書誌情報・書影(書籍の表紙画像)を、だれでも自由に使える、高速なAPIです。
利用するにあたって登録も認証も不要です。全ISBNリストを取得したら、1万件ずつに分割して詳細情報を取りにいくだけです。
# vscodeのrestclientで確認できます
### 全書籍のISBNがJSONで返ってくる。
GET https://api.openbd.jp/v1/coverage
### 単発ならGETで取れる(ISBNのハイフンはあってもなくてもOK)
GET https://api.openbd.jp/v1/get?isbn=9784065271056&pretty
### 1万件という制限があるが、POSTでまとめて取得もできる
POST https://api.openbd.jp/v1/get
content-type: application/x-www-form-urlencoded
isbn=9784065271056,9784098511488,9784065234150
データは全国の会員出版社が書籍情報をメンテナンスしているようです。
出版社の入力次第なので、あらすじや書影の存在しないデータや、そもそも書籍データが存在しないものもあります。
2022年5月現在、約160万件の書籍情報が登録されています。
そのうち、マンガのジャンルコードが付与されているのは11万件くらいです。
夜間に取得・加工して全データを洗替していますが、非力なインスタンスだと1時間位かかります。
新刊チェック
バッチで力技の全レコードLIKE検索。
夜間に検索結果をテーブルに保存して通知に備えます。
とはいえ通知対象は2週間分のマテビューなので、全部でも500件くらいです。
これを人数分処理します。
LINE通知
新刊チェック結果を通知します。
LINEを選んだのは認証ができること、通知の際に気軽に開きやすい(と考えている)からです。
通知からリッチメニュー → webページへのジャンプがおっくうじゃないところもいいですね。
課題
Kindle買うのが手間
iOSを使っていると、AmazonへのリンクがアプリになってしまってKindle版を購入することができません。
アプリからシェアでブラウザに行く必要があります。めんどい。
なんとかブラウザに飛ばしたいのに。
誰かいい方法知っていませんか・・・!!
LINEの無料通知枠が小さい
LINEの無料通知枠は1000件しかないので、ユーザが増えてきたら要課金。
アフィリエイトの利益率によっては通知頻度を下げないといけないかもしれません。
アフィリエイトリンク以外の広告はあんまり表示させたくないんだよなぁ。
個人開発振り返り
開発の時間を作る
主に朝の始業前1時間を使い、途中でアーキテクチャ変えたりもして、ちんたら2ヶ月くらいかけました。
電車で通勤しているとインプットしかできないですが、リモートワークだとその時間にアウトプットできるのがいいですね。
投げ出さないためのモチベーション
途中で飽きて投げ出さないために、gitlabになるべく1〜3時間で終わるように細かくissue作って、カンバン片付けながら作業しました。
やったこと、考えたことをメモすることで同じような問題も探しやすくなります。
UI/UXの改善
動くものができて使ってみると、けっこう考えて作り込んだ動線が使いにくかったり理解しにくかったりします。
これはかなり時間をかけて改善しました。
具体的には各画面での操作感の統一、ボタン位置の調整、配色や文字サイズなど・・・
検索時のレスポンスも重要です。
最初はタイトルと著者名、さらに発売日を検索条件にしていたのですが、発売日で区切ってマテビューを作ることで劇的に速度改善しました。
まとめ
なんだかんだでリリースできるのが無上の喜び。
よろしくおねがいします!
モバイル版(LINE) -> https://lin.ee/7VRmd1W
PC版 -> https://manga.bitto.jp/