追記(2016/05/29):メール通知機能、実装しました
タイトルの通りですが、Node.js上で動作するiOSとAndroidのストアレビューをSlackに通知しつつメール通知もできるプログラムを書きました。
作った理由
iOSとAndroidアプリレビューをSlack通知してくれるツールは、
こことか
こことかにあるんですが、
Slack見れない人にも連絡行くようにメール通知してくれるものが欲しいと言われて、 まあ今時メール通知なんて機能が付いてるものなんてなくて、 だったら作ってしまおう!となったのが作った理由です。
でもまだメール通知の機能は実装していないんですけどね。
→2016/05/29追記:実装しました。
Why Node.js !?
メール通知は置いておいて、なぜNodeを使ったかですが、なんとなくこのプログラムが動く環境はHubotも動いてそうだなぁと思ったからです。 実際自分はHubot動いているサーバで動かしてますし、それなら余計なミドルウェアの追加なしで動く方がいいのでNodeで書きました。
Nodeにcheerio-httpcliというストレイピングモジュールや、色々な便利モジュールがあったのもポイント高かったです。
あとは単純に今まで使ったことなかったから使ってみたかった、というのもあるのですが。
Reviewet
プログラムは、レビューを取ってくるということで、review + getの造語で「reviewet」としました。レビュウェットって読むんでしょうか。
以前作ったのはreinsだったので、なんか似てるなぁと思わなくもないです。
動作サンプル
設定ファイルのデフォルトでは
のレビュー内容をSlackに通知するようになっています。 Webhook系の設定は変えて貰う必要があるので、README.mdを参考に設定してください。
iOSとAndroidで取れる情報が違うので、表示も少し違っています。
一番の違いはAndroidだとバージョンが取れないので、全てハイフンになっているところでしょうか。日付も時分秒が取れないです。
多言語対応
一応多言語対応しているので、acceptLanguageをenに変更した場合は、以下のような結果になります。
こういうのは他に見なかったので、reviewetの強みかなと思います。
ですが、見ての通りAndroidのRatingが出せてないので、ここらへんが「一応」といったところです。
所感
Nodeのモジュール群はかなり強力でした。
コード整理していない状態だというのもありますが、300行くらいの実装でSlack通知が実現できてしまっているのには驚きます。 メール通知実装しても400行くらいで収まるのではないでしょうか。
この程度のプログラムであればCallback Hellに苦しむこともないので、ツール作成にNodeを利用するのはありだなぁと思いました。
逆に大変だったのが、JavaScriptでクラスどう書こうとか、セレクタで上手く要素が取れないとか、いつものJavaScript問題にハマったぐらいです。 DOM操作もかなり大雑把に作っているんですがNodeの性能が良すぎて何の問題にもなりませんでした。メモリ消費も微々たるものです。
Androidの方はスクレイピングなので、サイトデザインが変更されたら動作しなくなるかもしれませんが、 ぜひreviewetで遊んでみてください。
追記(2016/05/29):メール通知機能、実装しました
これで日本語レビューに対しては、機能を満たせました。
新しくfsモジュールを導入しているので、更新の際はnpm install
も一緒にお願いします。
出力されるメールのサンプルは以下の通りです。メールはOS毎に別メールで届きます。
しかし、こう否定的なレビューが並んでいると、自分が作ったものでなくても辛いですね・・・
SMTPでアカウント認証が不要な場合は、smtp.email.auth.userの値を空にして貰えれば大丈夫なはずです。 何かあればコメントかIssueで連絡をお願いします。