無料ポモドーロタイマー用ショートカットを Apple 純正の時計アプリだけで作ってみた

目次

導入

生産性やタイパが最重要視される現代社会においては、時間の囚人と化した人々の暮らしを更に加速させるべく、星の数ほどの製品やサービスが日夜生まれては消え、を繰り返している。

ポモドーロテクニック(The Pomodoro® Technique)はそのアクセラレータの役割を担い、アプリ市場には数多のポモドーロタイマーアプリが所狭しと並んでいる。

ご多分に漏れず囚われの身となった私は、しばらくマーケットを徘徊した。そして片っ端から美味しそうなトマトを試食したが、「これだ!」と感じるグルメには出会えなかった。
あるものは無料ユーザへの機能制限が厳しく、またあるものは「ポモドーロタイマーには少々荷が重いのでは・・?」と思わざるを得ない程に機能が盛り沢山だった。

無いなら自分で作ろうということで、今回は Apple のショートカット機能を使って自作してみた。なお、突貫工事なのでクオリティは保証できない。

ポモドーロテクニックとは、物事に集中するのに決められたインターバルに時間を小分けし、短期間で集中・休憩を繰り返すというもの。大抵は25分間集中し、その後は小休憩をはさむ。このアプローチは常に能動的な思考を促し、特に先延ばし傾向を軽減したり深い集中に入りやすくするのに役立つという。

想定読者

  • 無料で便利なポモドーロタイマーが欲しい
  • Apple のショートカット機能でポモドーロタイマーを作ってみたいが、サードパーティ製のアプリには頼りたくない

現時点での私の習熟度

記事執筆時点での私の習熟度は次の通り。

  • ソフトウェアエンジニアとして計 3 年の経験あり(勤続ではない)
  • Apple ショートカット作成は 1 週間程度の経験のみ
  • 5 つほどのショートカットを作成済み

本題

下記リンクから完成品をダウンロードできる。

注意
iOS/iPadOS/MacOS のユーザのみ利用可能

設計コンセプト

  • Apple 純正アプリ x ショートカット機能で作る
  • 機能は最小限にとどめる
  • ユーザ自身でカスタマイズ可能

使い方

 集中タイムをユーザに聞いている
集中タイムをユーザに聞いている

ポモドーロタイマーの使用に際して、手順はこれだけだ。

  1. ショートカットのアイコンをタップかクリックして起動する(あらかじめホーム画面などに設置しておく)
  2. 集中する時間を決める(デフォルトは 25 分)
  3. 休憩する時間を決める(デフォルトは 5 分)

ここまでで、タイマーが画面表示されてカウントダウンが始まる。さあ、事始めといこうか。

 タイマータブ
タイマータブ

ワークフロー

ポモドーロショートカットは裏で次のような流れに沿って動いている。仕組みに興味がなければ読み飛ばしても無問題。

ショートカットはパラメータを受け取っているか?

↪️はい。

  • 連結文字列を分解してパラメータから集中&休憩タイムをそれぞれ取り出す
Info
この処理については本章で後々説明がある

↪️いいえ。

  • 集中タイムをユーザに聞く(分単位で)
  • 休憩タイムをユーザに聞く(分単位で)

ここからは同じ流れに沿って動く。

  • 𝕏 集中&休憩タイムを変数にセットする
  • ✋数秒待つ
  • ⏰時計アプリのタイマータブを開く
  • 📢集中タイムが始まった旨をユーザに通知する
  • 🔄集中&休憩タイムに 60 を掛けて秒単位に変換する
  • 𝕏 秒単位の集中タイムを変数にセットする
  • ✋集中タイムの時間分待つ
  • ⚠️続けるかどうか決定を促すアラートを表示する
    • キャンセルの場合ここで終了
  • ⏰時計アプリのタイマータブを開く
  • 📢休憩タイムが始まった旨をユーザに通知する
  • 𝕏 秒単位の休憩タイムを変数にセットする
  • ✋休憩タイムの時間分待つ
  • ⚠️続けるかどうか決定を促すアラートを表示する
    • キャンセルの場合ここで終了
  • 🔄分単位の集中&休憩タイムを連結して文字列に変換する
  • 𝕏 連結文字列を変数にセットする
  • 🔛その変数を自身に渡してもう一度起動する

特筆すべきはこの再帰的とも言える構造とパラメータだ。
ショートカットはパラメータ(引数)を受け取ることができるので、そこへ初回に設定した時間を渡せば次回以降はその時間を使ってタイマーをセットしてくれる。

その他重要な点として、Apple のショートカットには JavaScript のasync/awaitのような機能がない。1
その為、await の代わりに"xxx 待機"のブロックを使って、タイマーのカウントダウンとタイミングが合うようにしてある。無理矢理感は拭えない。

"xxx 待機"のブロックが秒単位の数値しか受け付けないから。
"ショートカットを実行"のブロックは1つしかパラメータを受け付けないから。なかなかの荒業である。

注意点

このショートカットを利用する際には、次の制限事項を確認されたし。

  • Apple 純正の時計アプリと完全にシンクロしているわけではない
    • 先述のワークフローから逸脱したアクションはショートカットと時計アプリの同調を乱す原因になりえる
      • 例: アラートをボタン以外の箇所をタップして閉じる
        • ショートカットが止まり、時計アプリは動いたまま
      • 例: タイマーを直接時計アプリから調整する
        • 時計アプリに影響を及ぼすが、ショートカットは動いたまま

結び

ショートカットをインストールしたら、デフォルトの集中&休憩タイムなど、お好みでカスタマイズが可能。

ちなみに、私はポモドーロショートカットをこのように使っている。

  • iPhone & iPad のホーム画面からアイコンをタップして起動できる
  • 勉強モードがオンになったら自動でタイマーを起動する
    • Apple ショートカットのオートメーションという機能で実装している


  1. 私の知る限り、2024 年 10 月現在ではこうした非同期処理機能はなかった。


感謝👏

◀ トップに戻る ページ上部へ ▲