⏱️

「何に時間を使ったかわからない」をなくす。WakaTimeで実現する、根拠ある工数管理

に公開

「この機能の実装、だいたい3日くらいで終わります」

そう宣言して着手したものの、蓋を開けてみれば5日かかってしまった。あるいは逆に、バッファを積んで見積もったつもりが、実際にはどこに時間を食ったのか自分でもよくわからないまま時間が過ぎていた。

エンジニアなら誰しも経験があることだと思います。

私たちが普段行っている「工数見積もり」は、多くの場合、過去の経験則という名の「肌感」に依存しています。
しかし、その肌感は本当に正しいのでしょうか。

今回は、エディタに導入するだけでプログラミング活動を自動計測してくれる WakaTime について、単なるログツールとしてではなく、エンジニアとしての自己認識をアップデートするためのツールとして紹介します。

ストップウォッチを押すのを忘れる私たちへ

時間の使い道を知るために、Togglなどのタイムトラッキングツールを試したことがある人は多いはずです。
しかし、多くの人が挫折する理由は明確です。

「作業の開始と終了のたびにボタンを押すのが面倒くさい」

「押し忘れたまま数時間が経過し、後から適当に入力してデータが形骸化する」

これでは意味がありません。開発作業はもっと流動的です。コーディング中に調べ物をし、Slackで仕様を確認し、ローカル環境を再構築する。
このシームレスな移動をすべて手動で記録するのは不可能です。

WakaTimeの最大の強みは、この計測コストがゼロ であることです。

VS CodeJetBrains系IDE、Vimなどのエディタにプラグインを入れるだけで、「実際にキーボードを叩いている時間」や「ファイルがアクティブになっている時間」 を自動で検知して記録してくれます。
ブラウザでYouTubeを見ている時間はカウントされません。
「純粋にコードと向き合っている時間」だけが可視化されます。

自分のスキルをデータで突きつけられる

WakaTimeを導入してしばらく経つと、ダッシュボードで残酷なほど正確な事実と向き合うことになります。

言語とプロジェクトの比率

どのプロジェクトの、どの言語にどれだけの時間を費やしたかが円グラフになります。

「今週はメインの機能実装(Go)を進めるつもりだったのに、実際は設定ファイル(YAML)やフロントエンドの微修正(TypeScript)に全体の4割も使っていた」といった事実が判明します。
これは「感覚」では気づけないズレです。

ファイル単位の粒度

個人的に最も価値があると感じているのが、ファイル単位での追跡です。
特定の UserController.tsstyles.css を編集していた時間が秒単位で記録されます。
これにより、「どのファイル(機能)が沼だったのか」 が特定できます。

特定の実装に時間がかかっていることがわかれば、それは単に作業が遅いのではなく、クラス設計が複雑すぎてメンテナンス性が落ちている兆候かもしれません。
リファクタリングの優先度を決める指標にもなり得ます。

「工数見積もり」が「予測」に変わる

WakaTimeを使い続ける最大のメリットは、見積もりの精度の向上です。

例えば、新しい管理画面のAPIを実装するとします。

以前なら「まあ2日くらいかな」と答えていたところが、WakaTimeのデータを見ることで変わります。

「前回の類似タスクでは、実装そのものは6時間だったが、テストコードと仕様確認のラリーを含めてトータル12時間かかっている。
今回も同じ規模感だから、バッファを含めて2.5日は確保すべきだ」

このように、根拠のある数字を出せるようになります。
クライアントやPMに対しても「なぜその時間が必要なのか」を、自分の能力不足ではなく実績ベースのデータ として説明できるようになるため、無理な納期設定を回避しやすくなります。

燃え尽き症候群の予兆を察知する

エンジニアは集中すると時間を忘れますが、パフォーマンスは確実に落ちていきます。

WakaTimeは日ごとのコーディング時間をグラフ化してくれるため、自分の限界ラインを把握するのにも役立ちます。
「1日のコーディング時間が6時間を超えると、翌日のパフォーマンスが著しく落ちる」といった自分の傾向を知っておくだけで、長期的なプロジェクトでのペース配分がうまくなります。

モチベーション維持の観点でも有効です。
GitHubのプロフィールにWakaTimeのステータスを表示させれば、「これだけ積み上げてきた」という実績が可視化され、学習や開発の継続を後押ししてくれます。

プランと導入のハードル

基本的には無料の Freeプラン で十分機能します。

https://wakatime.com/pricing

セキュリティとプライバシーへの懸念について

業務で利用する場合、コードの内容が送信されるのではないかという懸念があるかと思います。

WakaTimeがサーバーに送信するのは「ファイル名、プロジェクト名、言語、エディタ、タイムスタンプ」などのメタデータのみで、ソースコードの中身は送信されません。

それでもプロジェクト名が外部に出るのは困るという場合は、.[WakaTime](https://wakatime.com/)-project ファイルを使ってプロジェクト名を別名にマッピングしたり、.gitignore のように特定のファイルやフォルダを除外設定したりすることも可能です。このあたりはチームのセキュリティポリシーと照らし合わせて設定してください。

導入手順

手順は非常にシンプルです。

https://wakatime.com/plugins

  1. 公式サイトでアカウントを作成
  2. SettingsからAPI Key(Secret Key)をコピー
  3. 普段使っているエディタの拡張機能で「WakaTime」を検索してインストール
  4. エディタ再起動時、またはコマンドパレット等でAPI Keyを入力

これだけで、その瞬間から記録が始まります。
(IDEやエディタによってはログインするだけで設定完了するケースもあり)

おわりに

時間は管理できません。1日は誰にとっても24時間であり、過ぎ去った時間は戻りません。

私たちが管理できるのは「時間」ではなく、「自分の行動」 だけです。

WakaTimeは、エンジニアとしての自分の行動を鏡のように映し出してくれます。
その鏡を見て、髪を整えるのか、そのままにするのかは自分次第です。
しかし、鏡を見ないことには、自分がどんな姿で開発をしているのかを知る由もありません。

まずは2週間、自分の時間の使い方を記録してみることから始めてみてはいかがでしょうか。




想像していた「理想のエンジニア像」と「現実のログ」のギャップの中にこそ、成長のヒントが隠されているはずです。

Discussion