角煮botはじめました

角煮botはじめました

このエントリーをはてなブックマークに追加

技術推進室の浅井です。

今日は技術推進室の最近の業務成果をひとつ紹介させてください。

きっかけは社内のGitHubリポジトリのアクティビティを通知しているChatWorkルームに流れてきた以下のコメントでした。

よくあるtypoですね。 これはもういますぐGitHub上で角煮画像を貼り付けるしか無いと思うわけです。おそらくチーム内で3人は同じことを考え、我先にとプルリクのURLと角煮フォルダを開いたはずです。

しかし・・・

ブラウザに表示されたのは、角煮なんて文字列もなく、何事もなくマージされたプルリクでした。 深町・・・修正しやがった・・・

対策

ChatWorkに流れてくる通知を見て人手で応対するというワークフローでは、いかに訓練された角煮職人である我々にとっても事案の発生から画像の貼り付けまでに若干のタイムラグを要します。 また仮に事案が収束する前に画像の貼り付けが間に合ったとしても、深町があとからコメントを修正してしまえば我々のほうが「いきなり角煮画像を貼り付けるおかしな人」と扱われる理不尽な事故が発生します。

そこで

  • 画像の貼り付け作業をbotに代行させる
  • 「角煮」と書かれたあと10秒以内に角煮画像を貼り付ける処理を自動化する

という対応を行いました。以下はそのコミットです。

もともと動かしていたGitHubリポジトリのアクティビティを(10秒間隔で)ChatWorkに通知するbotスクリプトがあったので、そこに角煮処理を追加しています。 この部分のコードは以下の通りで、単にGoogle画像検索して適当な角煮画像を貼り付けてmention返しているだけです。

# kakuni
if event.payload.comment.body =~ /角煮/
  kakuni = begin
    JSON.load(open("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=8&safe=active&hl=ja&q=%E8%A7%92%E7%85%AE").read)["responseData"]["results"].map{|r|r["unescapedUrl"]}.shuffle.first
  rescue
    "https://cloud.githubusercontent.com/assets/446308/11295605/066a85a6-8fb0-11e5-8034-3e729e0cb863.jpg"
  end
  @octokit.add_comment(@repo_name, num, "@#{actor_account[:github_id]}\n![](#{kakuni})")
end

このように動作します。

(画像は自粛)

謝辞

本件の対応について相談にのってくれた弊社DBAに感謝いたします。


追記 2015.12.02

このスクリプトはGoogle Image Search APIが停止となったため、現在は以下の仕様・運用に変更されています。

  • 角煮画像のリストをリポジトリ内に定義
  • リストからランダムに1件取得して貼り付け
  • 外食時に角煮を注文して写真を撮って随時追加する


名無しのエンジニア
Tableau Serverで簡単にMySQLテーブルの容量(概算値)を時系列でモニタリング
httpsサイトにhttpリソースが混在していないかPHP + Selenium WebDriverでチェックする