「ホッテントリを表示」、「BOTの応答メッセージの語尾に任意の文字を付与」するためのgemをリリースした #ruboty



AdventCalendarにエントリーするつもりはなかったのですが、空きがあったのでエントリーしてみました。ちょうどRubyの勉強がてらに2つgem(プラグイン)をリリースしたので、リリースしたgemについて紹介させて頂きます。



# ホッテントリを表示するプラグインについて(ruboty-hatena_hotentry)

## 概要
* みんなが大好きなはてブのホッテントリを表示するプラグイン
* 内部的には、はてなから提供されているRSSフィードを取得し、[Nokogiri](http://www.nokogiri.org/)を使用してパースしています

## 公開情報

* RubyGems
	https://rubygems.org/gems/ruboty-hatena_hotentry

* GitHub
	https://github.com/fukuiretu/ruboty-hatena_hotentry

インストール手順はGitHubのREADMEをご参照ください

## 使用方法
※ rubotyの部分は自分でつけたBOTの名前に適宜置き換えてください

### 全体
ruboty hotentry all

### 世の中
ruboty hotentry social

### 政治と経済
ruboty hotentry economics

### 暮らし
ruboty hotentry life

### 学び
ruboty hotentry knowledge

### テクノロジー
ruboty hotentry it

### おもしろ
ruboty hotentry fun

### エンタメ
ruboty hotentry entertainment

### アニメとゲーム
ruboty hotentry game



## 使用例
[ruboty-slack](https://github.com/r7kamura/ruboty-slack)と組み合わせてitカテゴリのホッテントリを表示した例が以下となります。
RubotyとSlackを連携させる方法に関しては、Rubotyの作者である@r7kamuraさんの記事、[Ruby製HubotクローンのRubotyをSlackで動かす](http://qiita.com/r7kamura/items/8d1b98e28154de6030b9)を読めば容易に導入できるかと思います。

![slack_ex1_141221.png](https://qiita-image-store.s3.amazonaws.com/0/13534/fb7b3e62-c3cc-242a-db84-86d5845d1d41.png "slack_ex1_141221.png")

[ruboty-cron](https://github.com/r7kamura/ruboty-cron)と組み合わせて、よく見るカテゴリを定期的に表示させるようにしてもいいかもしれません。

ちなみにBOTのアイコンは小さくてわかりずらいですが、パズドラのハクというキャラです。



# BOTの応答メッセージの語尾に任意の文字を付与するプラグインについて(ruboty-message_suffix)



## 概要
* 機能的には名前の通りですが、プラグインと呼ぶのはちょっと違うかもしれません
* BOTに対し、より愛着が湧くかもしれません
* 内部的にはオープンクラスを使用し、Ruboty::Message#replyを書き換えている


## 公開情報
* RubyGems
	https://rubygems.org/gems/ruboty-message_suffix

* GitHub
	https://github.com/fukuiretu/ruboty-message_suffix

インストール手順はGitHubのREADMEをご参照ください



## 使用方法
環境変数RUBOT_MESSAGE_SUFFIXに語尾に付与したい文字を設定するだけです。
例えば、京都弁チックなBOTにするために「どすぅ」を語尾に付与したい場合、
`export RUBOT_MESSAGE_SUFFIX=どすぅ`を設定します。

また、Rubotyには[dotenv](https://github.com/bkeepers/dotenv)を利用するための口が用意してあるので、カレントディレクトリに.envファイルを置いて、.envファイルに`RUBOT_MESSAGE_SUFFIX=どすぅ`を定義し、`ruboty --dotenv`で起動する手もあります。



## 使用例
[ruboty-slack](https://github.com/r7kamura/ruboty-slack)と[ruboty-talk](https://github.com/r7kamura/ruboty-talk)と組み合わせてみます。語尾(RUBOT_MESSAGE_SUFFIX)には、少し前に流行った侵略!イカ娘の主人公イカ娘（古い？）の口癖である「でゲソ」と「イカ？」を設定してみます。候補を複数設定する場合は、カンマ区切りで`export RUBOT_MESSAGE_SUFFIX=でゲソ,イカ？`と設定します。これで「でゲソ」か「イカ？」がランダムで抽出されます。

ruboty-talkの詳細については、[DocomoruでBOTと雑に会話する](http://qiita.com/r7kamura/items/55f398624dbce1c6dc14)を読むと良いと思います。

会話してみた結果がこちら
![スクリーンショット_2014_12_22_23_59.png](https://qiita-image-store.s3.amazonaws.com/0/13534/8f98eecc-f36e-6f78-4409-8d882a83f6bb.png "スクリーンショット_2014_12_22_23_59.png")

と、ちょっとよくわからない会話になってしまいましたが、どこかで誰かが言ってた言葉を借りると、BOTはちょっと頭が悪いくらいがかわいいと思います。



# 所感
* Rubyの会社でChatOpsの導入を検討しているのであれば、HubotよりもRubotyの方が個人的には推し。CoffeeScriptが苦でなければHubotでもいいかもしれない。(弊社もHubotだけど、いつかしれっと乗り換えたい)
* 何か要望等あればPRお待ちしております



# 謝辞
### 参考サイト
* [r7kamura/ruboty](https://github.com/r7kamura/ruboty)
* [LT駆動開発で Ruboty の使い方っぽいことを適当に紹介した](http://blog.eiel.info/blog/2014/07/07/great-bot-and-ruboty-ltdd/)
* [Ruboty のコードリーディングで Ruboty の仕組みを理解すると共に Ruby の設計・実装の定石を学ぶ](http://qiita.com/tbpgr/items/5887003cd2e69e9d8867)
* [はてブAPIでwebサービスを作りたい全ての人に向けて書きました](http://syncer.jp/hatebu-api-matome)

### 参考書籍
* [パーフェクトRuby (PERFECT SERIES 6)](http://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88Ruby-PERFECT-SERIES-6-Ruby%E3%82%B5%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%BA/dp/4774158798)


# 明日の記事は...
@tbpgrさんとなります