タイプ数カウンターのデータをPythonで取り出す方法
タイピングの練習や日々の記録に便利な「タイプ数カウンター」。
常駐してキータイプ数を計測してくれる便利なアプリケーションですが、そのデータを直接CSVなどで出力する機能は備わっていません。
毎日のタイプ数を記録・可視化したいと思っても、公式にはエクスポート手段が提供されておらず、ログファイルの中身を直接読み取るしかないのが現状です。
そこで本記事では、Pythonを使ってタイプ数カウンターの内部データを取り出す方法をご紹介します。
タイプ数カウンターのデータはdataファイルに保存されている
タイプ数カウンターのログは基本的にバイナリ形式で保存されており、タイプ数カウンターのフォルダ内にあるdata
というファイルに格納されています。(マウスの操作数はdata2ファイル)
このファイルを開いても、メモ帳などでは文字化けしてしまい、中身を直接確認することはできません。
そこでPythonを使ってこのバイナリ形式のデータを読み取っていきます。
Pythonでバイナリデータ(dataファイル)を解析する
まずは、タイプ数カウンターが出力するバイナリ形式のログファイルをPythonで読み込む基本的なコードを紹介します。
このコードでは、バイナリファイルを開き、その中身をstruct
モジュールを使って整数の列(タプル)に変換しています。
import struct
path = r"dataのファイルパス"
# dataファイルを開いてタプルへ変換
with open(path, "rb") as f:
b = f.read()
leng = len(b) // struct.calcsize("L")
fmt = str(leng) + "L"
tpl = struct.unpack(fmt, b)
# タプルを順番に表示
for num, val in enumerate(tpl):
print(num, val)
pathをタイプ数カウンターのフォルダ内にあるdata
というファイルのフルパスに変更してから、実行してください。
実行すると、dataフォルダが保有している数値が順番に表示されます。

このスクリプトが行っていることは以下の通りです:
open(path, "rb")
で、バイナリ読み込みモードでデータファイルを開きます。struct.calcsize("L")
は、1つのunsigned long
型(4バイト)あたりのサイズを取得します。- ファイル全体の長さから、何個の
unsigned long
値が格納されているかを計算します。 struct.unpack()
を使って、バイナリデータをそのままPythonの整数のタプルに変換します。- 最後に、そのタプルの中身を1行ずつ番号付きで出力します。
最初の1~3は今日の日付になります。2025年6月8日。
かなりデータ数が多いのですが、どの数字が何の値なのかはある程度調べていくことが可能です。
今回は、主に使いたいであろう2つの値の取り出し方を説明します。
2つの値の取り出し方(今日のタイプ数、昨日のタイプ数)
import struct
#path = "dataのファイルパス"
# dataファイルを開いてタプルへ変換
with open(path,"rb") as f:
b = f.read()
leng = len(b)//struct.calcsize("L")
fmt = str(leng)+"L"
tpl = struct.unpack(fmt,b)
print(tpl[285]) # 今日の打鍵数
print(tpl[842]) # 昨日の打鍵数
今日のタイプ数と昨日のタイプ数はサンプルコードのように、タプルの番号を指定すれば取得することができます。
日々のタイプ数を記録したいのであれば、昨日の打鍵数を記録していくのがいいと思います。
なお、今日の打鍵数については完全なリアルタイムではなく、1時間おきか30分おきに更新される仕様のため、異なる値が表示されることに気をつけてください。