Quality-Work1.0は、基本的に端末画面のウインドウがアクティブになっている時間を計測して、これを元にどの作業にどれだけの時間をかけていたのかを推定しています。また、マウスやキーボードからの入力が一定時間(3分間)以上ない場合は、作業が終了していると推定する仕組みになっています。これで、概ねPC端末でどんな作業をしていたのかを知ることができるのですが、これだけではうまく計測できないケースがあります。リモート会議、リモート通話、Webセミナーなど、ストリーミングデータを扱うアプリケーションでは、マウスやキーボードはあまり使いませんので入力が一定時間以上ないと言うのは普通に起こります。リモート会議をやっているのに、Quality-Work1.0では「作業をしていない」とみなされてしまうわけでです。
というわけで、Quality-Work2.0では、リモート会議、リモート通話などのアプリケーションでの作業を計測する仕組みを追加してみました。
計測の仕組み
リモート会議、リモート通話などのアプリケーションが使われていた時間を、PCからスピーカーやイヤホンなど音声デバイスへの出力を監視し、継続的に出力があった期間を計測し記録します。
音声デバイスへの出力を監視するためには、Quality-Workとは別に「ループバック機能を持つ仮想オーディオデバイス」用のソフトウェアをPCに組み入れる必要があります。「仮想オーディオデバイス」とは、必ずしもハードウェアではない仮想的な出力先のことです。ハードウェアではなくプログラムを出力先にする場合などに使います。「ループバック」というのは、システムからの音声出力を受け、これを入力に戻す機能のことです。これらを使うことで、下図のように、音声デバイスに出力される音声と同じデータをプログラムに取り込み監視することができるようになります。

仮想オーディオデバイスソフトウェア
このような仮想オーディオデバイスソフトウェアは、市販のもの、シェアウェアなどを含めいくつかありますが、Quality-Workで動作することを確認しているのは以下です。(その他の仮想オーディオデバイスソフトウェアでも動くとは思いますが、確認はしていません。)
Macの場合
仮想デバイスとして「BlackHole」を使い、ループバック機能にはMacに標準で装備されている「複数出力装置」という機能を使う構成で動作を確認しています。「BlackHole」はMac用の仮想オーディオデバイスソフトウェアで、ドネーションウェアとして配布されています。寄付の額は$10ですが、ドネーションなしでも入手できます。
Windowsの場合
Windows10以降標準で装備されている「ステレオミキサー」という仮想デバイスを使う方法があります。この方法の問題は、「ステレオミキサー」がループバックの対象にしているのが、PC内蔵のスピーカーやイヤホンジャックのみであるということです。USBやBlueToothでヘッドセットや外部スピーカー等を使うような場合には使えません。色々なデバイスに汎用的に使えるループバック機能付き仮想デバイスソフトとしては、「VB-Audio Virtual Cable」があり、Quality-Workではこれについての動作を確認しています。こちらもドネーションウェアですがドネーションなしでも入手できます。
注意事項:
ストリーミングを扱うアプリケーションの中には、出力デバイスをOSの設定とは別に、アプリケーションで設定できるものがあります(例えば、Zoomがそうです)。このようなアプリケーションの記録をとる場合には、アプリケーションの出力先を「複数出力装置」や「VB-Audio」などにしておく必要があります。
出力された音声と画面の紐付け
残念ながら、上記の仕組みではPCから出力された音声がどのアプリケーション(どの画面)により出力されたかを直接知ることはできません。そこで、音声出力があった期間に表示されていたウインドウの情報から推定して音声アクテビティと画面の情報を紐付けるようにしています。紐付けの方法としては、以下があります。
- 音声出力が始まった時にアクティブになっていたウインドウの情報と紐付ける(デフォルト)
- 音声出力があった期間中、一番長い間アクティブになっていたウインドウの情報と紐付ける
- 音声出力と紐付ける情報を、手動で入力する
紐付け方法は、音声アクティビティ画面から音声アクティビティごとに設定することができます。
音声アクティビティの集計表示への反映
記録した音声アクティビティの、グラフやタイムチャートなどへの反映方法は、音声アクティビティ画面から次のうちから選ぶことができます。
無視
音声アクティビティはグラフなどには反映しません。
Audio優先
音声アクティビティと、通常のWindowアクティビティが同じ時間帯にあった場合、音声アクティビティを優先にします。

Window優先
音声アクティビティと、通常のWindowアクティビティが同じ時間帯にあった場合、通常のWindowアクティビティを優先にします。

個別設定
音声アクティビティごとに「無視」「Audio優先」「Window優先」を設定します。