0.2.0 • Published 8 years ago
nippo v0.2.0
nippo
Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ 〜 Problemが10分で解決するチャットを作ろう
個人的にこの分報を使い始めて、便利だと思いました。
しかし、分報をまとめて日報にしたい人も多いはずです。(おそらく)
確かにSlackにはアーカイブ機能がありますが、他のドキュメントツールと連携して日報を作れたなら、分報がより良いモノになる気がします。
またチャットツールはSlackだけではないし、分報は非エンジニアな人たちにも有効な手段だと思います。
ただ、管理者(上司)側の視点で考えれば、分報をまとめて日報に出来たらいいのではと僕は考えました。
そこで作ったのがこのnippo
です。
input(チャットツール)から、output(esa, qiita team等)に日報として、出力してくれるだけのツールです。
v0.2.0現在で対応しているサービスは以下のとおり。
- input
- slack
- output
- esa.io
- qiita team
使い方
まずはインストールしましょう。
$ npm install nippo
あとはjsをちょこっと書くだけ
var nippo = require("nippo")
var config = {
"output": {
"service": "esa",
"team": "your team name",
"token": "your token",
"category": "report/%year%/%month%"
},
"input": {
"service": "slack",
"token": "your token",
"channel": "report"
},
"formatter": {
"service": "default"
}
};
nippo(config, 1); // 1を指定することで、1日前の日報を作成します。
// ちなみにこんな事もできます
nippo(config, 1).then(function(outputResponse){
console.log(outputResponse);
});
QiitaTeamで使ってみる。
var nippo = require("nippo")
var config = {
"output": {
"service": "qiitateam",
"team": "hoge", // https://hoge.qiita.com
"token": "your token",
"category": "report/%year%/%month%"
},
"input": {
"service": "slack",
"token": "your token",
"channel": "report"
},
"formatter": {
"service": "default"
}
};
nippo(config, 1); // 1を指定することで、1日前の日報を作成します。
// ちなみにこんな事もできます
nippo(config, 1).then(function(outputResponse){
console.log(outputResponse);
});
日報に反映するときのフォーマットを変更する
esa.ioやqiita teamに投稿するドキュメントを加工することも可能です。
まずは適当なディレクトリにフォーマッターを用意します。
$ mkdir ./formatter
次にフォーマッターファイルを用意します。
vi ./formatter/my_formatter.js
function tsToTimeName(d) {
var hour = ( d.getHours() < 10 ) ? '0' + d.getHours() : d.getHours();
var min = ( d.getMinutes() < 10 ) ? '0' + d.getMinutes() : d.getMinutes();
var sec = ( d.getSeconds() < 10 ) ? '0' + d.getSeconds() : d.getSeconds();
return hour + ":" + min + ":" + sec
}
module.exports = function(messages) {
return messages.map(function(message){
var d = message.date;
var text = message.user.name + " 投稿時間 " + tsToTimeName(message.date) + "\n #メッセージ\n\n" + message.messages;
return text;
}).join("\n\n");
}
最後に、フォーマッターファイルの位置をしていします。
service
を先ほど作成したmy_formatter.js
にし、dir
でディレクトリを指定します。
var nippo = require("nippo");
nippo({
"output": {
"service": "esa",
"team": "polidog",
"token": "access token",
"category": "report/%year%/%month%"
},
"input": {
"service": "slack",
"token": "access token",
"channel": "report"
},
"formatter": {
"service": "my_formatter",
"dir": __dirname + "/formatter"
}
},1);
これでカスタムのフォーマッターを使うことが出来ます。
イメージ的なあれ
こんなSlackで投稿したものが
こんな風にまとめられます。
最後に
コードは糞コードですごめんなさい・・・ テストはこれから頑張って書きます。。