読者です 読者をやめる 読者になる 読者になる

スベリミナル効果

技術的なことを書こうと思ってたけど何でも書くことにします

技術的なことを書きたいんですけどね… 指摘・質問・罵倒コメントください…
ダジャレ好きの方はこちらにどうぞ→スベリブログ2.0

いまだChangeLogメモで工数集計しているという話

ChangeLogメモってイマドキのかたは使ってるんですかね?
私は5年くらい前に以下のようなサイト様を見て使い始め、まだまだ使っております。

ChangeLogメモの実践
clmemo@aka: Change Log メモを試してみよう

ChangeLogメモとは、以下のようにChangeLog形式でメモをとっていくものです。

2013-07-01 Wed. @hijili2 <hoge_fuga@noexist.com>

    * トラブル対応: Aさんエスカレ XXX案件
        - 原因調査 1h
        - 対応 30m

    * 実装 プロダクトA: モジュールB 3h
        - xxxでハマる、以下で解決
            $ hoge hoge

2013-06-30 Tue. @hijili2 <hoge_fuga@noexist.com>

    * 設計 プロダクトA: レビュー会 1h
        TODO: 確認する

    * トラブル対応: Cさんエスカレ
        - 原因調査 45m
            進行中のプロダクトAに影響するかも...


個人的にChangeLogメモは視認性がよくてマークダウンより好きです。

ただ、これだけだと、適当にインデント付ければChangeLogである必要無くない?
って話になるのですが、形式が決まっていることがポイントだと思っています。

先人の皆様もemacs-lisprubyなどで、ChangeLogメモ用のgrep
すなわちclgrepを作っており、私もそれをマネしだしてから、かなり重宝してます。

GitHub - hijili/clgrep: grep command for changelog memo
# 大したコードでは無いです、しかもPerl...

形式があれば何でもできる」と高名なプロレスラーの方も言うように、
ちょいちょい拡張できます。("元気"と"形式"をかけるのは無理があるな1スベリ)


まあ、普通に使おうと思ったらこんな感じです。
「この前 hogeコマンド使って解決したの何だっけ?」みたいなとき。
該当した1ブロックをgrepします。

$ clgrep hoge hoge.txt 
    * 実装 プロダクトA: モジュールB 3h
        - xxxでハマる、以下で解決
            $ hoge hoge


「プロダクトA関連の作業だけを一覧したい」みたいなときは
-tを使うと、タグ(と私が勝手に呼んでる部分)だけを対象にgrepします。

$ clgrep プロダクトA hoge.txt 
    * 実装 プロダクトA: モジュールB 3h
        - xxxでハマる、以下で解決
            $ hoge hoge

    * 設計 プロダクトA: レビュー会 1h
        TODO: 確認する

    * トラブル対応: Cさんエスカレ
        - 原因調査 45m
            進行中のプロダクトAに影響するかも...

$ clgrep -t プロダクトA hoge.txt 
    * 実装 プロダクトA: モジュールB 3h
        - xxxでハマる、以下で解決
            $ hoge hoge

    * 設計 プロダクトA: レビュー会 1h
        TODO: 確認する


そこそこちゃんと書くようになってきたので「このまま週報に載せてまえ」
と思い、日付昇順に並べてヘッダだけ出せるようにしてみたり。
また、その際、各行末の \d[mh] をパースして集計するようにしてみたり。

$ clgrep -r . hoge.txt 
2013-06-30 Tue. @hijili2 <hoge_fuga@noexist.com>
    * 設計 プロダクトA: レビュー会 60m
    * トラブル対応: Cさんエスカレ 45m
2013-07-01 Wed. @hijili2 <hoge_fuga@noexist.com>
    * トラブル対応: Aさんエスカレ XXX案件 90m
    * 実装 プロダクトA: モジュールB 180m


お約束の「工数見える化せい」的な話があれば、csvで吐けるようにしてみたり。

$ clgrep --csv . hoge.txt 
# tag,time(minute)
# TOTAL_TIME,375
トラブル対応,135
実装 プロダクトA,180
設計 プロダクトA,60


こんな感じで使っており、個人的には意外と便利だと思ってます。

ただ、結局の所は「いかにちゃんとメモを残せるか」が鍵なので、
そこが面倒で続かなくなりがちではあります…
# 本気で忙しい時は何も書かなくなります…

とはいえ、書くときは結構シンプルで、パースもしやすい一つの形だと思っております。
もしご興味あればお試しください。


では最後に「こんなChangeLogはChangeしろ」をお届けして終わります(は?)


2016-07-19 Tue. @hijili2 <hoge_fuga@noexist.com>

    * トラブル対応: お客様帰宅時間に間に合わず、明日再調査

    * 実装 プロダクトA: コードレビュー -> 指摘を受け再修正 4日遅れ

    * 出社: 9:15 電車遅延のため遅刻

2016-07-15 Fri. @hijili2 <hoge_fuga@noexist.com>

    * 実装 プロダクトA: 3日遅れ

    * 出社: 9:30 電車遅延のため遅刻


ChangeLogっていうか、遅延時ログだ。(リスケしろ2スベリ)



2016-07-20 Tue. @hijili2 <hoge_fuga@noexist.com>

    * トラブル対応: お客様が自己解決、追加調査不要とのこと

    * 実装 プロダクトA: 別プロジェクトとの兼ね合いでリスケ、納期1ヶ月延長

    * 出社: 9:45 遅刻かと思ったがシステム故障のため全員9:00扱いになった


ChangeLogっていうか、もはや珍事ログだ。(全てフィクションです3スベリ)




最後のが書きたくてこの記事を書いた気がするのはきっと気のせい。