Edited at
ChatOpsDay 18

DashでChatOpsのコマンド入力の速度と正確性を上げる

More than 3 years have passed since last update.

この記事は ChatOps Advent Calendar 2015 の18日目です。

前日は @hiconyan さんの Botkit + ImgurでプルリクにLGTMする でした。


概要

DashでChatOpsのコマンド入力の速度と正確性を上げる方法をご紹介します。


ChatBotのコマンド入力

Slack, Hubotの登場によりChatOpsを導入する現場が増えてきたのではないでしょうか?

ところでみなさん、ChatBotのコマンド入力ってどうしてますか?

手入力でしょうか?

手の温もりたっぷりでしょうか?

ChatOpsを取り入れているみなさんはおそらく普段ゴリゴリとプログラムを書いている方が多いと思います。

プログラミング時のようにコード補完をしながらサクサクと書きたくありませんか?

怠惰・短気を発揮したくありませんか?

そこで OS X 限定ではありますが API Document Browser として有名な Dash 1

Snippet 機能を活用してみたいと思います。


サンプルの前提

個人的に SlackRuboty 2 を利用しているのでこのふたつを前提とします。

もちろん考え方は他のチャットツールやチャットボットでも流用できます。


サンプル1: ruboty-cron

手入力による設定の面倒さの代表格 ruboty-cron を扱ってみます。

(設定頻度が多くないので手入力でも問題ないPluginですけどね。見た目に差が分かりやすいのでサンプルに選びました。)

例えば、通常 ruboty-cron 3 に job を追加するには以下の様なコマンドを手入力するか

既存コマンドを探してコピーして一部を変更する必要があります。


手入力の例

平日朝9時半にボットに挨拶してもらう設定です。

@bot-name "30 9 * * 1-5" @bot-name echo おはよう

manual_ruboty.gif


Snippetを登録

dash_snippet_ruboty_add_job.png

項目
設定内容
意味

Abbreviation
bot_add_job;;
スニペット呼び出しのキーとなる略語

Body
@__bot-name__ add job "__minutes__ __hour__ __month__ __year__ __week__" __job__
スニペット本体 __placeholder__ でプレースホルダーになる

Syntax
None
文法。RubotyはSyntaxが用意されていないので None に設定

Tag
Ruboty
スニペットの分類を管理するためのTag


Snippetを利用して登録


  • インクリメンタル検索で探すパターン

snippet_ruboty.gif


  • 直接入力のパターン

※この場合、 Abbreviation を暗記しておく必要があります

snippet_ruboty_direct.gif


まとめ

ChatOpsを導入しているチームは、かなりの頻度でチャットを行い


Botを利用していると思います。

Snippetによるメリットと


  • 正確さ

  • すばやさ

  • 人数が増えるほど資産の共有価値が上がる

Snippet導入によるデメリット


  • DashによるSnippet活用の導入コスト

  • Snippetの作成コスト

  • Snippetの保守コスト

これらを対比して導入するかどうか?

後続レポートなどを期待してます。


おまけ


DashのSnippet管理

DashのSnippetはGUIの登録フォームしか用意されていません。一括Importなどもありません。


ただ、DashのSnippetのデータはSQLiteで管理されているため以下のようにDBを直接操作することが可能です。

いちいちSQLを実行するのは面倒なのでSnippetをtomlファイルで管理して 3

一括で更新できるツールを作りました。

よろしければご利用ください。

(自分の開発効率の都合上Rubyで作ってます。利用にはRuby環境が必要です。)


DashのSnippet活用

Snippetといえば、エディタやIDEに組み込まれているケースが多いと思います。

Dashの場合、エディタ・IDEの外部でSnippetを管理できるのでチームメンバーのエディタ・IDE

がバラバラでもSnippetを共有できます。

ただ、エディタ組み込みのSnippetを使うよりは若干使いにくさが残るかもしれません。

あなたはどちらをとりますか?


RubotyのSnippet

以下に個人的に作成したSnippetを公開しています。

./ruboty 配下に Ruboty 関連の Snippet をおいてあります。

toml形式で提供しているのでインストールするには上記のSnippet管理ツールを利用する必要がありますが、

よろしければご利用ください。


リスク

dash_ruboty_miss.png

コマンドをミスった時に発動する雑談APIの思いがけないレスポンスを楽しんでいた方は、

その体験が失われてしまうかも。


明日の担当

ChatOps Advent Calendar 2015 の19日目の担当はpapixさんです!


外部資料


引用