White Box技術部

WEB開発のあれこれ(と何か)

【自作ツール紹介】iOS/AndroidアプリのレビューをSlack/Email通知するNode.jsアプリ「reviewet」

追記(2016/05/29):メール通知機能、実装しました

タイトルの通りですが、Node.js上で動作するiOSAndroidのストアレビューをSlackに通知しつつメール通知もできるプログラムを書きました。

作った理由

iOSAndroidアプリレビューをSlack通知してくれるツールは、

こことか

こことかにあるんですが、

Slack見れない人にも連絡行くようにメール通知してくれるものが欲しいと言われて、 まあ今時メール通知なんて機能が付いてるものなんてなくて、 だったら作ってしまおう!となったのが作った理由です。

でもまだメール通知の機能は実装していないんですけどね。

→2016/05/29追記:実装しました。

Why Node.js !?

メール通知は置いておいて、なぜNodeを使ったかですが、なんとなくこのプログラムが動く環境はHubotも動いてそうだなぁと思ったからです。 実際自分はHubot動いているサーバで動かしてますし、それなら余計なミドルウェアの追加なしで動く方がいいのでNodeで書きました。

Nodeにcheerio-httpcliというストレイピングモジュールや、色々な便利モジュールがあったのもポイント高かったです。

あとは単純に今まで使ったことなかったから使ってみたかった、というのもあるのですが。

Reviewet

プログラムは、レビューを取ってくるということで、review + getの造語で「reviewet」としました。レビュウェットって読むんでしょうか。

以前作ったのはreinsだったので、なんか似てるなぁと思わなくもないです。

動作サンプル

設定ファイルのデフォルトでは

のレビュー内容をSlackに通知するようになっています。 Webhook系の設定は変えて貰う必要があるので、README.mdを参考に設定してください。

f:id:seri_wb:20160526070309p:plain

iOSAndroidで取れる情報が違うので、表示も少し違っています。
一番の違いはAndroidだとバージョンが取れないので、全てハイフンになっているところでしょうか。日付も時分秒が取れないです。

多言語対応

一応多言語対応しているので、acceptLanguageをenに変更した場合は、以下のような結果になります。

f:id:seri_wb:20160526070253p:plain

こういうのは他に見なかったので、reviewetの強みかなと思います。
ですが、見ての通りAndroidのRatingが出せてないので、ここらへんが「一応」といったところです。

所感

Nodeのモジュール群はかなり強力でした。

コード整理していない状態だというのもありますが、300行くらいの実装でSlack通知が実現できてしまっているのには驚きます。 メール通知実装しても400行くらいで収まるのではないでしょうか。

この程度のプログラムであればCallback Hellに苦しむこともないので、ツール作成にNodeを利用するのはありだなぁと思いました。

逆に大変だったのが、JavaScriptでクラスどう書こうとか、セレクタで上手く要素が取れないとか、いつものJavaScript問題にハマったぐらいです。 DOM操作もかなり大雑把に作っているんですがNodeの性能が良すぎて何の問題にもなりませんでした。メモリ消費も微々たるものです。

Androidの方はスクレイピングなので、サイトデザインが変更されたら動作しなくなるかもしれませんが、 ぜひreviewetで遊んでみてください。

追記(2016/05/29):メール通知機能、実装しました

これで日本語レビューに対しては、機能を満たせました。
新しくfsモジュールを導入しているので、更新の際はnpm installも一緒にお願いします。

出力されるメールのサンプルは以下の通りです。メールはOS毎に別メールで届きます。

f:id:seri_wb:20160529122252p:plain

しかし、こう否定的なレビューが並んでいると、自分が作ったものでなくても辛いですね・・・

SMTPでアカウント認証が不要な場合は、smtp.email.auth.userの値を空にして貰えれば大丈夫なはずです。 何かあればコメントかIssueで連絡をお願いします。