Macが単純な質問に答えられない理由

質問は「今日は実際にどこへ行ったのか」です。すべてを見ていたはずのマシンなら答えられそうなものです。ところがMacは、そのままではほとんど答えられません。Appleはサードパーティ向けのスクリーンタイムAPIを提供していません。iOSでその裏側にあるフレームワークは、Macには渡ってきませんでした。Apple自身のスクリーンタイムのペインも、答えとしては物足りません。システム設定の奥にあり、タイムラインはなく、Webサイトを分けて表示するのはSafariだけです。1日をChromeで過ごしていれば、「Google Chrome、5時間」と出て、そこで終わりです。

Tallyは、メニューバーで自分で計測するアプリです。使うのは、macOSが公開している信号、つまり最前面のアプリはどれか、キーボードの前に誰かいるか、マシンがいつスリープまたはロックされたかです。自分で許可したアクセス許可があれば、さらにどのドキュメントやどのWebサイトかも記録します。記録はすべて自分のMacの中にとどまります。以下はすべて、現在配信中のバージョンの機能です。

何も許可しなくても役に立つ

このカテゴリのほとんどのトラッカーは、最初にアクセス許可の壁を出します。Tallyの最初の誠実な点は、何も許可しなくても動くことです。インストールして、どの確認にも答えなくても、アプリごとの正確な合計が得られます。エディタでどれだけ、Slackでどれだけ、ブラウザでどれだけ、といった具合です。

アクセス許可は1つ許可するごとに1層分の詳細を加え、アプリはどれで何が得られるかを明示します。アクセシビリティを許可すると、フォーカスされたウインドウのタイトルを読めるようになり、「Xcode、3時間」が取り組んでいたプロジェクトに、「プレビュー」が実際に読んでいたPDFになります。オートメーションを許可すると、ブラウザにどのサイトが開いているかを尋ねられるので、ブラウザの時間が1つのアイコンの下に積み上がらず、それぞれのサイトに振り分けられます。Safari、Chrome、Brave、Edge、Vivaldi、Opera、Arcはこの方法で読み取ります。

Firefoxは例外ですが、良い意味での例外です。Geckoベースのブラウザはページのアドレスをアクセシビリティツリーから公開しているので、Firefoxにはオートメーションの許可がまったく要りません。許可が足りない場合は、ポップオーバーが一覧の上に固定したバナーで知らせるので、スクロールで見えなくなることはありません。

数字は、席にいなかった時間を差し引く

使用時間トラッカーは、自分の感覚とずれたときにも信頼できて初めて読む価値があり、その信頼は、コーヒーを淹れていた1時間を数えた最初の瞬間に失われます。Tallyの技術の大半は、何を数えないかにあります。

2分間入力がなければ(しきい値は1分から15分の間で変更できます)、現在の区間は中断されます。しかもさかのぼって、離席に気づいた瞬間ではなく、最後のキー入力かクリックの時点まで戻って中断されます。スリープとロック画面も、同じように区間を終わらせます。3秒未満で通り過ぎたアプリはノイズとして破棄されます。そして、8時間を超えて続いたと主張する区間は、信じずに切り詰められます。そんな数字は事実ではなく、バグだという考え方です。

Tallyの「日」の概要。上部に4枚のカードと、空白のある1日のタイムライン
1日の空白はそのまま残ります。席を離れていた時間はタイムラインから抜けていて、だからこそタイムラインが信じられます。

これによってタイムラインにできる空白は、意図したものです。デスクで過ごす1日は、途切れのない1本の棒ではありません。棒を描くトラッカーは、1日ではなく、自分の帳簿を描いているのです。

メニューバーで10秒、デスクトップにカード、その裏にウインドウ

