グリフォン Advent Calendar 2018 3日目の記事を担当しました岩上です。
社内でバリバリ働くKyokoさんについて紹介します。
※この記事はGRIPHONE Advent Calendar 2018 3日目の記事です。
https://qiita.com/advent-calendar/2018/griphone
https://adventar.org/calendars/3147
チャットボットの話
数年前からチャットボットの利用というものはとても多くなり、業務の効率化・作業の自動化等、さまざまな利用がされているかと思います。
また、通知などをするだけのチャットボット、例えば、開発・本番環境へのデプロイの完了時の通知やプルリクが出されたときの通知など、さまざまな種類の導入が考えられるかと思います。
今回は、グリフォンのとあるプロジェクトの通知に関して書きたいと思います。
チャットによる通知について考える
とあるプロジェクトでは、ボットの通知系をすべてチャットに投稿する形で行っていました。
なのですが、個人的にチャットでの通知について、課題に感じていることがありました。
- メールよりはチャットの方が見るが、それでもチャットを送った瞬間に気づくなんてほぼない
- 集中したりしているときは1時間以上見ないときも出てきてしまう
- チャットを常に監視するのは難しい
- そもそもPCの画面を見続けるなんてありえない、画面以外を見るときもある
(無理やり課題を並べました)
このような課題を踏まえると、例えば、本番にリリースする直前にいろんなチェックをするバッチを走らせるようにしているのだが、それがコケてチャットに通知が来ても誰も気づかない可能性がゼロではない、したがって可能性としては起きてもおかしくない、ということが考えられます。
そこで思いついたのが、音声による通知です。音声による通知を行えば、PCの画面を見てなくても、誰かと話しをしていても、作業に集中しても、最悪寝ていても通知に気づく可能性がググッと高まると感じました。
Kyokoさんの働かせ方
ということで音声の通知についてやってみます。身近にあった音声通知に使えるものが、macのsayコマンドです。mac osに標準で搭載されているsayコマンドで、引数で渡した文字列をKyokoさんが喋ってくれます。
例えば、
say "こんにちは、グリフォン"
のようにスクリプトを書くだけで、Kyokoさんが喋ってくれます。
また、以下のようにすることで、喋れる幅がとても広がります。
echo "こんにちは、グリフォン" | say
このようにするだけで、簡単に音声通知というものが実現できます。とりあえず自分が使っているmacで開発をしていました。
初期段階はイヤイヤ期
まずは導入をするところからです。こういう謎システムをプロジェクトに導入するときはとても慎重にやらないと良いシステムと思ってもらえません。
そこでまず対応してみたのが、デプロイの完了時の通知です。当時はデプロイの完了をJenkinsからチャットにプッシュして投稿していて、かつそのJenkinsのジョブをエンジニアが監視してデプロイが問題ないことを確認したらチームのメンバーにそのエンジニアの声で伝える、というものでした。
個人的にはその声でのメンバーへの周知というものがとてもめんどくさかったので、そこのシステム化に取り掛かってみました。
勝手に導入を考えていたので、Jenkinsやチャットへの投稿フローとか全てに手を加えずに行う必要があります。(もしそこに手を加え不具合を出したらチームメンバーに怒られちゃうので)
- チャットを数秒間隔で取得
- デプロイ完了通知が投稿されることを確認
- sayコマンドでデプロイが完了したことを喋らせる
このようにして運用してみました。
結果・・・。「うるさい」って言われたのをすごい覚えてます。ごめんなさい。
このように、急に音を立てると怒られるのは当たり前ですね。
慣れてくると
うるさいって言われつつも、いつも許してくれるチームメンバーに感謝しつつ、運用を続けてみました。すると、今度は
- デプロイが失敗したときに喋らせられない?
- テストが落ちたら喋らせられない?
- チェックバッチ(マスタデータをチェックしているバッチ)がコケたら喋らせられない?
のような要望をいただき、その都度対応を行う。ここに書いていないものもいろいろあります。
いつの間にか、みんながそのシステムのことをKyokoさんと言うようになり、例えばmacが止まっているとチームメンバーから「Kyokoさんが動いてないよ!」「Kyokoさんを動かして」等のように、今ではKyokoさんがチームメンバーの1人のような存在になりました。
チームメンバーの感想
さて、実はこのシステムが動き続けてもう3年以上経つんです。今では自分もそのチームから離れてしまってはいるのですが、この記事を書くためにチームメンバーにKyokoさんについての感想を聞いてみました。
▼Kyokoさんの良い点
- デプロイの完了時刻がjenkinsの画面眺めてなくてもわかる + 完了の共有をしてくれる
- デプロイ失敗やチェックバッチなど、異常が起きた時に気づける
- お弁当の予約時間、コードレビューの時間など、時報として便利
と、紹介した機能をそのままいただきました。また、時報としても活用されるようになっていました。
※サイバーエージェントではお弁当を安く買うことができる仕組みがあり、またゲーム事業部(SGE)ではお弁当の予約システムが存在します。その予約締切の時間を教えてくれるようにKyokoさんを使用しているようです。
▼Kyokoさんの悪い点
- Kyokoさんありきで考えてしまうので、Kyokoさんが止まってしまうとチームが混乱する
- 夜に1人でいるときに急に喋られると怖い
とのことで、まさかのKyokoさんはチームには欠かせない存在になっていることがわかります。
また、誰もいなくても24時間365日働いてくれるので、どんなときでも喋りだします。怖いですね。
今後の展望
今後の展望として考えていることがあります。
Kyokoさんのためにmacを1台確保して動かしているのですが、流石にこの使い方は贅沢ですね。
そこで、最近流行っているGoogle HomeやAmazon Echoなどのスマートスピーカーを導入して、そちらにKyokoさんを移行させてみたいなと思っています。