$30 off During Our Annual Pro Sale. View Details »

Bot開発でRubyを学ぶ / Learn Ruby with Bot Development

Bot開発でRubyを学ぶ / Learn Ruby with Bot Development

2019.07.17 📅 Otemachi.rb #19 


bake0937

July 17, 2019
Tweet

More Decks by bake0937

Other Decks in Programming

Transcript

  1. Bot開発でRubyを学ぶ
    岡部 恭平 / Mynavi Corporation 

    2019.07.17 Otemachi.rb #19


    View Slide

  2. IT戦略事業部 IT開発統括部 

    ITマネジメント2部 開発1課(マイナビニュース) 

    岡部恭平 @okabeeeat

    Webアプリケーションエンジニア


    View Slide

  3. マイナビニュース

    View Slide

  4. マイナビニュースを支える技術

    View Slide

  5. 本題


    View Slide

  6. 最近の悩み
    個人的な悩み
    ● 普段、業務で Rails を書いている
    ● Ruby は確かに書いてはいるが、あくまでレールに乗った上で書いているためRuby
    自体を使いこなせてるか不安になる時がある
    ● 急に独自のクラスやモジュールを書くぞ!ってなった時に焦る
    業務でのちょっとした悩み
    ● GitHub の Issue 作成など画面でポチポチする系の作業が面倒だと感じる時があ

    View Slide

  7. そうだ!

    Botを作ろう


    View Slide

  8. 選定したBotフレームワーク
    ● Ruboty
    ○ https://github.com/r7kamura/ruboty
    ○ カスタマイズ性が高い
    ○ 国産で導入事例やナレッジ、様々なプラグインがある
    ● タイミングを見て Lita でも Bot を作って検証してみたい
    ○ Lita: https://github.com/litaio/lita

    View Slide

  9. 導入はこんなに簡単
    ① Bot の追加と API トークンを取得 ② Ruboty のインストールと起動
    ③確認

    View Slide

  10. 作ったBot
    なぜなぜベア
    ● マイナビベアが Slack 上で GitHub の Issue 名を「なぜなぜ分析※1」し、 Issue を磨いてくれ
    る Bot
    ● マイナビベアはユーザに対して「なぜなぜ」を 5回繰り返す
    ● マイナビベアは 5回目の「なぜなぜ」で GitHub の Issue を作成する
    ○ Octokit.rb で GitHub API を実行し Issue を作成する
    ○ https://github.com/octokit/octokit.rb
    ● まずは最低限の機能のみを実装する
    ※1 イシューからはじめよ ― 知的生産の「シンプルな本質」 第一章より

    View Slide

  11. 実装してみた(一部)

    View Slide

  12. 動かしてみた

    View Slide

  13. Issueができた

    View Slide

  14. Botを作ってみて
    ● 久しぶりに「 Rails から離れた Ruby 」が書けた
    ○ Rails が偉大なフレームワークであることを再認識した
    ○ あれ? 結局フレームワークに縛られてる !?
    ■ Bot フレームワーク無しで作ってみたら更に勉強になりそう
    ■ ディレクトリ構成の検討、クラス・モジュールの設計・実装
    ...色々勉強になりそう!
    ● 以下のようなモチベーションを得た
    →オリジナルサービス開発していた時のように Bot に愛着が湧く
    → Bot に色んな機能を実装したい
    → Ruby をもっと勉強したい
    → Ruby 書くのが楽しい!!
    ● Octokit.rb が驚くほど便利だった
    ● 今回のような要領で Gem 作りもやれば良いのでは ? という気づきを得た

    View Slide

  15. 今後
    ● 業務で使えるレベルの品質にする
    ○ 例外処理の追加
    ○ リファクタリング
    ● 普段の業務が楽になる機能をドンドン追加する
    ● AWS や Heroku にデプロイしてみる

    View Slide

  16. 参考
    ● チャットボットフレームワーク Ruboty を振り返る
    ○ https://medium.com/@r7kamura/%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%9C%E3%83%83%E
    3%83%88%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-ruboty-%
    E3%82%92%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8B-be95e56d2400
    ● 5分でできるRubotyのインストールとプラグインチュートリアル
    ○ https://48n.jp/blog/2016/07/29/first-step-ruboty/
    ● Botsインテグレーションを使って手軽にRubotyをSlackで動かす
    ○ https://48n.jp/blog/2016/08/02/ruboty-and-slack/
    ● Ruboty | Brain ボットの脳にデータを記憶 #ruboty #chatops
    ○ https://qiita.com/tbpgr/items/74027b2aa3d6a6a575a7
    ● Octokit で GitHub の Issue を作成する
    ○ http://tbpgr.hatenablog.com/entry/2016/12/09/234718

    View Slide

  17. !?

    View Slide

  18. We're Hiring!!!
    https://www.wantedly.com/projects/301633 https://www.wantedly.com/projects/325946
    エンジニア 開発ディレクター

    View Slide