ポモドーロ・タイマー
集中して仕事、効率的に休憩、科学的に時間を管理
ポモドーロ・タイマーとは?
ポモドーロ・テクニックは、1980年代にフランチェスコ・シリロが創始した時間管理法です。核となる考え方は、仕事を25分の集中セッション(1つの「ポモドーロ」)に分割し、各ポモドーロの間に5分の休憩を取り、4ポモドーロ後に15〜30分の休憩を取ることです。この方法は注意力の向上、疲労の軽減、仕事のリズム感の強化に役立ちます。
使い方
基本操作
- 作業モードを選択:集中、短い休憩、または長い休憩
- 「開始」ボタンをクリックしてタイマーを開始
- タイマーが終了するまで作業に集中し、アラートが鳴ったら休憩しましょう
- 4回のポモドーロごとに長い休憩を楽しみましょう
カスタム設定
集中のコツ
- 1回の集中セッションでは1つの明確なタスクに集中し、マルチタスクの背景タイマーとして使わないこと。
- 作業内容に合わせて時間を調整しましょう:負荷の高いタスクは短め、深い読書やコーディングには長めのセッションが効果的です。
利用シーン
仕組み
ポモドーロ・テクニックは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に保存されます。サーバーには何も送信されません。サイトデータを消去するとすべてリセットされます。