図書館入荷おしらせアプリを作ってみた(レシピ)

こちらの記事は、↓のアプリの作り方を簡単にまとめたものになります。 fluflufluffy.hatenablog.com

1.Railsでデータ登録用APIを作成する

まずは新規プロジェクトでDBを作成し、本のタイトルとISBNを保存できるテーブルを用意します。その後、POSTでDBに本のタイトルとISBNを保存するAPIを作成します。
↓こちらを参考にさせていただきました。
morizyun.github.io

2.Railsでタスク(バッチ処理)を作成する

2.1. Rakeタスクファイルを作成する

↓こちらを参考にさせていただきました。

qiita.com

2.2. 外部APIを叩く

カーリルAPIを叩いて、目当ての本が図書館に蔵書されているかを調べます。
このとき、DBからISBNを取り出してリクエストパラメータに設定します。
↓外部APIを叩くときはこちらを参考にさせていただきました。 jumtech.hatenablog.jp

※カーリルAPI
図書館 API | カーリル
全国の図書館を対象としたリアルタイム蔵書検索APIです。
今回は、ISBNを元に任意の図書館の書籍情報を問い合わせるAPIを使用しました。
カーリルAPIは最初の呼び出しで結果が得られなかった場合、2秒以上の間隔をあけてポーリング(定期的に問い合わせすること)を行わなければならないことがAPI仕様書に書いてあるので、APIを送信するときはそのようにします。
(ちなみにherokuで間隔開けずにAPI叩いたら処理が強制終了?しました)

2.3. プッシュ通知を送信する

まず、iOSアプリにプッシュ通知を送信できるようにするには Apple Developerへの登録が必要です。
(年会費11,800 円…高い)

今回push通知の送信はfirebaseから行いました。 Apple Developer Programの登録が完了したら、firebaseも登録します。(こちらは無料)firebaseでプロジェクトを作成し、アプリの登録、認証キーの登録などを行います。公式ドキュメントがとても親切に書かれてあるので、書かれてある通りにすればOKです。
FCM での APNs の設定  |  Firebase

以上でやっとプッシュ通知を送る準備ができました。
あとは、2.1で作成したタスクファイル内に、プッシュ通知を送りたいタイミングでfirebaseが提供するFCMをAPI送信の要領で実行するだけ。

3. herokuにデプロイする

1.2で作成したプロジェクトファイルをherokuにデプロイします。
gitにpushするだけでOKなので楽ちん!
↓こちらを参考にさせていただきました。
Heroku導入メモ · GitHub

4. heroku スケジューラーでタスクを登録する

2で作成したタスクを定期的に実行するために、herokuの管理画面から設定します。
10分毎、1時間毎、1日毎から選べて、今回は1日毎を選択しました。
devcenter.heroku.com

5. iOSアプリを作成し、firebaseの設定をする

ここまでくればあとはXcodeでフロント側を作れば完成!