2部構成(ぐらいの予定)です
- 導入
- やったこと&結末 ← 今ここ
改めてやりたいこと
お目当ての商品が追加されたら、LINEで通知するようにしたい。
少し細かく書くと以下のような流れです
1. Node.jsのPuppeteerというライブラリを使って、このページの商品の情報を1つ1つ読み取る
2. 読み取ったデータをDBへ登録する
3. 前回保存したデータと差分があればLineNotifyを使ってLINEで通知
4. 1~3の処理をHerokuを利用して定期的に実行
今回紹介しようと思ったもの
Puppeteer・LineNotify・Herokuの3つが特に簡単で便利でしたのでこの辺りザックリ紹介していこうと思います。
Puppeteer(パペティア)
こちらはNode.js用の、GoogleChromeを操作することに特化したライブラリです。
しかし、ウェブブラウザ操作といえばSeleniumがあります。しかもSeleniumはChromeだけでなくFireFoxやIEなど多様なブラウザに対応しています。
では、Puppeteerの強みは何か?
それはChromeDevTool(ChromeでF12押すと開くやつ)を開発しているチームが作っているということに限ると思います。
実質公式ツールみたいなもんですね。公式って響きはステキだと思います。
それと導入〜起動が超簡単です。
1. $ npm install puppeteer
npmはnode.js用のパッケージ管理ツールです。
2. 実行ファイルに以下を記述
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
await page.goto('https://qiita.com/');
これだけで「ブラウザ起動〜QiitaのTOPに遷移」まで出来てます。web-driverを起動して、、、とかも必要ありません。
あとはDOM情報を取得してスクレイピングするも良し、スクショを取るも良し、煮るなり焼くなりご自由にです。(フルスクリーンのスクショも特別な設定なく取れます。地味にウレシイ。)
LINE Notify
LINEが提供するサービスの一つです。
Line Notifyというアカウントから、指定したメッセージを自分へ送信することが出来ます。
特定のアカウントor部屋に指定のメッセージを送るだけなので、BOTのようにメッセージを読み取って何かするとかはできません。通知することに特化したサービスです。
機能がシンプルな代わりに、利用方法がものすごく簡単です。
-
LINE Notifyに自分のLINEアカウントでログイン
- マイページから、通知したいLINEのグループを選んでアクセストークンを発行
3.LINE Notifyというアカウントをグループへ招待して
3. https://notify-api.line.me/api/notify へトークンをくっつけてPOST!
$ curl -X POST -H "Authorization: Bearer 発行したアクセストークン" -F "message=Qiitaテスト" https://notify-api.line.me/api/notify
4. おわり
とっても簡単でした。
ただし、トークンを公開してしまうと自分のLINEをアカウントが他者から特定できてしまうので、管理は慎重に・・
Heroku(ヘロク)
一言でいってしまうと、環境構築がほとんど終わっているサーバをレンタルできるサービス、みたいな感じです。
サーバ借りて、OS入れて、ネットワークの設定して、DBいれて、みたいなことを殆どやってくれます。
料金は、プロセスの起動時間に応じて従量課金されていくシステムですが、1ヶ月1000時間まで無料なので動かすアプリが1つだけなら楽勝です。
煩わしい手順はないので、「とにかくこれを作りたいんだ!」っていうものがあるなら選択肢の一つとして検討してみても良いと思います。
個人的におぉってなったのが、githubのPR単位で環境を立ち上げてデプロイしてくれる機能。複数人開発の場合だとレビューするの辛いですもんね、、、
手順もわかりやすくはあるんですが、1からまとめるのは少しかかりそうなので、備忘もかねて他でまとめようと思います。。。(スクショ撮っとけばよかった、、
結末
上記のものを利用して、商品入荷したらLINEへ通知するようにしてみました!
だいたい週に4,5回は入荷していて、入荷数は1つの時もあれば5つくらいの時もありといった具合です。
が、2週間ほど経過してあることに気づきました。
品切れになるのはやっ
通知が来て即チェックすると在庫があるんですが、通知から10分くらい経つともう品切れに、、、
調べてみたら「RefurbMe」という整備済み商品の通知サービスがあることもわかり、
業者かわからんけど買うかどうか悩んでる間に売れちゃってダメそうだなぁと悟り、
やっぱり買うなら新品だよな!
これからこいつと仲良くやっていこうと思います。