Node.js & herokuでクローラーを作る。 #1

作りたいアプリの構想

hypixel.netという、常時10万人近くのプレイヤーがいる大規模で有名なminecraftのサーバー(マルチプレイ)がある。その鯖にあるskyblockというRPGゲームでは、下の画像のようにアイテムがゲーム内通貨で売買されている。

画像5

運営が公開している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

画像1


Twitterの連携アプリ

Twitterのアクセスキーとアクセスシークレットキーを取得して、このサイト上からツイートを投稿/削除出来るようにしたアプリ。twitter apiを利用する時に、oAuth認証とかが必要で結構苦労した。使ったライブラリはcrypto,request,express,express-session,ejs。もっと機能を増やしたい。

http://agile-shelf-41051.herokuapp.com/index

画像2

画像3

画像4



技術選び

フレームワーク: Node.js express

インフラ: Heroku

DB: Heroku Postgres

herokuで無料で定期実行をするとしたら、heroku schedulerを使うしかない(はず)。しかし、下の画像のように最短でも10分毎の実行しか出来ない。1分毎に実行したい本アプリでは使えない...?

画像6

と思ったが、( https://qiita.com/Gro/items/5a072d0a59411987ce7d )この記事ではシェルスクリプトを用いることで1分毎の実行を実現していたので、これを真似することにした。(この記事中にも指摘されているように、schedulerを使わずにシェルスクリプトだけでも1分毎の実行は可能だが、メンテナンスが楽に出来そうなのでschedulerを使う。)


今日はこれで終わり!


この記事が気に入ったらサポートをしてみませんか?