White Box技術部

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

【Reviewet】アプリレビュー通知ツールのその後

Reviewet

以前も紹介したアプリレビュー通知ツールのReviewetですが、その後も少しずつ変更を加え、 一部の挙動や起動方法も変わりましたので、今日はその紹介です。

変更内容

ざっくり書くと変更点は以下になります。

  • メールの件名に、どちらのOSのレビューかが記載されるようなった
  • Reviewetの起動にforeverコマンドを使うように変更
  • checkDateオプション未指定の場合、起動後の新着レビューを通知するように変更

Reviewetをバックグラウンドで起動させていると、プロセスが落ちることがあるので、foreverモジュールを導入して死活監視して貰うようにしました。 導入後はプロセスが落ちる心配はしなくて良くなったのですが、foreverがプログラムを再起動させたときにcheckDateの値が設定されていると、 一度飛んでいたiOSのレビュー結果が再通知されてしまいます。

そこで、checkDateオプションの未指定時の挙動を「既存を全件通知」から「これから来たものを通知」に変更し、 再起動後も重複して通知されないようにしました。なので、基本的にはcheckDateの値は「なし」で利用してください。
(もともとcheckDateは動作確認を目的としてつけたオプションだったので、本来の用途に戻ったような感じです)

今後の予定

コード中にはまだTODOが残っていたりするのですが、機能も一段落、夏の作業も一段落したので、別のものを作る予定です。 9月末までには公開できるといいのですがどうなることやら・・・

【Ansible Meetup】うちのチームの話をしてきました:共通言語「Ansible」

Ansible Meetup in Tokyo 2016.06で発表者枠が頂けたので、自チームでのAnsible運用の様子を発表してきました。

共通言語「Ansible」

Ansibleは仕組みがシンプルなので、コード全体が正確にはわからなくても、なんとなく動作を推測できる構成管理ツールだと思います。 実際、私がまるで知らない状態で触れたときも、実行コマンドだけからなんとなく処理を追っていくことができました。

それがドキュメントに使われる英語をイメージさせるところがあったのと、色々なタイプのエンジニアと話してもAnsibleには結構興味を持っているような印象を受けたので、「Ansibleはエンジニアの共通言語になりえるのでは?」と思い、そのまま発表タイトルとしました。

環境構築自体はどんなエンジニアでも必ずついてまわりますし、意外と苦労するところでもあるので、話のネタにいいですからね。

発表スライド

以下が発表に使ったスライドです。

speakerdeck.com

表紙のイメージは割とすぐ思いついたのですが、なかなかいい感じに作れなくて苦労しました。 せっかくなので「A」をAnsibleのロゴの文字にしようかとも思ったのですが、気力が尽きてそのままです。

もちろん表紙の画像以外も頑張って作ったので、ぜひ見てください。

あと、今回初めてまともにKeynoteを使いましたが、PowerPointの方が使いやすかったです。

見てくださいとは言いつつ、行間を補足するのを前提として作ったので、これだけだとさっぱりかもしれません。
と言いますか、誤解を生みそうな表現を結構入れているので、この資料だけを出すのはちょっと抵抗があったりします。

殴りあったりとかしないですよ?

インフラチームには色々相談にのって貰ったり、助けて貰ったりしているので、いつも感謝しています。 だからこそなのですが、作業を色々お願いしているのに、同じスペースで作業をしていないので大変さが見えず、そこからいつか関係が険悪になったりしないか、とかが結構気がかりだったりするので、その危機感を冗談めかして表現したのがあれです。

話したかったこと

  • Ansibleはインフラ作業を苦手としているメンバーにも興味を持って貰いやすい
  • ドキュメントと引き継ぎ作業は、引き継ぐ人が考えている以上に大事
  • シンプルに保とうとする継続努力が必要
  • 話すネタに困ったらAnsibleのことを話そう!

まとめが駆け足になってしまったので話せていたのか不安ですが、こんなことを伝えたかったです。 勉強会に参加していると、参加者のバックグラウンドは様々なので、話すネタの選択に困るときがありますが、そんなときに構成管理ツールの話は割といいかと思います。

Ansibleの認知度・利用率が上がって、運用方法としてのベストプラクティスが確立されていくといいなーと考えての発表でした。

あと話せませんでしたが、少しはテックな話のおまけも用意していたので、当日話を聞いてくださった方も、スライドの最後の方を改めて見て頂ければ幸いです。

でも発表時間に関してはちょっとモヤっとしてます。持ち時間20分だったのですが、ストップウォッチが16分過ぎたあたりで時間過ぎてると言われたんですよね。
20:05に登壇スペースに行った後、機材トラブルがあって数分待ったので、その時間もカウントされてたのかもしれませんが、オーバーしていると言われた後、急いで締めて、質問受けて、元の位置に戻って時計見たら20:25を少し過ぎてるくらいだったので、話してるときにはオーバーしていないと思うんですよね・・・
最後にLTした方には粗品云々の話があったのですが、私にはなかったので、打ち切りの洗礼だったのかなーと思ったりしている感じです。

→洗礼とかではなく、手違いなだけのようです。よかった・・・(2016/6/6 追記)

Ansible Meetupの感想

なんとなく認識している問題点はどこも同じように感じました。

  • ドキュメントや手順書のこと
  • Playbookのメンテナンスのこと

AnsibleのPlaybookを最新に保つ方法があれば歓迎されそうでした。 というか私が歓迎します。

