Slackbot活用術 — URLの呼び出しとGoogle Spreadsheetでのクエリ

タイトルはSlackからGoogle spreadsheetをコントロールできそうな感じがしますが、別です。すみません。活用術というほどでもない、他愛のない記事ですが、面白そうと思った方に読んでいただければと思って盛りました。

弊社では80台ほどの携帯端末を保有していて、WebサイトやiOS/Androidアプリのテストをしています。Webサイトやアプリの開発者だったり、アルバイトのテスターだったり、営業担当がデモで持っていきたかったり、様々な人がいろんな端末を使います。そういう中にいると、よく「Android 4.3の端末あったっけ」「iOS8.4のiPhone6かiPhone6+ある?」と聞かれるわけです。

私は端末管理を任されているのですが、聞かれると帳簿を開き、そういう端末があるかどうか探します。幸い、OSバージョンや画面サイズは帳簿に正確に書いているので、あとはそこで検索するだけなんですね。
条件に合う端末がなければ、404を返します。条件に合った端末を保有していれば、管理番号を引いて教えてあげます。そうするとテストコーナにある端末の、番号シールを見て、「これがAndroid 4.3の端末なのだな」とわかります。

前提が「帳簿にOSバージョンを記録してある」「端末に番号シールが貼ってある」ということで、ちょっとシビアなのですが、そういう前提のときにSlackbotを使って省力化できないかということで考えました。

検索条件をSlackbotにフィードして、botが考えて返してくれるといいな、が理想です。それは理想です。そこまでやっていません。なのでぜんぜん大したことないので期待しないでください。

手順

  1. まず、Slackbotの設定を行います。

SlackのMacアプリの、チーム名のメニューにある「Customize Slack」を選びます。
slack-menu-customize-slack

この設定は、チーム内のすべてのユーザーに影響するので、編集は慎重に行いましょう。

  1. すると、Webブラウザで設定画面が開くので、「Slackbot Responses」タブを選びます。

slack-customize-bot

  1. 「Add new response」ボタンを押し、キーワード欄(左)とメッセージ欄(右)になにか入力します。

slack-customize-bot-3

キーワードは、Slack上で打たれるワードです。コンマ区切りで複数指定できます。「find ios」「find android」など、コマンド風のものがよいでしょう。社内のSlackに頻出する「仕様変更」「締め切り」「モンゴル語」みたいな単語を指定すると、スパムみたいにあちこちのスレにresponseが付いてしまうので、気をつけましょう。適度な長さで、頻出の発言にはかぶらず、必要なときに思い出しやすい語にしておきます。

今回は、「find ios」と打つと、端末とバージョン情報を記録した帳簿(Google Spreadsheet)へのリンクを出すようにしました。メッセージ欄に、Google Spreadsheetへのリンクを1行で書くだけです。ちなみに、メッセージ欄は改行区切りで、複数行の記述ができます。毎回同じものを返す場合は、メッセージは1行だけにします。複数行を入れると、キーワードが打たれるたびにランダムで1行返されます。

おまけとして、スペルの違う「andriod」などを入れると、正しいスペルを案内してくれるレスポンスも書いてみました。関係ないですが「遅延証明」と入れると、鉄道各社の遅延証明へのリンクもランダムにサジェストしてくれるレスポンスも作ってみました。微妙に便利じゃないけど人工無能的な知性を感じさせるbotが演出されています。

  1. リンク先のGoogle spreadsheetは、検索しやすいようにちょっと細工しておきます。

google-spreadsheet-mobile-in-bps

端末情報をいろいろ書き溜めたシート「携帯端末・充電器」とは別に、「クエリ」シートを作っておきます。そこのA1セルに、検索するOSバージョンを書くようにします。そして、4行目あたりの空欄に、下のようなクエリを書くと、A1の内容をクエリに足して、5行目以降に検索結果をバシっとリストしてくれます。

=query('携帯端末・充電器'!A:Z, "select A, B, C, H, I, K, L, M, N, O, P, Q, R where K like '"&A1&"%' order by K")

クエリはアクティブに動作しますので、A1セルの内容を変更するたびに、すぐにクエリ結果が反映されて見ることができます。この方法だと2人以上が同時にクエリしたいときに速攻で上書きされてしまいますが、1日に1回聞かれるかどうかくらいなので、衝突確率(Collision Frequency)を計算した結果、気にしないことにします。クエリの「where K like …%」で、K列(OSバージョン名を入れた列)にA1で指定した文字列が前方一致すれば、という条件を指定します。「order by K」は、検索結果をOSバージョン名で昇順に並び替えます。

スプレッドシートは事前にGoogle Driveの共有フォルダに置いたり、個別に共有設定をしておきましょう。これで、Slack上で「find andriod」などの発言をすると、事前に設定したメッセージが表示され、端末や正しいスペリングを探すお手伝いをしてくれます。

本当は、Slack上で引数を指定して拾って、さらに社内のすべての該当端末でアラームとバイブレーションが鳴ってくれたらパーフェクトですね。「Android 4」だけ打つと10台くらい一斉に鳴ったりしてうるさいですが、どなたかそういうことを試されたらこっそり教えてください。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