ぬぬん!

やってみたこと,思ったこと

ただの Karmaじゃ、私たちの苦しみは測れない

この記事はChatOps Advent Calendar 2015 - Qiitaの16日目の記事です。

チャットに機能としてよくのっている Karmaという機能

一般的に @goma ++ とすると、その指定したユーザにポイントが付くという
Chatをよく使ってる方にはおなじみもの。

基本的にイイコトをした時に評価として使うことが多いと思うが、 私は評価よりも、もう少し生活に密着させたKarmaの派生機能を作った。

1週間生きることは辛い

月曜日に始まり、火曜、水曜...と続く平日、心身への疲労は増し増し、
土日を迎えるころには疲労困憊。
時には、週の半ばで疲れが限界を超え、お仕事を休んでしまうこともある。
私達の体力は有限だから、大事にしなくちゃいけない
そうだ、BotでHP(HitPoint)管理しよう。

日々使うもの、それはChat

どのご家庭にも1つは当たり前のようにあるChat
うちにはSlack上に筒隠月子というBotがいる。
f:id:gomayumax:20151216060622p:plain

「おはよう」から「おやすみ」までいつでも一緒なので 1週間の疲労度を測るとなれば、Botはもう最適すぎる。

HP管理方法

今回は、Slackに投稿された文字列を解析して
指定したネガティブなワードにマッチすれば、
HPにダメージを受けたと判定することにした。

HP上限を100とし、0になったらそれ以上のダメージを受けない。
また、ダメージは土曜日の朝に体力が全回復される。

実装

tsukiko/hitpoint.js at master · hoto17296/tsukiko · GitHub

文字の解析はkuromojiで行い、 データはRedisに保存する。

  1. 投稿された文字を全てkuromojiで形態素解析
    hubot-middleware-kuromojiを使って簡単に形態素解析した結果を使えるようにしている。

  2. 「つらい」「ねむい」「つかれた」ネガティブワードとのマッチ
    形態素解析結果の中から原形を取り出し、照らし合わせることで、文中の変化にも 順応に対応出来るようにした。

  3. ダメージを受ける
    HPのデータは、投稿者名をkeyにしてRedisで管理

動作確認

f:id:gomayumax:20151216052842p:plain

ちゃんと「つらたん」とかいうワードを「つらい」と捉えてHPを減らしてくれている。

現状のHPを知りたい場合はBotに「status」と飛ばすと教えてくれる。

f:id:gomayumax:20151216053135p:plain

もはや筒隠月子は何者なのかという感じになってしまったけどそれは無視しよう。

今後

今回、ワードを拾って、HPを下げるという機能を実装した。
実際これはRedisを触りたかったという目的から来た完全なネタ機能である。

なので、もう少し実用的に
寝ている時間が遅い、食べ物が偏りすぎとかから
HPを減らしてくれたりしたら嬉しい(AppleWatchとかと連携できたりしないのかな)。

あと、HPが0になっても特に何も言ってくれない非情な現状なので、何かしら言ってくれるようにしたい。

おまけ

f:id:gomayumax:20151216054706p:plain
たくさん言うと、たくさんHPが減る

f:id:gomayumax:20151216053953p:plain
物理攻撃、回復、魔法も使える

次の記事はhiconyanさんです! よろしくお願いします\(^o^)/

さらにおまけ

なるほ。作るか\(^o^)/