ちょうど前々日にKibanaの更新やZabbix Agentの設定で、Ansibleが意図通りに動作しない問題の対応をしていたので、Playbookのメンテ方法はどうにか確立させたいですね・・・

逆に、コードの書き方とかにはあまり困ってないような雰囲気を感じました。
これはAnsible自体がシンプルなのと、利用シーンの限定化ができているからかもしれません。 もしくは、開発側の人が少なかったので、Ansibleでアプリケーションの実行に絡む設定までしないですんでいるからかもしれません。

というような話を参加している人としたかったのですが、懇親会がなかったので話すことは叶わず、消化不良気味でした。
テック寄りの勉強会だと懇親会はあまり参加する方ではないのですが、こういう運用経験を共有し合う方が重要な会だと、 参加費払っても懇親会がある方がいい、ということがわかったのは勉強になりました。

そんな感じです。
いやー、今回も準備大変でした。5月最後の宿題でもあったので、肩の荷が下りた感じがしています。

この流れで6月はShansibleを完成させて、ブログのネタにしたいところです。

【自作ツール紹介】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で連絡をお願いします。

第3回 ShangriLa MeetUpの振り返り

ShangriLa MeetUp

第3回目となる、ShangriLaのMeetUpを先日の4/9(土)に秋葉原で実施しました。
(ShangriLaは、OSSコミュニティの秋葉原IT戦略研究所が作成している、アニメ情報のIT化プロジェクトになります。)

3回目ですが、コミュニティのメンバー以外にも募集をかけたのは今回が初めてでした。 会場費の都合上、参加費が1000円必要なMeetUpでしたが、それでもたくさんの方に来て頂いてありがたかったです。

参加してくださった皆様、ありがとうございました。

秋葉原IT戦略研究所の紹介と今後の活動について

f:id:seri_wb:20160413220052j:plain

自分はとある理由で秋葉原を駆け巡っていたので、前半遅刻して会場入りしました。 開場に入ったタイミングでは、既に秋葉原IT戦略研究所の活動紹介が行われており、 慌てて次のLT大会の準備を始めました。
※写真は活動内容発表中の様子です。

LT大会

一人持ち時間5分のLT大会です。私を除く5名にLTをして頂きました。

LTの内容は、

  • 「こんなの作りました。」
  • 「こんなのやってきました。」
  • 「こういうのやっていきたいです。」

といった内容が主でした。

どなたも資料が作りこまれていて、とてもいいLTでした。(なので切り辛かったです)

後半のディスカッションのセクションでも話題に上がったのですが、 これほどたくさんのサービスがあっても、知られることなく埋もれているのは、もったいないですね。

資料を細かく見たいのですが、資料はどうなんでしょう、公開されるのかな? 進行だと気がそぞろになってしまうので、資料見返したいんですよね。

まあ、その、問題もありまして、

LT大会は私が進行を担当したのですが、 かなり時間がないことを周りにうまく伝えることができず、 結果、かなり時間を押させてしまいました。

大体一人切り替え時間も合わせて8分ぐらいかかっていました。辛い。。

ちなみに

私のLTは、もう時間がなくなるのが予想できていたので、 予定していた『最強ヒロイン琥珀さん』は止めて、 LTの進め方説明と、今後取り組むプロダクトに関する私の希望を話させて頂きました。

f:id:seri_wb:20160413220131j:plain

そして、秋葉原を駆け巡って買ってきたボルヴィック(といろはす)をお配りさせて頂いたのですが、

f:id:seri_wb:20160413220110j:plain

なぜボルヴィックだったのか、気付いてくれる人がいなかったのが残念でした。

空の境界、未視聴の方は是非観ましょう!(原作もね!)

ちなみに水は、このネタをやりたいがための個人スポンサードです:)

ディスカッション

『ITでアニメと秋葉原に革新を起こすプロダクトとは』というテーマで、 参加者全員でボードに各自の意見を貼りながら、想いを束ね、 今後作るべきプロダクトを考えよう趣旨のセクションでした。

f:id:seri_wb:20160413220209j:plain

私の汚い字が咲き乱れていますが、みんなで課題や野望を書いたボードです。

残念なことにここまでで時間切れになってしまい、肝心の議論自体ができなかったのですが、 レコメンドとコミュニティに関する要望・要求が多かったので、そこを踏まえたプロダクトの需要がありそうですね。

個人的には、面白かった作品を勝手に覚えておいて貰いたいというアイディアが面白かったです。 確かに、お奨めを聞かれても記憶の引き出しからサッと引き出してくるのは難しかったりするので、 何らかの手があるといいですね。

今振り返って考えてみると、コンテンツと人をどう繋げていくかが根本課題として横たわっているなぁ、と感じます。 商用コンテンツである以上、当たり前のことではあるのですが、 改めてITの観点からここにうまく取り組んでいきたいなと思いました。

総評

楽しかったという声も頂けたので開催できて良かったなと思いましたが、 個人的には反省点の方が多かった会になってしまったかなという感じです。

なにより進行がグダってしまったのが、一番の反省点ですね。。
最初から最後まで、積極的にファシリテートというかタイムキーピングすればよかったなと反省しています。

もっと次はチンチン鳴らせるベル持ってくるべきですね。

次回以降の改善内容に反映していければと思います。

ちなみに次回は7月頃を予定しており、もしかしたら参加費は必要ないかもしれません。
夏コミの原稿に余裕がある方は、ぜひご参加ください。

では、お疲れ様でした。