Slide 1

Slide 1 text

H u b o t x C h a t O p s # 2 bouzuya 0

Slide 2

Slide 2 text

ぼくのこと

Slide 3

Slide 3 text

b o u z u y a twitter.com/bouzuya github.com/bouzuya

Slide 4

Slide 4 text

おぼえかた ( 神戸|FaithCreates Inc.|RALLY|Hubot) の bouzuya 「 ぼうず」 だから bouzuya

Slide 5

Slide 5 text

はなすこと

Slide 6

Slide 6 text

1. ふりかえる 2. シンプルに 3. いろいろ

Slide 7

Slide 7 text

1 . ふりかえる

Slide 8

Slide 8 text

前回の発表 『 』 Hubot x ChatOps #1 (2014-11-22) https://speakerdeck.com/bouzuya/hubot-x-chatops-number-1-2014-11-22

Slide 9

Slide 9 text

『 1 日 1 Hubot スクリプト』

Slide 10

Slide 10 text

そんなのもあったね ( 懐古)

Slide 11

Slide 11 text

ルー ル 1 日 1 個 Hubot スクリプトをつくる

Slide 12

Slide 12 text

結果 発表時点: 130 個 終了時点: 171 個

Slide 13

Slide 13 text

がんばった

Slide 14

Slide 14 text

1 日 1 Hubot スクリプトのアー カイブ hspd-app.herokuapp.com

Slide 15

Slide 15 text

Q. で、 いまは?

Slide 16

Slide 16 text

A. つくってない

Slide 17

Slide 17 text

数じゃないんだよ! 数じゃ ( 言い訳)

Slide 18

Slide 18 text

Hubot 自体も更新されなかったし ( 言い訳)

Slide 19

Slide 19 text

結論: 話題がない ( 絶望)

Slide 20

Slide 20 text

20 分もしゃべれないよ……

Slide 21

Slide 21 text

業務で普通に使っています チケットの操作 Pull Request のマー ジ 本番サー バー を含めたデプロイ 日報の生成 → 質問は受け付けます

Slide 22

Slide 22 text

最近は ひとつの機能 (Hubot スクリプト) の Hubot をつくることが多い

Slide 23

Slide 23 text

『 単機能 Hubot』

Slide 24

Slide 24 text

まとめると…… 1 日 1 Hubot スクリプト ( 懐古) この場で話すことがない ( 言い訳)

Slide 25

Slide 25 text

ここまでで 5 分 ( 予定)

Slide 26

Slide 26 text

2 . シンプルに

Slide 27

Slide 27 text

Q. こんな人みたことありませんか?

Slide 28

Slide 28 text

「 Hubot が育ってきた :+1: 」

Slide 29

Slide 29 text

Q. こんな人みたことありませんか?

Slide 30

Slide 30 text

「 うちのはこんな機能もある ( ドヤァ)」

Slide 31

Slide 31 text

楽しそうですね

Slide 32

Slide 32 text

ぼくの疑問

Slide 33

Slide 33 text

Hubot 育てる = Hubot スクリプトを増やす ? 多機能な Hubot = すごい?

Slide 34

Slide 34 text

そうとも言い切れない

Slide 35

Slide 35 text

たちむかいたい 単機能 Hubot で

Slide 36

Slide 36 text

単機能 Hubot のメリットは?

Slide 37

Slide 37 text

Q. こんな Hubot みたことありませんか?

Slide 38

Slide 38 text

あなた「 あのコマンドなんだっけ?」

Slide 39

Slide 39 text

@ h u b o t h e l p

Slide 40

Slide 40 text

ヘルプの全件表示が地獄化

Slide 41

Slide 41 text

Q. こんな Hubot みたことありませんか?

Slide 42

Slide 42 text

あなた「 監視結果をグラフで見たいな」

Slide 43

Slide 43 text

@ h u b o t d a t a d o g g r a p h c o n f i g a d d s u s h i s y s t e m . l o a d . 1 { * }

Slide 44

Slide 44 text

コマンドが異常に長い

Slide 45

Slide 45 text

Q. こんな Hubot みたことありませんか?

Slide 46

Slide 46 text

Hubot「 マー ジされました」 Hubot「 チケットが登録されたでござる」 Hubot「 お昼の時間やで!」 Hubot「 画像を取ってきたよ」 Hubot「 テスト書いてないとかお前それ @t_wada の前でも同じこと言えんの?」

Slide 47

Slide 47 text

口調が統一されていない

Slide 48

Slide 48 text

楽しそうですね ( 皮肉)

Slide 49

Slide 49 text

原因

Slide 50

Slide 50 text

コマンド( 機能) が多い

Slide 51

Slide 51 text

