Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Play のレビューを自動通知する

Google Play のレビューを自動通知する

Hiroshi Kurokawa

October 22, 2014
Tweet

More Decks by Hiroshi Kurokawa

Other Decks in Technology

Transcript

  1. アプリのレビュー 毎日チェックしてますか? 公開直後は頻繁に見るけれど、 毎日見るのは面倒だったり そもそも、 自分1 人しか見ていなかったり ( 他の人も見てほしい) 罵詈雑言が並べられていて

    SAN 値がガリガリ削られたり ( 小声) とはいえ、 貴重なユー ザー からのフィー ドバックなのでちゃ んと見ておきたい そうだ、 チャットに自動で投稿しよう (ChatOps!)
  2. Google Play のレビュー は gsutil で取得できます gsutil とは Google Cloud

    Storage のコマンドライン・ インタフェー ス。 S3 とのやりとりもできる。 らしい。 レビュー は、 この gsutil じゃないと取得できません。
  3. インストー ルと設定方法 pip でインストー ル セットアップ あとは指示に従うだけ。 かんたん。 設定が済んだら以下のコマンドを実行してみましょう。 詳しくは

    Qiita に書きました $ sudo pip install gsutil $ gsutil config $ gsutil ls gs://<report bucket ID>/reviews/ $ gsutil cp -r "gs://<report_bucket_ID>/reviews/reviews_<app_package_name>*" /your/local/dir Android - アプリのレビュー を HipChat に投稿する - Qiita
  4. ハマりどころ を開いてもプロジ ェクトが1 つもないかもしれませんが、 適当なプロジェク トを作れば良いようです。 レポー トバケット ID は、

    レビュー ペー ジの一番下にありま す。 なぜか gsutil rsync コマンドを使っても差分取得できない ( 要調査) ダウンロー ドしたファイルの先頭には BOM (U+FEFF) が入 っているので必要なら除去しないといけない https://cloud.google.com/console#/project
  5. 次は自動化だ 基本的な戦略 プログラム書くの面倒な色々 と再利用したいので Unix コマ ンドだけで済ませる レビュー を毎回全部ダウンロー ドして前回との差分をとる

    ↑ もうちょっと工夫できるかも 差分はそんなに凝らない( 以前のレビュー が更新された場 合は新規と同じように扱う) CSV ファイルを見る限り1 レコー ド1 行なので、 差分出力は diff 使えばいける? まず新しいレコー ドを出力するだけのスクリプトを作っ て、 それを整形して投稿するスクリプトは別に作る
  6. エラー 処理とか細かい処理を抜くと、 だいたいこんな感じ。 新しいレコー ドの出力 ソー スコー ドは にあります。 Gist

    nkf -w ${file1} | sort > ${tmp1} nkf -w ${file2} | sort > ${tmp2} comm -13 ${tmp1} ${tmp2} nkf を使って BOM を除去 diff ではなく comm を使用。 新しい方(tmp2) に含まれて いる行のみを表示
  7. だいたいこんな感じ。 チャットへの投稿 ソー スコー ドは にあります。 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
  8. 改善点 チャット上の表示をもっとリッチに レビュー 数が増えると全ダウンロー ドはしんどいので工夫 が必要 ダウンロー ドした CSV を

    gzip 圧縮しておくオプションがあ っても良いかも 消されたレビュー についても対応しておいた方が良い?