Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bot開発でRubyを学ぶ / Learn Ruby with Bot Development
Search
bake0937
July 17, 2019
Programming
500
0
Share
Bot開発でRubyを学ぶ / Learn Ruby with Bot Development
2019.07.17 📅 Otemachi.rb #19
bake0937
July 17, 2019
More Decks by bake0937
See All by bake0937
デフォルト運用のCodeRabbit、1年で何が変わったか / How CodeRabbit Changed Our Code Review in 1 Year
bake0937
1
110
GASを使って非エンジニアが AWS Step Functions を 操作できる仕組みの紹介 / Introducing how non-engineers can operate AWS Step Functions using GAS
bake0937
1
500
CircleCI の有料プランを導入するためにやったこと/What I did to introduce CircleCI's paid plan
bake0937
0
1.8k
FlutterアプリのiOSビルドとアーカイブを CircleCI で自動化してみた / Tried automating the iOS build and archive of the Flutter app with CircleCI
bake0937
0
1.3k
Probot で学ぶ TypeScript / Learn with Probot TypeScript
bake0937
0
210
Amazon ECR を利用していたと思ったら、Docker Hub を利用し続けていた / If I thought I was using Amazon ECR, I continued to use Docker Hub
bake0937
0
1k
Jest + Puppeteer によるE2Eテストで確認作業を短縮してみた / End-to-end testing by Jest + Puppeteer shortened the confirmation work
bake0937
0
730
所属企業の Advent Calendar を初めて作った時に学んだこと / What I learned when I first created my company's Advent Calendar
bake0937
1
870
Notion 📚 へ移行して 3ヶ月経った振り返り / Looking back at Notion after 3 months
bake0937
0
6k
Other Decks in Programming
See All in Programming
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.1k
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
240
今さら聞けないCancellationToken
htkym
0
200
AIエージェントの隔離技術の徹底比較
kawayu
0
430
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
130
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
1
520
Sans tests, vos agents ne sont pas fiables
nabondance
0
160
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
290
Are We Really Coding 10× Faster with AI?
kohzas
0
230
TSKaigi 2026 TypeScriptバックエンドのオブザーバビリティ戦略 — Datadog × NestJSの実践
taiseiyamamotoan
1
190
GitHub Copilot CLIのいいところ
htkym
2
1.1k
RTSPクライアントを自作してみた話
simotin13
0
200
Featured
See All Featured
It's Worth the Effort
3n
188
29k
Building Applications with DynamoDB
mza
96
7k
Marketing to machines
jonoalderson
1
5.3k
The Curse of the Amulet
leimatthew05
1
12k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Speed Design
sergeychernyshev
33
1.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Navigating Weather and Climate Data
rabernat
0
200
Transcript
Bot開発でRubyを学ぶ 岡部 恭平 / Mynavi Corporation 2019.07.17 Otemachi.rb #19
IT戦略事業部 IT開発統括部 ITマネジメント2部 開発1課(マイナビニュース) 岡部恭平 @okabeeeat Webアプリケーションエンジニア
マイナビニュース
マイナビニュースを支える技術
本題
最近の悩み 個人的な悩み • 普段、業務で Rails を書いている • Ruby は確かに書いてはいるが、あくまでレールに乗った上で書いているためRuby 自体を使いこなせてるか不安になる時がある
• 急に独自のクラスやモジュールを書くぞ!ってなった時に焦る 業務でのちょっとした悩み • GitHub の Issue 作成など画面でポチポチする系の作業が面倒だと感じる時があ る
そうだ! Botを作ろう
選定したBotフレームワーク • Ruboty ◦ https://github.com/r7kamura/ruboty ◦ カスタマイズ性が高い ◦ 国産で導入事例やナレッジ、様々なプラグインがある •
タイミングを見て Lita でも Bot を作って検証してみたい ◦ Lita: https://github.com/litaio/lita
導入はこんなに簡単 ① Bot の追加と API トークンを取得 ② Ruboty のインストールと起動 ③確認
作ったBot なぜなぜベア • マイナビベアが Slack 上で GitHub の Issue 名を「なぜなぜ分析※1」し、
Issue を磨いてくれ る Bot • マイナビベアはユーザに対して「なぜなぜ」を 5回繰り返す • マイナビベアは 5回目の「なぜなぜ」で GitHub の Issue を作成する ◦ Octokit.rb で GitHub API を実行し Issue を作成する ◦ https://github.com/octokit/octokit.rb • まずは最低限の機能のみを実装する ※1 イシューからはじめよ ― 知的生産の「シンプルな本質」 第一章より
実装してみた(一部)
動かしてみた
Issueができた
Botを作ってみて • 久しぶりに「 Rails から離れた Ruby 」が書けた ◦ Rails が偉大なフレームワークであることを再認識した
◦ あれ? 結局フレームワークに縛られてる !? ▪ Bot フレームワーク無しで作ってみたら更に勉強になりそう ▪ ディレクトリ構成の検討、クラス・モジュールの設計・実装 ...色々勉強になりそう! • 以下のようなモチベーションを得た →オリジナルサービス開発していた時のように Bot に愛着が湧く → Bot に色んな機能を実装したい → Ruby をもっと勉強したい → Ruby 書くのが楽しい!! • Octokit.rb が驚くほど便利だった • 今回のような要領で Gem 作りもやれば良いのでは ? という気づきを得た
今後 • 業務で使えるレベルの品質にする ◦ 例外処理の追加 ◦ リファクタリング • 普段の業務が楽になる機能をドンドン追加する •
AWS や Heroku にデプロイしてみる
参考 • チャットボットフレームワーク 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
!?
We're Hiring!!! https://www.wantedly.com/projects/301633 https://www.wantedly.com/projects/325946 エンジニア 開発ディレクター