Save 37% off PRO during our Black Friday Sale! »

Rubotyの使い方

 Rubotyの使い方

http://blog.eiel.info/blog/2014/07/07/great-bot-and-ruboty-ltdd/

LT駆動開発 05 - 納品のないLT駆動開発 の発表者資料です。
https://github.com/LTDD/Sessions/wiki/LT%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA05

Ruboty は Hubot のようなBotを作成するためのフレームワークです。
実際に使ってみましたので、ポイントを説明したいと思います。

* Ruboty - https://github.com/r7kamura/ruboty
* Hubot - https://hubot.github.com/

1a679952cdf455ecd6a15cbde7ae80d5?s=128

Tomohiko Himura

July 03, 2014
Tweet

Transcript

  1. Rubotyͷ࢖͍ํ 2014-07-05 LTۦಈ։ൃ05

  2. ͻΉΒ ͱ΋ͻ͜ GitHub: eiel Twitter: eielh ! ຖ݄1ͭҎ্εϥΠυΛೲ඼͍ͯ͠Δ

  3. 6݄ͷπΠʔτ https://twitter.com/eielh/status/475800936757993473

  4. Ruboty ͱ͸

  5. Robot Λͭ͘ΔͨΊͷ ϑϨʔϜϫʔΫ

  6. None
  7. Ruoty ͍͢͝޿ౡͷTwitterΞΧ΢ϯτͰར༻ ! Adatper Λ੾Γସ͑Ε͹TwiterҎ֎Ͱ΋ ΧελϚΠζׂ͕ͱ؆୯

  8. None
  9. Ruboty Λ࢖͏ Ruboty ͷ࢖͍ํ Ruboty ΁໋ྩͷ௥Ճ

  10. Ruboty Λ࢖͏ • RubyͱBundler ΛΠϯετʔϧ • Gemfile Λ࡞Δ • bundle

    install • bundle exec ruboty • > @ruboty ping
  11. Gemfile source 'http://rubygems.org' ! gem 'ruboty'

  12. bundle exec ruboty Type `exit` or `quit` to end the

    session. > @ruboty ping pong
  13. shell ্Ͱಈ͘BOTʹ

  14. Twitter BOTʹ͍ͨ͠৔߹

  15. Gemfile Λมߋ source 'http://rubygems.org' ! gem 'ruboty' # ॻ͔ͳͯ͘΋͍͍͚Ͳ gem

    'ruboty-twitter'
  16. ઃఆ͸؀ڥม਺ export TWITTER_CONSUMER_KEY='xxxx' export TWITTER_CONSUMER_SECRET='xxxx' export TWITTER_ACCESS_TOKEN='xxxx' export TWITTER_ACCESS_TOKEN_SECRET='xxxx' export

    ROBOT_NAME='εΫϦʔϯωʔϜ'
  17. Adapter • idobata • twitter • hipchat • slack

  18. ຊ൪؀ڥ͸ Twitter ։ൃ࣌͸ shell

  19. Gemfile Λมߋ source 'http://rubygems.org' ! gem 'ruboty' ! group :production

    do gem 'ruboty-twitter' end
  20. RUBOTY_ENV Ͱ੾Γସ͑ $ RUBOTY_ENV=production bundle exec ruboty ! heroku ͳͲʹ

    deploy ͢Δ৔߹͸ heroku ͚ͩઃఆ ͢Ε͹Α͍
  21. Adapterͷ࡞Γํ (ͬ͘͟Γ) Ruboty::Adapters::Base Λܧঝ run ϝιουΛ࣮૷ say ϝιουΛ࣮૷

  22. runϝιου πΠʔτͳͲΛಡΈࠐΈͯ͠ Robot#receive ΛݺͿΑ͏ͳॲཧΛ͔͘

  23. say ϝιου ୈ̍Ҿ਺͸ Hash key͕ :body ͕࠷௿ݶ͋Δͱߟ͑Δ ͦͷଞͷ key ͸ඞཁʹԠͯ͡෇༩͞ΕͨΓ͢Δ

  24. Ruboty΁໋ྩͷ௥Ճ

  25. Ruboty::Handlers::BaseΛܧঝ gem ʹͯ͠ Gemfile ͰಡΈࠐΈ͢Δ Ϋϥεϝιου on ͷར༻

  26. on ϝιουͷར༻ ྫ ΠϕϯτΛؚΉ࣌ʹॲཧΛ࣮ߦ ! on /(.*)Πϕϯτ/, name: 'event', description:

    'આ໌' ! ϔϧϓ͸ࣗಈੜ੒͞ΕΔ /\A@?ROBOT_NAME:?\s*(.*)Πϕϯτ/ ʹϚονͨ͠ͱ͖ʹ event ϝιουΛ࣮ߦ͢Δ
  27. GemΛͭ͘Δͷ͸ϋʔυϧ͕ߴ͍? -l Λ࢖͏ͱϑΝΠϧΛಡΈࠐΈ͢Δ͜ͱ͕Ͱ͖Δ ! $ bundle exec ruboty -l sample_handler.rb

  28. hubot ͷΑ͏ʹ… scripts σΟϨΫτΛશ෦ΑΈ͍ͨʂ ! Dir.glob('scripts/**') do |path| require_relative path

    end
  29. sample_handler.rb class SampleHandler < Ruboty::Handlers::Base on /(.*)Πϕϯτ/, name: 'event', description:

    '' ! def event(message) message.reply('࣍ͷΠϕϯτ͸໌೔Α') end end
  30. Ruboty::Message ૹ৴ऀɺѼઌɺϝοηʔδຊจͳͲͷ৘ใΛ ΋͍ͬͯΔɻhashͷΑ͏ʹѻ͑Δɻ reply ϝιουͰฦ৴Ͱ͖Δ

  31. ஫ҙ఺ twitter adapter ͷ৔߹ screen_name ͸ࣗಈͰૠೖ͞Ε·ͤΜ message.from ͰऔಘͰ͖·͢ ! in_reply_to_status_id

    ͸ࣗಈઃఆ͞Ε·͢
  32. ϝΠϯΠϯελϯε robot message.robot ͰऔಘͰ͖·͢ ͍͍ͩͨͷ΋ͷ͸͔͜͜ΒḷΕΔ͸ͣ

  33. Ruboty::Robot ஻ΒͤΔʹ͸ Rubot#say ϝιου ! HandlerΛىಈ͢Δͷ͸ Rubot#receive ਖ਼نදݱ͕Ϛον͢Ε͹ॲཧ͕૸Δ

  34. Ͳ͏Ͱ΋͍͍͜ͱ adapterͷܾఆ ࠷ޙʹಡΈࠐ·Εͨ΋ͷʹͳΓ·͢

  35. ·ͱΊ Ruboty::Handlers::Base Λܧঝ͢Ε͹͍͍ lib/ruboty/handlers ͱ͔ࢀߟʹ͢Ε͹͍͍ ͋ͱ͸޷͖ͳ͜ͱΛ͢Ε͹͍͍ ! ʮ͍͢͝ʯͷ͸ lib/handlers ͋ͨΓʹͭͬ͜ΜͰ·͢

  36. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