見出し画像

#11 タイムトラッキングツール比較 「ActivityWatch vs. Quality-Time」 その1

 ActivityWatchは自動記録タイプのタイムトラッキングツールです。自動記録タイプのトラッキングツールは商用のものが多いのですが、ActivityWatchは無料で使えるOSSのです。2016年ごろから世界的に広く使われており、実績のあるタイムトラッキングツールの一つです。

https://activitywatch.net

 これに対し、Quality-Timeは私が作ったOSSのトラッキングツールで、今年の1月にVersion1.0をリリースしました。7月にQuality-Work Version2.0をリリースして機能も少し増えましたし、自分では結構良いんじゃないかと思っているのですが、まだほとんど知られていません。Quality-Timeを知ってもらうためにも、ここでActivityWatchとQuality-Timeの比較をしてみようと思います。

サポートするプラットフォームが多いActivityWatch

以下は、サポートするプラットフォームの比較表です。

\begin{array}{|c|c|c|c|c|c|} \hline  & \text{Windows} & \text{MacOS} & \text{Linux} & \text{Android} & \text{iOS} \\ \hline \text{ActivityWatch} & ○ & ○ & ○ & ○ & -\\ \hline \text{Quality-Work} & ○ & ○ & - & - & - \\ \hline \end{array}

 ActivityWatchは、iOSを除く4つのプラットフォームをサポートしています。
iOSについてはウインドウの情報を取得するためのAPIが公開されておらず、そもそも情報が得られないので、対象外になっています。

 Quality-Timeは、WindowsとMac OSをサポートしています。想定している使われ方が、オフィスワーカーやフリーランスの方などのお仕事の時間分析なので、とりあえずPC端末のOSをサポートしています。少しコードを(Xウインドウのウインドウの情報を取得する部分を)を付け加えればLinuxでも動くのだろうと思いますが、試してはいません。

基本的な機能は同じ

ActivityWatcherもQuality-Timeも基本となる機能はほぼ同じです。

ウインドウに関するデータの収集

 双方とも、PC端末などの画面で何らかのウインドウがアクティブになるごとに「ウインドウを表示しているアプリケーション名」「ウインドウタイトル」「ウインドウがアクティブになった時刻」「アクティブでなくなるまでの経過時間」を収集します。ActivityWatcherではこれを「イベント」と呼び、Quality-Timeでは「アクティビティ」と呼んでいます。また、キーボードやマウスからの入力を監視し、一定時間入力がないと、「端末から離れていた時間」とみなすのも同じです。

 少し違うのは、Quality-Timeではキーボードやマウスからの入力数もウインドウの情報と一緒に記録していることです。(これはActivityWatchの機能にはありませんが、別途aw-watcher-inputというモジュールをインストールすればキーボードやマウスからの入力を記録することができます。)

データの表示

 細かい機能や見た目は違いますが、収集したデータを使って表示を行う機能も、大体同じです。

記録のリスト

画像
ActivityWatchのイベントリスト
画像
Quality-Workのアクティビティリスト

 ActivityWatchのリストは、どちらかというとデータベースに入っているデータをそのまま表示しているような感じです。各行のデータを編集したり削除したりすることもできます。一方、Quality-Workはデータを集計して表示する機能があります。例えば同じタイトルを持つものを集計したり、同じアプリケーションのものを集計したりもできますが、データの編集はできません。

タイムライン

画像
ActivityWatchのタイムライン
画像
Quality-Workのタイムライン

 こちらも、ActivityWatchは、データベースに入っているデータをそのまま表示しています。アクティブ表示されていたウインドウの情報と、端末から離れていた時間(AFKと呼びます)の情報は別のテーブルに管理されているので、タイムラインは2本になっています。
 これに対し、ActivityWatchは端末から離れていた時間は最初から表示しません。1日のどの時間に作業をしていたのかを概観するタイムラインと、個々のイベント別に表示する詳細タイムラインの二種類を表示できます。

グラフ表示

 どちらのツールも、トップタイトル、トップアプリケーション、時間別棒グラフ、作業分類による円グラフなどで統計情報を表示することができます。

画像
ActivityWatchのグラフ
画像
Quality-Workのグラフ

作業の分類方法は異なる

記録したデータの分類についての考え方や方法は異なっています。

分類は一種類のAcrivityWatch

 AcrivityWatchでは、分類のためのカテゴリーを自分で設定できます。例えば、「仕事」「プライベート」というカテゴリーを作り、さらに「仕事」の中に「原稿執筆」「プログラミング」「営業活動」「会計作業」などをサブカテゴリーとして設定するというような感じです。

画像
ActivityWatchのカテゴリーとルールの設定画面

 設定したカテゴリーにどのイベントが含まれるかの判断は、カテゴリーごとに設定する「マッチングルール」により行われます。「アプリケーション名やウインドウタイトルに"会計"や"銀行口座"や"領収書"の文字列が含まれているものは"会計作業"カテゴリーに振り分ける」という具合にルールを設定します。
どのカテゴリーの条件にもマッチしなかったイベントは、Uncategorizeというカテゴリーに集計されます。
 このルールは「正規表現」という文字列マッチングルールのための書式で記載します。単に文字列が含まれているかどうかだけでなく、「先頭の文字がxxと一致する」とか「xxの文字の後にyyの文字列があるものと一致する」などもっと複雑なルール設定もできます。

