広告の限界を超える|セールス
広告の限界を超える|セールス
2018.01.29
#122
それいけ!フロントエンド

タイムトラッキングにGITを活用!GTMで正確な見積りをしよう

ほりでー

こんにちは。フロントエンドエンジニアのほりでーです。みなさんは「タイムトラッキング」という言葉を聞いたことがあるでしょうか?

どんなプロジェクトにおいても、ある作業が一体どれくらいで完了するかを見積もるには、勘で推測するか、過去の実績に基いて推測するかしかありません。

勘による推測は根拠が曖昧なので、当然ながら精度は非常に低くなります。しかし、過去の実績に基いて見積もるためには、作業実績をあらかじめ記録しておかなければいけません。

この実績データを日頃から用意しておくのはかなり面倒です。マメな人であれば自分の作業時間を逐一メモしたり、専用のツールを使って記録している場合もあります。しかし、タイマーの停止を忘れてしまったり、途中で別のタスクが入って区切りがよく分からなくなったりということもよくあります。

そこでおすすめしたいのがGTMです。GTMは「Git Time Metric」の名の通り、GITの操作履歴から自動的にタイムトラッキングをしてくれるとても便利なツールなのです!

GTMを使って管理されているプロジェクトでは、作業履歴に基いてこのような情報を表示できます。1つ1つのコミットに対してどれくらいの作業を行ったのかが一目瞭然です。

gtm report -format summary -from-date 2017-06-28 -to-date 2017-06-29

Wed Jun 28
       10m  0s Replace draft text [project]
        7m  0s Remove unused template  [project]
    2h 32m 28s Set correct link destinations [project]
    3h 16m 32s Add meta.json [project]
    6h  6m  0s

また、期間を指定してグラフに出力することもできます。

これらの機能は、一度GTMを初期化すれば自動的に集計されます。とても便利ですね。

GTMの仕組みと制約

GTMは、GITのコミット履歴とGTMプラグインに対応するエディタの操作履歴に基いてタイムトラッキングを行います。この関係上、以下のような制約があります。

  • タイムトラッキングの対象が、GTMが対応するテキストエディタやIDEを介した作業であること
  • 使いたいテキストエディタやIDEにGTMプラグインがインストールされていること
  • プロジェクトがGITを使ってコード管理されていること
  • プロジェクトごとに、GTMの初期化が行われていること

そのため、残念ながらGTMを使わずに作業したプロジェクトについて、後からタイムトラッキング情報を取得することはできません。

また、テキストエディタが絡まないグラフィックツールやオフィス系アプリケーションの作業は、たとえGITを使っていたとしてもタイムトラッキングができません。純粋にテキストエディタを使う人のためのタイムトラッキングツールとなります。

その代わり、タイムトラッキング情報は実際にエディタを操作した時間に基いて集計されるため、自動集計にも関わらず精度が高いと言えるでしょう。単純にコミットの合間を集計している訳ではないのですね!

GTMのインストール

GTMの導入には、コマンドラインツールのインストールと、エディタへのプラグインのインストールの両方が必要です。

コマンドラインツールの導入

Homebrewから簡単にインストールが可能です。

brew tap git-time-metric/gtm
brew install gtm

エディタプラグインの導入

2017年10月時点で、GTMが対応しているエディタは以下の通りです。

  • Atom
  • Sublime Text 3
  • Vim
  • JetBrains系のIDE
  • VSCode
  • ターミナル

今回はIntelliJIDEAでの導入方法を紹介します。

(他のエディタの場合は公式のREADMEを参照してください。)

といっても手順は簡単で、プラグインリポジトリからGTMプラグインを探してインストールするだけです。

IntelliJIDEAのプラグインリポジトリ画面です。

GTMの初期化

GTMは、GITと同様にプロジェクトのルートディレクトリ上で初期化が必要となります。git initと同じタイミングで行ってOKです。

cd your/project/root
git init
gtm init

gtm initを実行すると.gtm/という隠しディレクトリが作成されます。この中にはGTMプラグインが作成するエディタの操作履歴が格納されます。また、自動的に.gitignore.gtm/の記述が追記されるようになっています。

GTMを使う

プラグインの導入とGTMの初期化をさせておけば、GTMの存在を意識する必要はありません。特別なコマンドを入力せずとも、裏側であなたの作業をタイムトラッキングしてくれます!

GTMの集計ログを見る

GTMの集計ログはコマンドラインから呼び出します。たとえば今日の作業履歴を見るには次のコマンドを入力します。

gtm report -today -format summary

作業履歴の範囲を指定するには-from-dateto-dateオプションを指定します。

gtm report -from-date 2017-09-01 -to-date 2017-10-01

集計の表示方法にはいくつかのタイプがあり-formatオプションから指定できます。

  • -format commits コミットごとに作業時間を表示
  • -format files ファイルごとの合計作業時間を表示
  • -format summary 1日ごとの合計作業時間を表示
  • -format timeline-hours 時間ベースのグラフで表示
  • -format timeline-commits コミットベースのグラフで表示

RedmineやBacklogの時間記録と組み合わせる

GTMのログはそのままだとエンジニアにしか集計ができないので、コミットをチケット単位で行い、該当するチケットへ適当なタイミングでGTMの集計を書き写すと便利です。始めからチケット単位でのコミットをこころがけていれば簡単ですね!

Redmineの時間を記録機能のスクリーンショットです。

チケットに正確な作業時間が蓄積されていけば、過去の実績を元に新しい作業の見積りをするのもかなり楽になります。

エンジニアに最適なタイムトラッキングツール

このように、GTMを導入するとタイムトラッキングが簡単に行えたいへん便利です。集計したデータを元に、徐々に正確な見積りをできるようにしていきたいですね!

j a v a