ToolActToolAct

ポモドーロ・タイマー

集中して仕事、効率的に休憩、科学的に時間を管理

25:00
集中
ラウンド 1/4

ポモドーロ・タイマーとは?

ポモドーロ・テクニックは、1980年代にフランチェスコ・シリロが創始した時間管理法です。核となる考え方は、仕事を25分の集中セッション(1つの「ポモドーロ」)に分割し、各ポモドーロの間に5分の休憩を取り、4ポモドーロ後に15〜30分の休憩を取ることです。この方法は注意力の向上、疲労の軽減、仕事のリズム感の強化に役立ちます。

使い方

基本操作

  1. 作業モードを選択:集中、短い休憩、または長い休憩
  2. 「開始」ボタンをクリックしてタイマーを開始
  3. タイマーが終了するまで作業に集中し、アラートが鳴ったら休憩しましょう
  4. 4回のポモドーロごとに長い休憩を楽しみましょう

カスタム設定

集中時間デフォルト25分、個人の習慣に合わせて15〜45分に調整可能
短い休憩の時間デフォルト5分、10分以内に抑えることを推奨
長い休憩の時間デフォルト15分、4回のポモドーロ後にしっかりとリラックス可能
長い休憩までのラウンド数デフォルト4ラウンド、3〜6ラウンドに調整可能

集中のコツ

  • 1回の集中セッションでは1つの明確なタスクに集中し、マルチタスクの背景タイマーとして使わないこと。
  • 作業内容に合わせて時間を調整しましょう:負荷の高いタスクは短め、深い読書やコーディングには長めのセッションが効果的です。

利用シーン

集中と休憩のサイクルを回すデフォルトの集中25分・短い休憩5分・長い休憩15分・4ラウンドごとに長い休憩というサイクルで開始します。円形プログレス表示、フェーズタブ、ラウンドカウンター、スキップ・リセット操作によりセッションの状態が一目でわかります。25/5のリズムはチリーロの原案ですが、ウォームアップに時間がかかる深い作業では50/10のほうが合うこともあります。設定パネルではどちらも選べるため、軽い整理作業にも長い読書ブロックにも同じタイマーで対応できます。
自分だけのポモドーロリズムをカスタマイズする集中時間、短い・長い休憩の長さ、長い休憩までのラウンド数、自動開始の挙動、音声通知を調整できます。設定はlocalStorageに保存されるため、ページを開き直しても前のタイマー設定が復元されます。セッションログはブラウザ内にしか残らず、解析用の通信やアカウント同期、サーバーへの保存は一切行われないため、学習や集中力が必要な作業、注意力のパターンがデリケートな場面にも安心して使えます。
他のウィンドウで作業しながらタイマーを確認するページタイトルに残り時間と現在のフェーズが表示され、フェーズ切替時にWeb Audioのビープ音を鳴らすこともできます。ブラウザタブにタイマーを残したまま別のウィンドウで作業しても状態がわかります。タブが非表示になるとブラウザのスロットリングでsetIntervalが約1Hzに落とされるため、可視状態に戻った際にDate.now()でカウントを補正しています。
タスク別に保存済みプリセットを切り替える長いセッションの「深い作業プリセット」と短いセッションの「学習プリセット」を保存し、設定パネルから切り替えられます。自動開始を有効にすれば、次のフェーズにボタンを押さずに自動的に移行します。
長時間のミーティングやフロー状態でタイマーに縛られない共同通話、クリエイティブな執筆、手を動かす作業など、厳密な25/5の区切りが逆に邪魔になる場面では自動開始をオフにして音量を下げましょう。フェーズタブを使えば、ラウンドカウンターをリセットせずに一時停止やスキップができます。

仕組み