複数の観点での分類ができるQuality-Time

 上のActivityWatchの分類例では、「仕事の種類」という観点で分類している訳ですが、分類の仕方は他にも色々考えられます。例えば、いくつかのプロジェクトを兼務している人の場合、自分の作業をプロジェクトごとに『A案件用の作業」「B案件用の作業」という具合に分類したいかもしれません。
 Quality-Timeでは、このような観点ごとにカテゴライズができるようにしています。観点のことを「ビュー」と呼んでおり、複数のビューを定義し、ビューごとにカテゴリーが設定できます。色々な観点で作業分析をしたい人にはこちらがおすすめです。

画像
ビューの設定画面

設定したカテゴリーにどのアクティビティが含まれるかを仕分ける方法は2種類あります。

キーワードによる分類
 アプリケーション名やウインドウタイトルに、カテゴリーごとに設定したキーワードが含まれていたら(または含まれていなかったら)当該カテゴリーに属すると判断します。GUIベースの「カテゴリーエディター」を使ってキーワードを設定することができます。

画像
キーワード分類の設定画面

完全一致による分類
 アプリケーション名とウインドウタイトルの対をカテゴリーごとに指定しておき、これと完全一致するアクティビティを当該カテゴリーに属すると判断します。
GUIによるエディタですでに記録されているアクティビティのリストから、アクティビティを選んでカテゴリを指定すると、選んだアクティビティのアプリケーション名とタイトルが当該カテゴリーに登録されます。
 登録された、アプリケーション名とタイトルはキーワード分類のためのキーワード候補抽出のための元データとしても使われます。

画像
完全一致するアクティビティを登録するための画面

Quality-Workだけの実験的な機能

Quality-Workでは、他のタイムトラッキングツールにはあまりない、実験的な新しい機能を追加しています。

キーボード、マウスからの入力量による分類機能

 先に述べた通り、Quality-Timeではキーボードやマウスからの入力数もウインドウの情報と一緒に記録しており、この入力量の情報に基づいた分類をする機能を提供しています。

  • アウトプット ドキュメントを作成したり、プログラムを作ったり、図面を作成したりなどキーボードやマウスからの入力が一定以上あるもの

  • インプット 文章を読むために画面が表示されており、表示されている時間は長いものの、キーボードやマウスからの入力がほぼないもの

  • ザッピング 流し見をしているため、表示時間が短くかつキーボードやマウスからの入力がほぼないもの

 要は、文章とか図面とかを「生み出す」アウトプット作業と、何かを生み出すために「蓄積」したり「勉強」したりするインプット作業を分けてみた感じです。また、そのどちらにも属さない「流し見」のような(ある意味無駄な)作業をザッピング作業としています。

画像
キーボード、マウスからの入力量による分類

音声ストリームを使うアプリケーション(リモート会議やリモート通話など)の記録と分類

 ActivityWatchもQuality-Workも、アクティブなウインドウと、キーボードやマウスからの入力によって、どのような作業をやっていたかを判別し、また、マウスやキーボードからの入力が一定時間(3分間)以上ない場合は、作業が終了していると推定する仕組みになっています。

 しかし、これだと上手くいかない場合もあります。リモート会議、リモート通話、Webセミナーなど、音声やビデオなどのストリーミングデータを扱うアプリケーションでは、マウスやキーボードはあまり使いませんので、入力が一定時間以上ないと言うのは普通に起こります。リモート会議をやっているのに、作業が終了していることになってしまったりします。

 これを解決するために、Quality-Workでは、リモート会議、リモート通話などの音声ストリームを扱うアプリケーションでの作業を「ストリーミングアクティビティ」として計測する仕組みを用意しています。具体的には、PCからスピーカーやイヤホンなど音声デバイスへの出力を監視し、継続的に出力があった期間を計測し記録します。

画像
音声デバイス出力の監視

ただ、音声ストリームがどのアプリケーションによって出力されているのかは、直接はわからないので、音声出力があった期間に表示されていたウインドウの情報から推定して音声アクテビティと画面の情報を紐付けるようにしています。紐付けの方法としては、以下があります。

  • 音声出力が始まった時にアクティブになっていたウインドウの情報と紐付ける(デフォルト)

  • 音声出力があった期間中、一番長い間アクティブになっていたウインドウの情報と紐付ける

  • 音声出力と紐付ける情報を、手動で入力する

紐付け方法は、音声アクティビティ画面から音声アクティビティごとに設定することができます。

画像
ストリーミングアクティビティの記録と設定画面

記録したストリーミングアクティビティは、通常のアクティビティと併せて分析、表示することができます。

今後の展望

 ActivityWatchは、最近はそれほど頻繁にバージョンアップされているわけではなく、最近のバージョンアップはバグフィックスやマイナーチェンジが中心のようです。良くも悪くも、成熟したアプリケーションになってきており、安定して使えますが、新しい機能が追加されることはあまり期待できないかもしれません。

 Quality-Workは新参のツールですので、機能的にActivityWatchに及んでないところもあります。「データインポート・エクスポート機能」や「作業イベントの手動での登録機能」など補助的な機能は。ActivityWatchにはあってQuality-Workにはありません。そこまで開発の手が回ってないのが理由で、今後追加して行こうと思っています。また、新たな試みとして、機械学習を使ってカテゴリー分類をする機能を考えていたりもします。

 ぜひ一度、Quality-Workを使ってみてください。

以上


いいなと思ったら応援しよう!

ピックアップされています

タイムトラッキングで忙しさを見える化する

  • 11本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
#11 タイムトラッキングツール比較 「ActivityWatch vs. Quality-Time」 その1|久山 和宏 (System Design K2)
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1