Deskami机の上の小さな相棒

書き出しの形式

Deskami Plusに含まれる書き出しは、DeskamiがこのMacに残しているのと同じ、1分ごとの記録を書き出します。何かを足したり、推定したり、埋めたりはしません。このページでは、ファイルに何が入っているかを説明します。

決まりごと

  • CSVの空のセルと、JSONのnullは測定なしを意味します。0は測って、ゼロだったという意味です。
  • 列名はどの言語でも英語で、固定です。変わるのは、新しいexport_versionと一緒のときだけです。
  • ファイルはUTF-8です。CSVはカンマ区切りで、1行目が見出しです。
  • 時刻はUTCで、ISO 8601の形式です。たとえば2026-09-28T07:41:00Z。日付はYYYY-MM-DDで、その分が記録されたときの暦の日です。
  • 小数点にはピリオドを使い、桁区切りの記号は使いません。真偽値はtrueとfalseです。
  • Deskamiが何かを記録した分ごとに1行あり、何も記録しなかった分の行はありません。

分ごとの列

CSVには次の列がこの順に並びます。JSONでは、同じ項目がそれぞれの分を形づくります。かっこの中の名前は、生のデータベースファイルでの列名です。

  • minute_utc — 時刻。その分の始まり(UTC)。(minute_utc、Unix秒)
  • local_day — 日付。この分が属する暦の日で、そのときMacがあったタイムゾーンによります。書き込んだ時点で決まり、あとでタイムゾーンが変わっても動きません。(day_key)
  • setup_id — 整数。使っていた環境(カメラと画面の並びの組み合わせ)。JSONでは、環境はsetupsの下に並びます。(profile_id)
  • seconds_at_desk — 0〜60。この分のうち、カメラがあなたを見ていた秒数。camera_offがfalseのとき、0はカメラがオンで、あなたが見えなかったことを意味します。(present_s)
  • posture_deviation — 0以上の数。頭と肩が自分の基準よりどれだけ下にあったかを1分のあいだで平均したもので、そのとき使われていたお知らせのしきい値を1とした倍数です。基準のところで0、しきい値のところで1。姿勢を測らなかったときは空です。(posture_dev)
  • posture_peak — 0以上の数。同じ尺度で、その分のうちいちばん大きかった値。(posture_peak)
  • distance_deviation — 0以上の数。基準のときより顔がどれだけ画面に近かったかを同じ尺度で表したもので、映像の中の両目の間隔から読みます。(distance_dev)
  • blinks — 整数。目を測れていたあいだに数えたまばたき。測れなかったときは空です。(blinks)
  • incomplete_blinks — 整数。いちばん細くなった瞬間でも、閉じたと言えるところまで閉じなかったまばたき。判断できなかったときは空です。(incomplete_blinks)
  • head_pitch_degrees — 数。カメラが伝える頭の上下の傾きを度で平均したもの。基準に対してではなく、カメラに対しての値です。(head_pitch)
  • confidence — 0〜1。顔の検出の確かさの平均。(confidence)
  • light — 0〜1。顔のあたりの明るさの平均で、0が暗く、1が明るい。部屋の明るさではありません。(light)
  • eyes_measured — 真偽値。この分のうちに、少なくとも一度は目を測れたかどうか。falseのときは、blinks、incomplete_blinks、eye_observed_secondsが空です。(eye_valid)
  • eye_observed_seconds — 0〜60。実際に目を見られていた秒数。1分あたりのまばたきはblinks × 60 ÷ eye_observed_secondsです。(eye_observed_s)
  • look_aways — 整数。遠くを見るのをやり終えた回数。20-20-20の習慣です。遠くを見ることを測っていなかったときは空です。(gaze_breaks)
  • camera_off — 真偽値。この分、カメラが切れていた。自分で切ったか、ほかのアプリが使っていたか、許可が取り消されたかです。そのときカメラの列は空ですが、アプリと操作の列は入っていることがあります。(camera_off)
  • declared_break — 真偽値。作業していないとDeskamiに伝えていた。カメラが何を見ていても、この分は机を離れていたものとして数えます。(declared_break)
  • front_app — テキスト。その分の大半で前面にあったアプリのバンドルID。たとえばcom.apple.Safari。その読みをオフにしていたとき、画面がロックされていたとき、前面に何もなかったときは空です。ウインドウのタイトルが入ることはありません。(app_id)
  • app_switches — 整数。この分のうちに前面のアプリが変わった回数。(app_switches)
  • active_seconds — 0〜60。直前15秒以内にキーボードかマウスに触れていた秒数。読むのは最後の操作からの時間だけで、どのキーかは読みません。その読みをオフにしていたときは空です。(active_s)
  • call_seconds — 0〜60。通話アプリが前面にあったか、ひとつのアプリがマイクとスピーカーを同時に開いていた秒数。測っていなかったときは空で、Deskamiがこれを測るようになる前に記録された分もすべて空です。(meeting_s)

JSON

JSONファイルはひとつのオブジェクトです。はじめに見出しの部分があります。export_version、app_version、exported_at、time_zone(書き出した時点のもの)、database_schema_version、range(kind、from、to)、setups(id、camera_name、created_at)。

そのあとにdaysが続き、範囲の中で記録のある日ごとにオブジェクトがひとつあります。それぞれの日が、自分のまとめ、分、お知らせを持っています。

  • local_dayとminutes_at_desk。後者はseconds_at_deskの合計を60で割ったものです。
  • breaks:机にいた2つの時間のあいだで、机を離れていた5分以上2時間未満の時間。カメラを切っていた時間は、どちらにも数えません。
  • posture_fine_minutes(posture_deviationが1未満)とposture_attention_minutes(1以上)。
  • blink_rate:目を見られていた時間での、1分あたりのまばたき。見られていた時間が1分に満たないときはnull。
  • incomplete_blink_ratio:判断できたまばたきが少なすぎるときはnull。
  • reminders_by_signal:表示したお知らせを、項目ごとに数えたもの。
  • minutes:上の分ごとの列。1分につきオブジェクトひとつ。
  • reminders:お知らせごとにオブジェクトひとつ。time_utc、local_day、setup_id、signal(posture、distance、blink、incompleteBlink、gazeのどれか)、build_up_seconds(お知らせの前にしきい値を超えていた時間)、recover_seconds(しきい値の下に戻るまでの時間。先に測定が止まったときはnull)、asked(基準についての質問を出したかどうか)、answer(たずねなかったときはnull、それ以外はtrueかfalse)を持ちます。

PDF

PDFは表ではありません。まとめそのもの(一日のまとめ、週、月)を、画面に見えるとおりに1ページに印刷したものです。中の数字はどれも、画面に出ている数字と同じです。

生のファイル

設定 › 一般 › データ › 「Finderに表示」を選ぶと、history.sqliteが、history.sqlite-walとhistory.sqlite-shmと並んで表示されます。Deskamiが動いているあいだは、いちばん新しい分がまだ-walファイルに入っていることがあります。3つのファイルをすべてコピーするか、先にDeskamiを終了してください。Deskamiが動いているあいだにこれらのファイルを削除すると、数秒のうちに新しい空の記録が始まります。書き出しは、いつも欠けのない、ある時点の写しを書きます。データベースに何が入っているかは、プライバシーのページに書いてあります。