メニューバーのバッジは、クリックする前に1日の様子を伝えます。それは動くTallyのロゴです。リングには今日のカテゴリがロゴ自身の色で満たされ、中央の時計の針は実際の時刻を指します。設定した制限のうち、いちばん埋まっているものが近づくとバッジに琥珀色の点がつき、超えると赤になります。記録を一時停止すると、針は一時停止のバーになり、リングはグレーになります。頼まない限り、数字は表示しません。画面の隅で刻々と変わるカウンターは、機能ではなく神経質なクセですし、アップデートで勝手に数字が現れたら、誰も頼んでいない変更をみんなに押しつけることになります。数字が欲しければ、設定に4つの選択肢があります。今日の合計、目の前のアプリとその時間、いちばん埋まっている制限の達成度、今日のうち集中が占める割合です。制限が迫ると、その表示は琥珀色か赤のピルに入ります。

クリックすると、ポップオーバーが質問の簡易版に答えます。合計に、直前の期間との比較を示す小さなバッジがつき、そのうち集中がどれだけで、気が散るカテゴリにどれだけ行ったかが1行で示されます。「日」には、その下に最長の連続時間つきのタイムラインが続きます。目標は小さなリングの列に並び、制限は近づくとそこに加わります。続いて上位5つのアプリが、棒グラフ、カテゴリごとの色付きの頭文字、その横に最も使ったサイトやプロジェクトとともに表示されます。残りは1行にまとまり、あと何個のアプリで、どれだけの時間かを示し、そこからレポート全体が開きます。「日」と「週」の切り替えで表示範囲が広がります。ポップオーバーに「月」はありません。意図したことです。ポップオーバーに押し込んだ1か月は、形のない数字です。

Tallyのメニューバーのバッジ。ロゴのリングに今日が表示され、制限の近くでは琥珀色のピルに合計が入っている。その下にポップオーバーが開いている
ポップオーバーは10秒で読める内容です。合計と集中の度合い、1日のタイムライン、目標、時間を使った上位5つのアプリです。

形がわかるのは、ポップオーバー上部のレポートボタンの先にあるウインドウです。概要は6枚のカードで始まります。集中した時間、最長の連続時間、アプリの切り替え回数、離席時間、最も多い時間帯、そして目標を設定していれば達成した目標です。その下に、期間の形が「集中の内訳」のリングと並び、前の期間より集中していたかどうかを一文で伝えます。1日はタイムライン、1週間は日ごとの積み上げ棒グラフ、1か月は1日1マスのカレンダーのグリッドで、年と、自分で選ぶ日数の期間指定もあります。さらに下には、時間帯(1日なら1時間ごとのリズム、それより長ければヒートマップ)、目標と制限、各アプリの前の期間からの変化つきの時間の使い道、そして主な変化があります。傾向は主な変化をさらに掘り下げ、内訳では、アプリの各行を開くと、中で何が起きたかがわかります。ブラウザの中のサイト、エディタの中のプロジェクト、ターミナルの中で動いたツールです。書き出しボタンで、どれもCSVかJSONで取り出せます。

Tallyの概要の下のほう。時間帯、目標と制限、各アプリの変化つきの時間の使い道、主な変化
概要の下のほう。1日のどの時間帯に使ったか、目標の状況、前の期間と比べて何が変わったかが見えます。

3つ目の画面は、デスクトップのカードで、3つのサイズがあります。小サイズには今日の合計と、その大半が何だったかが表示されます。中サイズは、使ったアプリと今日までの7日間を加えるので、静かな水曜日は、比べるものがない数字ではなく、静かな水曜日として見えます。大サイズは、より背の高い1週間の上に5つのアプリを並べます。どのカードにも記録の一時停止と再開のボタンがあり、カードをクリックするとレポート全体が開きます。カードがデータベースに触れることはありません。アプリがカードのために書き出す小さなファイルを読むだけで、更新は最大でも1分に1回、見た目が変わらないときは行いません。

デスクトップにあるTallyの小サイズと中サイズのウィジェット。今日の合計、そのカテゴリ、その前の1週間が表示されている
同じ1日がカードになりました。小サイズは今日がどれだけ過ぎ、何に使ったかを、中サイズはそこにアプリと1週間を加えます。

一度直せば過去にも反映されるカテゴリ

