Node.js & herokuでクローラーを作る。 #1
作りたいアプリの構想
hypixel.netという、常時10万人近くのプレイヤーがいる大規模で有名なminecraftのサーバー(マルチプレイ)がある。その鯖にあるskyblockというRPGゲームでは、下の画像のようにアイテムがゲーム内通貨で売買されている。
運営が公開しているAPI( https://api.hypixel.net )を用いてアイテムの値段を自動取得し、集計するアプリを作りたい。
きっかけ
夏休みの間、少しずつnode.jsの勉強をしつつ実践練習として2つの(軽い)アプリもどき(使ってもらうことは想定してない)を作った。それらを更に良くするためにデータベースとの連携や定期的な処理の実行が必要になったので、クローラーアプリを作りながら勉強することにした。この方の記事( https://note.com/umaaai/n/ne6d1a3c3fc65?magazine_key=m541cfa68ac02 )を見ていいなと思い、この記事を書こうと思いました。
作ったアプリ↓
chatアプリ
部屋を作り、そこでリアルタイムのチャットが出来るアプリ。使ったライブラリは、socket.io,express,ejsとか。データベースを作って部屋に入る前のチャットを見れるように出来るようにしたいと思っている(SQL周りをやる気が出ない...)
https://ancient-woodland-19417.herokuapp.com/home
Twitterの連携アプリ
Twitterのアクセスキーとアクセスシークレットキーを取得して、このサイト上からツイートを投稿/削除出来るようにしたアプリ。twitter apiを利用する時に、oAuth認証とかが必要で結構苦労した。使ったライブラリはcrypto,request,express,express-session,ejs。もっと機能を増やしたい。
http://agile-shelf-41051.herokuapp.com/index
技術選び
フレームワーク: Node.js express
インフラ: Heroku
DB: Heroku Postgres
herokuで無料で定期実行をするとしたら、heroku schedulerを使うしかない(はず)。しかし、下の画像のように最短でも10分毎の実行しか出来ない。1分毎に実行したい本アプリでは使えない...?
と思ったが、( https://qiita.com/Gro/items/5a072d0a59411987ce7d )この記事ではシェルスクリプトを用いることで1分毎の実行を実現していたので、これを真似することにした。(この記事中にも指摘されているように、schedulerを使わずにシェルスクリプトだけでも1分毎の実行は可能だが、メンテナンスが楽に出来そうなのでschedulerを使う。)
今日はこれで終わり!
この記事が気に入ったらサポートをしてみませんか?