Slide 1

Slide 1 text

Google Play のレビュー を 自動通知する 黒川 洋 / @hydrakecat 株式会社 Gunosy

Slide 2

Slide 2 text

アプリのレビュー 毎日チェックしてますか? 公開直後は頻繁に見るけれど、 毎日見るのは面倒だったり そもそも、 自分1 人しか見ていなかったり ( 他の人も見てほしい) 罵詈雑言が並べられていて SAN 値がガリガリ削られたり ( 小声) とはいえ、 貴重なユー ザー からのフィー ドバックなのでちゃ んと見ておきたい そうだ、 チャットに自動で投稿しよう (ChatOps!)

Slide 3

Slide 3 text

Google Play のレビュー は gsutil で取得できます gsutil とは Google Cloud Storage のコマンドライン・ インタフェー ス。 S3 とのやりとりもできる。 らしい。 レビュー は、 この gsutil じゃないと取得できません。

Slide 4

Slide 4 text

インストー ルと設定方法 pip でインストー ル セットアップ あとは指示に従うだけ。 かんたん。 設定が済んだら以下のコマンドを実行してみましょう。 詳しくは Qiita に書きました $ sudo pip install gsutil $ gsutil config $ gsutil ls gs:///reviews/ $ gsutil cp -r "gs:///reviews/reviews_*" /your/local/dir Android - アプリのレビュー を HipChat に投稿する - Qiita

Slide 5

Slide 5 text

ハマりどころ を開いてもプロジ ェクトが1 つもないかもしれませんが、 適当なプロジェク トを作れば良いようです。 レポー トバケット ID は、 レビュー ペー ジの一番下にありま す。 なぜか gsutil rsync コマンドを使っても差分取得できない ( 要調査) ダウンロー ドしたファイルの先頭には BOM (U+FEFF) が入 っているので必要なら除去しないといけない https://cloud.google.com/console#/project

Slide 6

Slide 6 text

次は自動化だ 基本的な戦略 プログラム書くの面倒な色々 と再利用したいので Unix コマ ンドだけで済ませる レビュー を毎回全部ダウンロー ドして前回との差分をとる ↑ もうちょっと工夫できるかも 差分はそんなに凝らない( 以前のレビュー が更新された場 合は新規と同じように扱う) CSV ファイルを見る限り1 レコー ド1 行なので、 差分出力は diff 使えばいける? まず新しいレコー ドを出力するだけのスクリプトを作っ て、 それを整形して投稿するスクリプトは別に作る

Slide 7

Slide 7 text

エラー 処理とか細かい処理を抜くと、 だいたいこんな感じ。 新しいレコー ドの出力 ソー スコー ドは にあります。 Gist nkf -w ${file1} | sort > ${tmp1} nkf -w ${file2} | sort > ${tmp2} comm -13 ${tmp1} ${tmp2} nkf を使って BOM を除去 diff ではなく comm を使用。 新しい方(tmp2) に含まれて いる行のみを表示

Slide 8

Slide 8 text

だいたいこんな感じ。 チャットへの投稿 ソー スコー ドは にあります。 Gist printNewReviews.sh ${backupdir} . | awk -F"," '{print $7 " Star " $9 " " $10 " " $11 " " $15}' | while read msg; do encoded=$(echo "\"${msg}\"" | jq -a '.') curl -s -H 'Content-type: application/json' -d "{\"message\": ${encoded}}" "https://api.hipchat.com/v2/room/ done 前回のレビュー が保存されているディレクトリ ${backupdir} とカレントディレクトリの CSV を比較 awk で整形して、jq で ASCII エンコー ドする(← コマンド 実行時のエスケー プをサボるため) 最後に curl で POST するだけ あとは、 これを cron などで定期実行すれば OK

Slide 9

Slide 9 text

投稿したところ 表示をもうちょっと頑張ります... URL もクリック可能になってほしい(HTML で出力すれば いける?)

Slide 10

Slide 10 text

改善点 チャット上の表示をもっとリッチに レビュー 数が増えると全ダウンロー ドはしんどいので工夫 が必要 ダウンロー ドした CSV を gzip 圧縮しておくオプションがあ っても良いかも 消されたレビュー についても対応しておいた方が良い?