アプリの名前そのままは正直ですが、読みにくいものです。「ターミナル」という単位で1週間を計画する人はいません。そこでTallyは、時間を10個の標準カテゴリに分類します。コーディング、ライティング、デザイン、コミュニケーション、SNS、エンターテインメント、読書、AI、ユーティリティ、その他です。分類は1つの意図的な軸、つまり活動の種類であって、目的ではありません。名前を変えたり色を変えたり、自分のカテゴリを加えたりできます。「仕事」を含む分類は、仕事を体系的に少なく数えます。仕事のSlackの1時間はコミュニケーションに、仕事の読み物の1時間は読書に入るからです。種類はソフトウェアが答えられる問いですが、目的は答えられません。

各カテゴリは、集中、どちらでもない、気が散るのどれかとしても数えられます。仕事のカテゴリであるコーディング、ライティング、デザイン、読書、AIは最初は集中、SNSとエンターテインメントは気が散るに設定されていて、どれも変更できます。この区分だけが、集中の行、「集中」のカード、「集中の内訳」が読むものです。

Tallyの週の概要。日ごとの積み上げ棒グラフで、各日がカテゴリごとに分かれている
カテゴリで積み上げた1週間。その日々が実際にどんな種類の活動でできていたかがわかります。

標準の割り当ては、よく知られた数百のアプリとサイトをカバーしていますが、自分のツールについては、どこかで間違えるでしょう。直すのはワンクリックです。内訳タブのすべての行にタグのボタンがあり、そこから割り当て直せます。これが見た目以上に良いのは、2つの細部のおかげです。サイトのルールは、アプリのルールより必ず優先されます。ブラウザはカテゴリを映す窓であって、それ自体のカテゴリではないからです。そして、すべての修正はさかのぼって反映されます。カテゴリは数字を読むときに解決され、保存された記録には刻まれないので、ワンクリックで3月も直ります。

自分で決める上限

レポートは、過ぎ去った1日を描写します。制限は、まだ決められることがあるうちに、同じアプリが話しかけてくるものです。ここにあるものの中で、過去ではなく未来についての、ただ1つの機能です。

上限の対象は4つです。人が実際に尋ねる問いは、4つの違う大きさだからです。youtube.comに30分以上使わない(サイト)、SNSに1時間以上使わない(カテゴリ)、エディタに6時間以上使わない(アプリ)、このマシンの前に8時間以上いない(1日全体)です。サイトの制限は末尾の一致で判定されるので、youtube.comの制限はmusic.youtube.comにも及びます。そうしないと罠になります。設定したのはYouTubeの制限であって、そのホスト名の1つではないからです。ルールは目標にもできます。たとえばコーディングを2時間以上。どちらも、1日単位でも1週間単位でも数えられます。設定で追加するか、すでに見ているレポートの行を右クリックして追加します。

Tallyの設定の「制限と目標」。各制限に、今日どれだけ埋まったかを示す棒がある
それぞれの上限は、設定するコントロールの下に、今日の状況を描いています。設定した理由はそれだからです。

すべての上限は、その日またはその週とともにリセットされ、それぞれが、設定するコントロールの下に進み具合を表示します。数字のない制限の一覧では、どれかが問題になっているのか確かめるためにレポートに戻らなければなりません。ポップオーバーに出るのは、いちばん埋まっているものだけで、しかも近づいたときだけです。開くたびに現れるセクションは、見過ごすものがひとつ増えるだけだからです。現在の日または週の目標もそこに最大3つのリングとして表示されます。目標は、確認しに来るものだからです。早めの警告はデフォルトで80%で、変更もオフにもできます。役に立つ瞬間は上限の手前であり、上限に着いた瞬間ではないからです。

開いている区間も、これらすべてに数えられます。区間が閉じるのは、アプリを切り替えたときだけです。保存された記録だけを読む制限だと、離れてから超えたことに気づきます。警告が役に立たなくなる、まさにその瞬間です。

何もブロックされません。 アプリが閉じられることも、サイトが隠されることもなく、交渉相手になる「15分延長」ボタンもありません。それは別の製品で、別の約束を伴います。こっそり牙を生やしたトラッカーは、人が起動しなくなるトラッカーです。

通知は週に1回、制限が近づいたり満たされたりしたときにひとこと

