generated at
工数を集計するUserScript
概要
工数を集計するScrapboxUserScriptを作ってみた。

なぜ作ったか
自分のタスクをScrapboxにメモしてる
どれくらい作業がかかるかをざっくり見積もりたい
工数の計算楽したい

使い方
Scrapboxの自分のユーザページに下記のスクリプトを貼り付ける。
貼り付けると、Scrapbox内のテキストを選択したときに、「WorkTime」という選択項目が追加される。
それを選択すると、選択範囲の下に工数の和を追記する。

スクリプト
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 arguments[1] }); } // 選択範囲の文字列から時間(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" + " 見積もり\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 人日
実績
? 時間
? 人日

参考