Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Google Play のレビューを自動通知する
Search
Hiroshi Kurokawa
October 22, 2014
Technology
1.2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Google Play のレビューを自動通知する
Hiroshi Kurokawa
October 22, 2014
More Decks by Hiroshi Kurokawa
See All by Hiroshi Kurokawa
ART of Q
hkurokawa
3
1.3k
Chasing TransactionTooLargeException in The Wild
hkurokawa
0
540
Code Review as a Collaborative Journey
hkurokawa
3
1.1k
Room 2.1
hkurokawa
2
970
Introduction to Q#
hkurokawa
0
140
Surviving a discontinuous world
hkurokawa
1
3.1k
Making onActivityResult More Easy
hkurokawa
1
430
RxJava実践入門
hkurokawa
2
690
How to start a podcast
hkurokawa
1
460
Other Decks in Technology
See All in Technology
AI時代、データエンジニアが一番おもろい
genshun9
0
670
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
450
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
130
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.2k
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
230
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
0
160
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
860
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
660
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
560
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Side Projects
sachag
456
43k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Deep Space Network (abreviated)
tonyrice
0
310
Design in an AI World
tapps
1
320
Transcript
Google Play のレビュー を 自動通知する 黒川 洋 / @hydrakecat 株式会社
Gunosy
アプリのレビュー 毎日チェックしてますか? 公開直後は頻繁に見るけれど、 毎日見るのは面倒だったり そもそも、 自分1 人しか見ていなかったり ( 他の人も見てほしい) 罵詈雑言が並べられていて
SAN 値がガリガリ削られたり ( 小声) とはいえ、 貴重なユー ザー からのフィー ドバックなのでちゃ んと見ておきたい そうだ、 チャットに自動で投稿しよう (ChatOps!)
Google Play のレビュー は gsutil で取得できます gsutil とは Google Cloud
Storage のコマンドライン・ インタフェー ス。 S3 とのやりとりもできる。 らしい。 レビュー は、 この gsutil じゃないと取得できません。
インストー ルと設定方法 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
ハマりどころ を開いてもプロジ ェクトが1 つもないかもしれませんが、 適当なプロジェク トを作れば良いようです。 レポー トバケット ID は、
レビュー ペー ジの一番下にありま す。 なぜか gsutil rsync コマンドを使っても差分取得できない ( 要調査) ダウンロー ドしたファイルの先頭には BOM (U+FEFF) が入 っているので必要なら除去しないといけない https://cloud.google.com/console#/project
次は自動化だ 基本的な戦略 プログラム書くの面倒な色々 と再利用したいので Unix コマ ンドだけで済ませる レビュー を毎回全部ダウンロー ドして前回との差分をとる
↑ もうちょっと工夫できるかも 差分はそんなに凝らない( 以前のレビュー が更新された場 合は新規と同じように扱う) CSV ファイルを見る限り1 レコー ド1 行なので、 差分出力は diff 使えばいける? まず新しいレコー ドを出力するだけのスクリプトを作っ て、 それを整形して投稿するスクリプトは別に作る
エラー 処理とか細かい処理を抜くと、 だいたいこんな感じ。 新しいレコー ドの出力 ソー スコー ドは にあります。 Gist
nkf -w ${file1} | sort > ${tmp1} nkf -w ${file2} | sort > ${tmp2} comm -13 ${tmp1} ${tmp2} nkf を使って BOM を除去 diff ではなく comm を使用。 新しい方(tmp2) に含まれて いる行のみを表示
だいたいこんな感じ。 チャットへの投稿 ソー スコー ドは にあります。 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
投稿したところ 表示をもうちょっと頑張ります... URL もクリック可能になってほしい(HTML で出力すれば いける?)
改善点 チャット上の表示をもっとリッチに レビュー 数が増えると全ダウンロー ドはしんどいので工夫 が必要 ダウンロー ドした CSV を
gzip 圧縮しておくオプションがあ っても良いかも 消されたレビュー についても対応しておいた方が良い?