Rubotyのいる生活

めりくり〜〜〜。これはドワンゴ Advent Calendar 2015の最終日の記事です。みなさんはいい子にしてましたか?サンタはきましたか?

なんとまあ、この記事はKwappa研究開発室1年ぶりのエントリーとなってしまいました。どんだけさぼっていたんだ…。

今年の仕事

さて。

今年の主な仕事は、教育事業に関連する開発チームのマネージャーという立場でした。自分でプロダクトコードを書くとボトルネックになってしまう、という(高い授業料を払った)過去の学びから、ひたすら裏方に徹しています。打ち合わせやTODOの数も多く、マネージャーに対してのマネジメントが切実に必要でした。

プロダクトコードを書かないマネージャーであっても、ソフトウェアエンジニアたるもの「ないものは作るしかない」。というわけで、仕事の合間にちまちまとSlack Botを導入し、必要なプラグインを作っていました。

kwappa/kinoco

それがこのkwappa/kinocor7kamura/rubotyに機能を詰め込んでだものです。いくつか自前のプラグインも開発したので、それらを紹介していきます。

kinoco

kwappa/ragoon

弊社はグループウェアとしてサイボウズ ガルーン 3を使っています。メジャーバージョンがひとつ落ちているのが悲しいところ。予定を取ってきてSlackに流すために作ったAPIクライアントがkwappa/ragoonです。

といっても日を指定して予定を取ってくるだけ。通知の取得もできているのですが、まだつなぎ込みはしていません。

このクライアントをRubotyのプラグインにしたのがkwappa/ruboty-ragoonです。当初はLitaで作っていたので、Lita版のプラグインkwappa/lita-ragoonもあります。

kinoco ragoon #{DATE}とすると、DATEをできるだけパーズしてその日の予定を取ってきてくれます。このスクショは分報チャンネルなので非公開予定は伏せられていますが、Direct Messageで投げると非公開予定も表示してくれます。

ちなみにアイコンをぼかしているのは、某無免許医の助手画像を拝借しているから。オリジナルの可愛いアイコン募集しています。

Garoon APIのXMLは構造が :poop: 独特で、Nokogiriで読み書きするのに結構コツが必要でした。この辺とかこの辺とか、詳細な説明はしませんが、ガルーンとお話しするときにはぶつかる壁だと思います。

kwappa/ruboty-todo

ちょっとしたタスクを登録し、進捗を管理するようなツールが欲しくて作ったのがkwappa/ruboty-todoです。Ruboty | Brainを利用し、Rubotyの脳にTODOを記録したり進捗を管理したり、がSlackでお話することで実現できます。

同じ名前のプラグインがあるのに気づいたのは、gemとしてリリースしたあとのことでした。申し訳ない気持ちでいっぱいなのだが、 gem search -r ruboty で発見できなかったのでご容赦願いたい次第です。

kwappa/ruboty-postgres

kinocoはherokuで運用されています。Rubotyは標準だと頭脳がメモリ上にあるため、dynoを再起動したりすると記憶喪失してしまいます。ありがたいことにherokuにはRedisのアドオンがあり、25MBまでは(クレカ登録は必要だけど)無料で使えます。

これで記憶の保持はバッチリ…と思ったら、heroku様からぼちぼちの頻度で「Redisあかんねん」のメールが届き、記憶喪失になるケースが発生しました。うーん、飛ぶのが致命的なデータは載せないが、カジュアルに記憶をロストされても困るぞ。

ということで、herokuで使えるRDBMSであるところのpostgresを永続化レイヤーに使う、kwappa/ruboty-postgresというのを作ってみました。

処理そのものはまるっとr7kamura/ruboty-redisを参考にしています。saveloadだけちょろっと直せばラクショーやろ、と甘く見ていたら結構いろいろやることがあり、ged/ruby-pgと格闘していました。テスト書かないとなあ…(test-unitに依存だけしている)。

POSTGRES_BOTNAMEを指定することで単一のデータベース / テーブルに複数のRubotyが頭脳を置けるようにしてあるので、Heroku | Postgresの無料部分にもやさしい設計です。

今後の展望とまとめ

より便利にするために、今後もちまちまと開発を続けていきたいと思っています。今後の展望としては…

ということで無事ドワンゴ Advent Calendar 2015も完走し、うまく休みをゲットできたため今日から冬休みです。have a merry coding and happy hacking!

1 comment

  1. Slackは環境である 〜書評 : 「Slack入門 ChatOpsによるチーム開発の効率化」〜 | Kwappa研究開発室 6月 28, 2016 11:56 am  返信

    […] 僕はRubyistなのでRubotyというRuby製のBotを使い、各種生活が便利になる仕掛けを仕込んでいます(という記事を去年書いた)。グループウェアからの通知を受けたり、簡単なToDo管理をしたり、朝晩予定を知らせてくれたりと、生活を便利にしてくれています。 […]

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です