週に1回の通知は、月曜の09:00に届くダイジェストで、前の週と比べて何が変わったかを伝えます。曜日と時刻は変更できますが、抑制は変えられません。変化が「主な変化」と呼ばれるには、10%と15分の両方を超える必要があり、その週に稼働した日が3日未満なら、ダイジェストは何も言いません。2回分のセッションで作ったまとめは、スーツを着たノイズだからです。ソースコードのルールは引用に値します。間違ったことを言うくらいなら、何も言わない。

もう1つは、制限が満たされたときです。80%での予告(デフォルトでオン、変更もオフも可能)のあと、上限に達したときにもう1回。どちらも、ルールごとに1日または1週間に1回だけです。達成した目標も、オンにすればそう知らせます。すべて、起きた瞬間に通知され、あとの予定に積まれることはありません。これは細かい話ではありません。未来に発火するものが何も積まれないので、Tallyを終了すれば、勝手に鳴るものは何も残りません。もう1つ欲しいなら、1日のまとめを夜に届けることもできます。オンにするまではオフです。どの通知も、計測をオフにしなくてもオフにできます。

データの行き先は、どこにも行かない

Tallyが記録するものはすべて、自分のMacに保存されます。アカウントも、サーバーも、同期もありません。使用状況のデータがネットワークに触れることはありません。デスクトップのカードは、アプリの外からデータを読む唯一のもので、同じマシンの共有コンテナにある、カードに表示済みの数字だけが入った小さなファイルを読みます。Webサイトについては、リリース版はドメインだけを保存し、完全なアドレスは保存しません。ウインドウタイトルがディスクに残るのは多すぎると感じるなら、スイッチ1つで詳細の記録をオフにでき、Tallyはアプリの合計だけを記録します。設定では、これまでに保存したものをすべてワンクリックで削除できます。保存期間も選べます。30日、90日、365日、または無期限で、デフォルトは90日です。

同じ設計が、このアプリがないところも説明しています。TallyはMac App Storeのアプリではなく、直接ダウンロードの配信です。サンドボックスは、製品全体が立脚するアクセシビリティの読み取りを、まさに禁止しているからです。

あえてやらないこと

介入しません。Tallyには上限がありますが、上限は伝えるだけです。アプリを閉じることも、サイトを隠すことも、画面を暗くすることも、15分の延長を提案することもありません。休止時間のスケジュールも、やめるよう告げる画面もありません。問題が見えないことではなくやめられないことなら、それはブロッカーの仕事です。

タイトルバー以外は読みません。アクセシビリティがオンのときは、フォーカスされたウインドウのタイトルを取得します。オートメーションがオンのときは、ブラウザにどのサイトが開いているかを尋ねます。キー入力の記録も、画面キャプチャもなく、ドキュメントの中身を見るものもどこにもありません。

生産性スコアはありません。評価も10点満点の点数も渡されません。集中の行は、集中か気が散るとラベルをつけたカテゴリを足し合わせるだけで、どちらにするかはこちらが決めます。このアプリの中の唯一の判断は、レポートを見ながら自分が下すものです。

そして、空白を埋めることはできません。Tallyが動いていなかった日は、記録できません。これが「ログイン時に起動」のスイッチの存在理由のすべてです。

費用と、ほかに見ておくもの

TallyにはmacOS 14以降が必要で、AppleシリコンとIntelの両方で動き、サイズは約11 MBです。$4.99の買い切りで、14日間のトライアルはカードもメールアドレスも不要、手に入るライセンスは永久です。詳しい仕様はTallyのページにあります。

計測するのも、このMacだけです。スマートフォンの時間、タブレットの時間、もう1台のノートパソコンは範囲外で、Tallyは4台について大まかに知るより、1台について完全であることを選びます。

数字が、午後が消えていると告げているなら、2つの隣のアプリが次の一手を示します。Anchoredは、時間を記録するもう半分の、意図的な側面です。メニューバーの1つのタスクとそのタイマーで、Mac用のメニューバーのタスクタイマーで機能別に紹介しています。そして、レポートの最上位の行が、支配されたくないサイトなら、NoMoreが時間割ではなく判断をその前に置きます。MacでWebサイトをブロックする方法をご覧ください。