Ruboty って何?どうやって動かすの? Hubot と何が違うの?どっちを使えばいいの?
概要
Ruboty って何?どうやって動かすの? Hubot と何が違うの? という方に向けた記事です
目次
- Ruboty って何?
- Ruboty の基本構成
- Ruboty 登場の経緯
- Ruboty の特徴
- コマンドライン環境の疎通確認手順
- ステップアップのための資料紹介
Ruboty って何?
Ruboty は Ruby 製のチャットボットフレームワークです。
要は Hubot の Ruby 版。
Ruboty のソースコードは GitHub で確認可能です。
ruboty github
Hubot は Plugin を CoffeeScript で書く必要があります。
(最終的に JavaScript になれば良いので他の AltJS や生の JavaScript でも良い)
Ruboty は Ruby で Plugin を書く必要があります。
機能的な違いはほとんどありません。
( 大きな差は Ruboty には HTTP 待ち受けがないことくらい?
Ruboty は OSS プロダクトなので 需要があれば誰か プルリクエスト を送るのでは。 )
機能に大きな違いがないなら、 Ruboty は誰におすすめなのか?
Hubot は便利だけど CoffeeScript より Ruby で書きたい、という人に Ruboty をおすすめできます。
こういう話をすると 某 Hubot 職人 さんから
「Rubyist は Ruboty か Lita あたりを使え。振り返るな」
と背中を 強めに 押してもらえます。どちらかというと 尻を蹴飛ばされているかもしれません 。
何の話か気になる方は Twitter で、 「 Hubot 便利だけど Ruby で書けたらなぁ・・・ 」 とつぶやいてみてください。
何かが起こるはずです。
Ruboty 登場の経緯
Ruboty の作者は Qiita の @r7kamura さんです。
- Ruby を使って bot を使いたい人向けに
- Ruby の bot フレームワークには Lita があるがより自分好みの設計にしたい
などの理由によって、 Hubot の Ruby 実装代替ツールとして作成されました。
詳しくはご本人の口で rebuild.fm ( 宮川達彦さんの podcast 。チェックしていない方はこれを機にぜひ )で語っておられます。
rebuild.fm | 66: It Is Always (r7kamura)
また下記の Episode 10 にも出演しておられます。 Ruboty の作者さんの思考が気になる方はこちらも。
rebuild.fm | 10: RailsConf, Ruby 2.0, Rails 4 (mrkn, r7kamura)
※ rebuild.rm については、こちらの記事( Rebuild.fm のススメ )もまとめてあります。
Ruboty の基本構成
私が以前まとめた記事をご確認ください。
Ruboty の特徴
- Ruby 製。 Ruby で Plugin を書ける
- Ruby の gem で Plugin を管理可能。 Ruby 使いが慣れ親しんだ方法で管理できる。
- Ruboty 本体のコードが非常に綺麗。本体を読む際の敷居が低い。
- 日本人が作者
- 一次情報を日本語で得ることができる
- Lita があることを知った上で、Ruboty を開発した => Lita のプロダクトをより改良した内容になっているのでは?
- ※この部分は、 rebuild.rm をきいた上での私の想像なのででたらめかもしれません
- 作者の @r7kamura さんが自動化厨(褒め言葉)っぽい
- ラリーウォールの三大美徳 () 的なものを持ち合わせていそうな感じ
- Plugin の提供 , Heroku への簡易デプロイなど便利な仕組みが提供される
- Qiita の中の人が作者なので Qiita で情報を公開してもらえる
コマンドライン環境の疎通確認手順
前提
Ruby, Bundler をインストール済み
ruboty をインストール
$ gem install ruboty
ruboty 用のディレクトリテンプレートを生成します
$ ruboty --generate
$ tree
.
┗ ruboty
┗ Gemfile
$ cd ruboty
Gemfile を編集して plugin を追加します
- 私が作成した ruboty-qiita_scouter を追加してみます
source "https://rubygems.org"
gem "ruboty"
gem "ruboty-qiita_scouter"
※ Windows 環境の方は rb-readline gem も追加
bundle で plugin をインストールします
$ bundle install
ruboty を実行します
※ ruboty-qiita_scouter の実行は少々時間がかかります
$ bundle exec ruboty
> ruboty ping
pong
> ruboty help
ruboty /qiita scouter (?<id>.+?)\z/ - analyze qiita power
ruboty /help( me)?\z/i - Show this help message
ruboty /ping\z/i - Return PONG to PING
ruboty /who am i\?/i - Answer who you are
> ruboty qiita scouter tbpgr
ユーザー名: tbpgr 戦闘力: 450120 攻撃力: 74250 知力: 360525 すばやさ: 15345
ステップアップのための資料紹介
Slack + Heroku Deployment
@r7kamura さんの下記記事の手順で, Ruboty を Heroku にデプロイし、 Slack と連携するまでの環境を簡単に構築できます。
開発支援ツール
開発支援ツール に関する情報は以下のエントリにあります
プロジェクトテンプレート、コード生成
README の生成
- Ruboty Handler Plugin 作成時の README テンプレートジェネレータ ruboty-megen を作成した
- Ruboty Handler Plugin 作成時の README テンプレートジェネレータ ruboty-megen の REAMDE 内の Commands から Usage へのページ内リンクを追加 #ruboty
- Ruboty ruboty-megen の command ブロックに example を追加