工数を集計するUserScript
概要
https://gyazo.com/85a597138637c9ee3a6731a2bd61f044
なぜ作ったか
自分のタスクをScrapboxにメモしてる
どれくらい作業がかかるかをざっくり見積もりたい
工数の計算楽したい
使い方
Scrapboxの自分のユーザページに下記のスクリプトを貼り付ける。
貼り付けると、Scrapbox内のテキストを選択したときに、「WorkTime」という選択項目が追加される。
それを選択すると、選択範囲の下に工数の和を追記する。
スクリプト
code:script.js
// 選択範囲の文字列から作業にかかる見積もり工数の数値のみを抽出し、
// 合計で何時間(&何人日)工数がかかるのかを計算して、選択範囲のすぐ下に追記する
scrapbox.PopupMenu.addButton({
title: 'WorkTime',
onClick: text => {
// テキストの行末に時間の数値文字列(\d+h)が含まれるかを判定する
const existsTimeInt = (line) => line.match(/.*\d+h\s*$/);
// 文字列から時間文字列の数値部分のみ取得する
const getTimeString = (line) => {
return line.replace(/.* (\d+)h\s*$/, function() { return arguments1 }); }
// 選択範囲の文字列から時間(H)を取得して合計を算出する
const t = text.split("\n")
.filter((line) => existsTimeInt(line))
.map((line) => getTimeString(line))
.map((line) => Number(line))
.reduce((x, y) => x + y);
// 時間(人日)
const ht = t / 8;
// 表示用文字列の生成 (見積もり/実績)
// なお実績は手入力することを想定する
const nt = text + "\n" +
" 見積もり\n" +
" " + t + " 時間\n" +
" " + ht + " 人日\n" +
" 実績\n" +
" ? 時間\n" +
" ? 人日";
return nt;
}
});
工数算出のための書式
行末に半角スペースをはさんで半角英数字+hと入力するだけ
ほげほげ 2hとかって感じ
行末に空白が残っていても大丈夫
分単位、少数の集計はできない
そこまで厳密な計算を僕がすることがない
サンプル
Project-α
hogeクラスの実装
テストコード実装 1h
ドキュメンテーションコメントの追加 1h
コミット、プッシュ 1h
foobar機能の追加
機能の詳細を詰める 3h
ドキュメント化 2h
レビュー依頼 2h
MTG 1h
その他
piyopiyo参考書の購入 1h
見積もり
12 時間
1.5 人日
実績
? 時間
? 人日
参考