コマンドが多い ↓ コマンド名を忘れる & ヘルプが地獄 衝突回避のためコマンドが長い コマンド間の整合性が取れなくなる

Slide 52

Slide 52 text

だから単機能

Slide 53

Slide 53 text

単機能 Hubot のメリット コマンド数を少なくできる コマンド名を短くできる コマンド間の応答を統一できる

Slide 54

Slide 54 text

例: FaithCreates Inc. の Meowbot

Slide 55

Slide 55 text

社内の音楽再生 (meowziq) を操作する機能 のみ = 単機能 Hubot

Slide 56

Slide 56 text

Meowbot の場合

Slide 57

Slide 57 text

@ m e o w b o t h e l p

Slide 58

Slide 58 text

現実的な量のヘルプ

Slide 59

Slide 59 text

@ m e o w b o t s t a t u s

Slide 60

Slide 60 text

コマンド名が短くても曖昧にならない

Slide 61

Slide 61 text

マンメンミ! ( ナイス)

Slide 62

Slide 62 text

単機能 Hubot 向けのテクニック

Slide 63

Slide 63 text

衝突回避部分の省略オプションをつける 他のコマンドがなければ省略できる 例: @ h u b o t [ m e o w z i q ] p l a y H U B O T _ M E O W Z I Q _ M E O W B O T 単機能 Hubot に限らず有効 p r e f i x = i f c o n f i g . m e o w b o t ' ' e l s e ' m e o w z i q ' p a t t e r n = n e w R e g E x p " # { p r e f i x } p l a y " r o b o t . r e s p o n d p a t t e r n , ( r e s ) - >

Slide 64

Slide 64 text

別パッケー ジにしなくていい…… かも BOT 固有でスクリプトの再利用が不要なら s r c / s c r i p t s や s c r i p t s に配置する hubot-meowziq はそこまではしていない

Slide 65

Slide 65 text

口調を統一 BOT になりきる ( 適当)

Slide 66

Slide 66 text

参考 bouzuya/hubot-meowziq https://github.com/bouzuya/hubot-meowziq

Slide 67

Slide 67 text

まとめると Hubot は多機能にしなくてもいい Hubot を単機能にするのもいい 単機能 Hubot に最適化しよう

Slide 68

Slide 68 text

ここまでで 12 分

Slide 69

Slide 69 text

3 . いろいろ

Slide 70

Slide 70 text

半分くらい尺があまったので雑多な話

Slide 71

Slide 71 text

挙がりそうな質問を先につぶす

Slide 72

Slide 72 text

Q. @ h u b o t h e l p < q u e r y > でしぼれば? A. まあ、 そうですよね

Slide 73

Slide 73 text

Q. BOT が増えすぎないですか? A. 実際には数個しかつくらないと思う 部屋 ( チャンネル) のヌシになると思う BOT 管理 BOT をつくればいい ( 適当)

Slide 74

Slide 74 text

ホストするの大変じゃないですか? 大変 気づかぬうちに落ちている 監視つければいいけど面倒

Slide 75

Slide 75 text

Q. そもそも単機能のほうが多くないですか? A. ( この展開も) ありえる 皆さんどれくらい Hubot スクリプトを追加し てますかね?

Slide 76

Slide 76 text

まだ 5 分くらい尺が余ってそうなので 「 あるある」 を挙げる

Slide 77

Slide 77 text

Hubot の読みかたが分からない 公式の回答で「 ヒュー ボット」 だよ! よ そのへん考慮しているのかカタカナだよ! Qiita にも書いた http://qiita.com/bouzuya/items/cb1102a906ae5d47b5f8

Slide 78

Slide 78 text

CoffeeScript がつらい JavaScript でも動くから好きな AltJS で bouzuya のはほとんど JavaScript だよ CoffeeScript で書いてコンパイル Hubot の CoffeeScript のバー ジョンが 1.6.3 なので Ruby なら Lita / Ruboty とか もう自作でいいんじゃないかな

Slide 79

Slide 79 text

Yeoman (y o h u b o t ) が( 要る| 動かない) よ Advent Clendar 時点で既に…… 別になくてもつくれるよ シェルスクリプトでもいけるよ よ Qiita にも書いた http://qiita.com/bouzuya/items/3346c2e8acba73bcfe64

Slide 80

Slide 80 text

brain が消える 仕様 ありすぎて困る brain を信用すべきでない hubot-auth の権限が消し飛ぶのが最低 brain 代替 package 待ち ( 他力本願)

Slide 81

Slide 81 text

ひとりで Hubot スクリプトを書いている ぼくに教えてほしい

Slide 82

Slide 82 text

プレゼンよりスプラトゥー ンが優先される ぼくだけですか? ( 帰ってフェスランク上げたい)

Slide 83

Slide 83 text

おしまい