Slide 1

Slide 1 text

Bot開発でRubyを学ぶ 岡部 恭平 / Mynavi Corporation 
 2019.07.17 Otemachi.rb #19


Slide 2

Slide 2 text

IT戦略事業部 IT開発統括部 
 ITマネジメント2部 開発1課(マイナビニュース) 
 岡部恭平 @okabeeeat
 Webアプリケーションエンジニア


Slide 3

Slide 3 text

マイナビニュース

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

本題


Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

そうだ!
 Botを作ろう


Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

実装してみた(一部)

Slide 12

Slide 12 text

動かしてみた

Slide 13

Slide 13 text

Issueができた

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

参考 ● チャットボットフレームワーク 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

Slide 17

Slide 17 text

!?

Slide 18

Slide 18 text

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