フロントエンドエンジニアの岡田です。 エンジニアは工数を出す機会が多いと思いますが、みなさんはどのようなツールを使っていますか?
私は数年前から、Togglというツールを使って計測しています。 仕事を始める前にはボタンをポチッと押し、終わったらポチッと止める。 Togglの前に使っていたツールを合わせると5年以上このスタイルで仕事をしているため、今ではすっかり習慣になっています。
ただ、手動での計測は、以下のデメリットがあります。
- 押し忘れたり、止め忘れることもたまにある
- 突然話しかけられた時など、切り替えるのが面倒
そこで自動で計測ができる、GTMというツールを導入し、使い慣れたTogglと結果を比較してみました。
Togglとは
作業の前後にボタンを押して計測する、手動のタイムトラッキングツールです。 toggl.com
ブラウザでログインをしてすぐに使えます。その他、デスクトップアプリ(Mac, Windows, Linux)やiOSアプリもあります。 デスクトップアプリでは、ポモドーロにも対応しています。
GTM(Git Time Metric)とは
Gitの履歴と、エディタに入れたプラグインを使って、自動でタイムトラッキングするツールです。
準備さえしてしまえば、あとはいつもどおりコーディングするだけで、自動的に時間を計測してくれます。
Git Time Metric by git-time-metric
GTM導入方法
インストール
Homebrewからインストールします。
brew tap git-time-metric/gtm brew install gtm
エディタプラグインのインストール
以下のエディタに対応しています。
- Sublime 3
- Atom
- Vim
- IntelliJ IDEA, PyCharm, WebStorm, AppCode, RubyMine, PhpStorm, AndroidStudio
- VSCode
- Terminal
それぞれのインストール方法は、公式ドキュメントに記載されています。
Atomの場合は以下のパッケージを入れます。
git-time-metric
※インストール後はAtomの再起動が必要です
初期化
プロジェクトごとに初期化します。
cd your/project/root gtm init
以上で設定は完了です。
あとは普段どおりにコードを書くだけです。
比較方法と集計手順
3/14 - 3/20の1週間で、夜行バス比較なびの各issueにかかった時間を集計しました。
Toggl
Web上のReports画面で期間を選ぶと、集計されます。 集計の単位は、clientとprojectが選べます。 現状は、clientには対応するサービスの名称(夜行バス比較なび、格安移動、等)、projectにはissue番号を入れています。
GTM
コマンドを打って出力します。
gtm report -format summary -from-date 2018-03-14 -to-date 2018-03-20
コミット毎に時間が出力されます。 今回は、issueごとに集計する必要があるため、この情報を使います。
なお、コミット毎の時間はわかるものの、issueをグルーピングする情報はコミットメッセージにつけた文字情報(issue番号)しかありません。 そのため、集計するためには文字列を解析する必要があります。 今回は、テキストエディタとGoogle スプレッドシートを駆使して手動で集計しました。
今回の集計では使いませんが、以下のコマンドを打つと、タイムライン形式で表示されます。
gtm report -format timeline-hours -from-date 2018-03-14 -to-date 2018-03-20
※ 印のついていない時間が多いですが、他のプロジェクトの仕事や開発以外の仕事をしている時間です。
集計結果
TogglとGTMの計測結果を表にまとめてみました。
ツール | issueA | issueB | issueC | issueD |
---|---|---|---|---|
Toggl | 11 | 428 | 574 | 71 |
GTM | 6 | 121 | 310 | 0 |
※単位:分
※小数点以下は切り捨て
結果にはかなり開きがあります。 GTMでは実際にコードを書いている時間しか計測できないため、以下のような時間が漏れているのだと思います。
- ミーティング、他のチームやメンバーとのやりとり
- 仕様確認や設計、ドキュメント作成
- テスト、コードレビュー等
良いところ・良くないところ
結果をふまえて、それぞれのツールの良いところと良くないところをまとめました。
Toggl
良いところ
- 準備が簡単。アカウントを作ればすぐに始められる
- 計測が正確(ただし押し忘れなければ)
- コードを書いていない時間も計測できる
- Reportがいろいろな形式で見やすく、集計しやすい
良くないところ
- 計測が手動(慣れないとボタンを押し忘れる)
GTM
良いところ
- 計測が自動(ボタンを押さなくて良い)
- タイムラインがおもしろい(Togglにもあるのかもしれないが見つけられず)
良くないところ
- プロジェクトよりも細かい単位では集計するのが大変。issueごとに集計する場合は、自分で加工が必要
- コーディング以外の時間が入らないため、短期間で見ると結構ずれがある
まとめ
今回は短期間(1週間)かつ細かい単位(issue単位)で比較してしまいましたが、GTMはこのパターンが苦手なようです。 もっと長い期間で大きな単位、例えば3ヶ月間でプロジェクトAとプロジェクトBにかけた時間の割合を比較する、といった用途ならGTMでも役に立ちそうです。
仕事に慣れるまでの方や、細かく記録したい方はTogglが向いていると思いますので、用途に合わせて使い分けるのが良さそうですね。