ポモドーロ・テクニックは1980年代後半にフランチェスコ・シリロが発表したもので、4つのフェーズからなるサイクルを体系化しています。25分間の集中区間(1ポモドーロ)、5分間の短い休憩を4ラウンド繰り返し、その後15〜30分の長い休憩を取ります。このスケジュールは4つの状態(`work`、`shortBreak`、`longBreak`、`idle`)を持つ有限状態機械(FSM)であり、単一のカウントダウンタイマーによって遷移が駆動されます。ラウンドカウンターは各 `work -> break` 遷移の後にインクリメントされ、`round % roundsBeforeLong === 0` のときに長い休憩が発火します。50/10(深い作業)や52/17(Draugiem Groupの生産性研究)などのバリエーションも、同じFSMをパラメータ化することで実現できます。 単純な計時は `setInterval(tick, 1000)` でカウンターをデクリメントしますが、JavaScriptのタイマードリフトが蓄積します。メインスレッドの競合下では各コールバックが1003〜1020ms遅れて発火し、HTML5 Page Visibility APIとブラウザポリシーにより、非表示タブのタイマーはChrome/Firefox/Safariで約1Hzに制限されます(Safariは1分に1回まで低下することもあります)。ドリフト耐性パターンでは、開始時に `endTimestamp = performance.now() + remainingMs` を保存し、各ティックで `remainingMs = Math.max(0, endTimestamp - performance.now())` を再計算します。これにより、10分間バックグラウンドに戻ったタブが復帰した際に、架空の10秒をカウントするのではなく即座に追いつきます。`performance.now()` は高精度モノトニッククロックで、壁時計の調整(NTP、手動時刻変更)の影響を受けません。`Date.now()` はページリフレッシュをまたいでデッドラインを永続化する場合にのみ使用されます。 4つのブラウザAPIにより、ユーザーが他の作業中でもタイマーが使い続けられます。Web Audio APIは資産コストゼロでフェーズ終了のビープ音を生成します。`new AudioContext()` -> 800Hzの `createOscillator()` -> 200msで減衰する `createGain()` -> `start()` そして `stop(currentTime + 0.2)`。Notifications APIは `Notification.requestPermission()` による1回の同意後、システムレベルのアラートを表示します。`new Notification('Focus complete', { body, icon, tag: 'pomodoro' })`(`tag` により高速連続発火を重複排除)。Wake Lock APIは `navigator.wakeLock.request('screen')` で集中セッション中にディスプレイのスリープを抑制し、休憩中は解放します。`document.title` は各ティックで `mm:ss - Focus` に書き換えられ、タブストリップに時間が表示され続けます。設定(所要時間、自動開始、サウンド)は `localStorage`(同期式、オリジンごと約5MBの容量制限)で永続化されます。円形プログレスはSVGの `<circle>` で、`stroke-dasharray = 2 * pi * r`、`stroke-dashoffset = dasharray * (1 - elapsed/total)` によりキャンバスのオーバーヘッドなしにリングをアニメーションします。注意力に関するバックグラウンド研究——シリロの25分の境界、ADHDの時間知覚の研究、コンテキストスイッチのコスト——は、なぜ柔軟な「あと5分」ではなく厳しい中断が有効かを説明しています。

  • 4つの状態(work/shortBreak/longBreak/idle)を持つFSM。`round % roundsBeforeLong === 0` で長い休憩が発火。デフォルト25/5/15分、4ラウンド。50/10/30(深い作業)や52/17(Draugiem研究)のバリエーションあり。
  • ドリフト耐性タイマー:`endTimestamp = performance.now() + remainingMs` を保存し、各ティックで `remainingMs = endTimestamp - performance.now()` を再計算。`setInterval` のスリップや非表示タブのスロットリング制限の影響を受けない。
  • `performance.now()` は高精度モノトニッククロック(NTPや手動の壁時計変更の影響なし)。`Date.now()` はページリロードをまたぐデッドラインの永続化にのみ使用。
  • Web Audio APIによるフェーズ終了ビープ:`new AudioContext()` -> `createOscillator()`(800Hz正弦波)-> 200msで線形に0に下がる `createGain()` -> `start()`/`stop()`。オーディオ資産の配信は不要。
  • Notifications APIによるシステムアラート:`Notification.requestPermission()` を1回実行後、`new Notification(title, { body, tag: 'pomodoro' })` を使用。タブが非表示の間に複数フェーズが終了した場合、`tag` により重複排除。
  • スクリーンWake Lock API:集中時に `navigator.wakeLock.request('screen')` でディスプレイスリープを抑制。休憩時に解放。タブが非表示になるとウェイクロックは自動解放され、`visibilitychange` で再取得が必要。
  • 永続化とUI:`localStorage`(約5MBの容量)で所要時間・自動開始・サウンドを保存。SVGリングは `stroke-dasharray = 2*pi*r` と `stroke-dashoffset` のアニメーション。`document.title` は `mm:ss - フェーズ名` に書き換えられ、タブストリップでも残り時間が確認可能。

