0.2.0 • Published 8 years ago

nippo v0.2.0

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

nippo

Slackで簡単に「日報」ならぬ「分報」をチームで実現する3ステップ 〜 Problemが10分で解決するチャットを作ろう

個人的にこの分報を使い始めて、便利だと思いました。
しかし、分報をまとめて日報にしたい人も多いはずです。(おそらく)

確かにSlackにはアーカイブ機能がありますが、他のドキュメントツールと連携して日報を作れたなら、分報がより良いモノになる気がします。

またチャットツールはSlackだけではないし、分報は非エンジニアな人たちにも有効な手段だと思います。
ただ、管理者(上司)側の視点で考えれば、分報をまとめて日報に出来たらいいのではと僕は考えました。

そこで作ったのがこのnippoです。

input(チャットツール)から、output(esa, qiita team等)に日報として、出力してくれるだけのツールです。

v0.2.0現在で対応しているサービスは以下のとおり。

使い方

まずはインストールしましょう。

$ 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で投稿したものが

slack

こんな風にまとめられます。

esa

qiita

最後に

コードは糞コードですごめんなさい・・・ テストはこれから頑張って書きます。。