使用例

クラシックポモドーロ(Francesco Cirillo)

集中:           25 分
短い休憩:        5 分
長い休憩:       15 分(4 ラウンドごと)
用途:           オフィスワーク・学習・コーディングの標準設定。1 サイクル = 約 2 時間

ディープワークモード

集中:           50 分
短い休憩:       10 分
長い休憩:       30 分(3 ラウンドごと)
用途:           執筆・デザイン・難問への取り組み。長めの集中ブロックでコンテキストスイッチを抑える

クイックイテレーションモード

集中:           15 分
短い休憩:        3 分
長い休憩:       10 分(5 ラウンドごと)
用途:           スタンドアップ、コードレビュー、短いフィードバックループ。集中ブロックが短いので着手しやすい

よくある質問

ポモドーロ・テクニックとは何ですか?

1980年代にFrancesco Cirilloによって開発されました。古典的なパターン:25分間集中して作業、5分間休憩、これを繰り返します。4回の「ポモドーロ」(作業間隔)の後、15〜30分の長い休憩を取ります。この構造は開始を強制し(タイマーがカウントダウン)、疲労を伴わずに継続を報酬する(小さな休憩)ものです。

作業時間と休憩時間をカスタマイズできますか?

はい。デフォルトは25/5/15(作業/短い休憩/長い休憩)で、4ポモドーロ後に長い休憩です。タスクに合わせて任意の時間を選択できます。50/10の「ウルトラディアン」リズムは深いコーディング作業に、90/30は学習セッションに、15/3は純粋な実行モードの作業に適しています。デフォルト値は出発点であり、唯一の正しい選択肢ではありません。

ポモドーロの途中で中断されたらどうしますか?

Cirilloの元のルール:中断が短ければ無視してポモドーロを終わらせます。停止しなければならない場合、そのポモドーロはカウントされず、最初からやり直します。厳格なルールは集中時間を守る訓練になります。現代の適応はより柔軟です。必要なら一時停止しますが、何が集中力を奪っているかを把握するために中断を記録してください。

タブがバックグラウンドにあるときアラームは鳴りますか?

ブラウザはバックグラウンドタブを抑制し、音声を抑制する場合があります。アラームを保証するには、タブをフォーカスしたままにする、ブラウザの通知許可を付与する、または重要な作業にはデスクトップのポモドーロアプリを使用してください。許可すればモバイルではバイブレーションも発生します。

完了したポモドーロの数をカウントしますか?

現在のラウンド数はセッション中に表示されますが、永続化されません。タイマー設定(作業/休憩時間、自動開始の設定)のみがlocalStorageに保存されます。完了したポモドーロのカウントは、ページを閉じたり更新したりするとリセットされます。

作業中の内容にラベルを付けられますか?

ほとんどのビルドでは、タイマーの上に表示される現在のタスク名を追加できます。画面録画のデモや自分自身に責任を持たせるのに便利です。一部の高度なビルドではタスクごとのポモドーロログを保持しており、フル機能のタスクトラッカーよりも軽量です。

データはアップロードされますか?

いいえ。タイマーの状態と履歴はブラウザのlocalStorageに保存されます。サーバーには何も送信されません。サイトデータを消去するとすべてリセットされます。