ykich — notes
ArticlesTags
~/articles/posture-timer-app

© 2026 ykich

CONTENTS

  • はじめに
  • なぜ作ったか
  • 機能
  • 動作例
  • 技術スタック
  • 使ってみての所感
  • リンク

座りすぎを自覚するために、macOSメニューバーアプリ[PostureTimer]を作った

2026-05-12·ykich·#macos#swift

はじめに

リモートワークで座りっぱなしになる問題を解決したくて、macOSのメニューバーに常駐する座位/立位時間トラッカー PostureTimer を作りました。

https://github.com/ykich/posture-timer-app

なぜ作ったか

リモートワークが続いて、気付くと数時間ぶっ通しで座っていることが増えました。Apple Watchのスタンド通知やポモドーロタイマーも試しましたが、自分の用途には合いませんでした。

  • スタンド通知は気付かないことが多く、リマインダーとしては弱い
  • ポモドーロアプリは作業集中向けで、姿勢の切り替えという目的とは違う
  • そもそも「自分が今日どれくらい座っていたか」を後から振り返れない

欲しかったのは、メニューバーに常駐して邪魔をせず、座位/立位の切り替えを記録し、設定した時間を超えたら通知してくれるシンプルなツールでした。既存のものでぴったり合うものが見つからなかったので、自分で作りました。

機能

  • メニューバーに常駐(MenuBarExtra使用)
  • 状態ごとに設定可能なアラート時間、繰り返し通知(デフォルト: 座位30分、立位60分)
  • ホットキーでの状態切り替え
  • ログイン時の自動起動オプション
  • システム通知での座りすぎアラート


動作例

立っているときのメニューバーの様子


座っているときのメニューバーの様子


通知の例


設定画面

技術スタック

  • 言語: Swift
  • UI: SwiftUI + AppKit のハイブリッド構成
  • 状態管理: Combine
  • 通知: UserNotifications framework
  • データ保存: UserDefaults(設定をJSONエンコードして保存)
  • 自動起動: ~/Library/LaunchAgents に plist を配置する方式

設定項目が少ないので、Core DataやSwiftDataは使わず、AppConfig という単一のCodable構造体をJSONとしてUserDefaultsに保存する最小構成にしています。

使ってみての所感

自分で2ヶ月ほど使っていますが、メニューバーアイコンが視界の端に常にあることで「今座って何分経った」が自然に意識に入るようになりました。

特に効果があったのは、通知よりもアイコン自体の存在でした。通知は集中していると見落としますが、メニューバーの数字は視界に入り続けるので、能動的に立つきっかけになります。

完全に自分用に作ったアプリですが、同じようにmacOSで仕事をしていて座りすぎを気にしている人には使えるかもしれない、と思って公開しました。

リンク

  • GitHub: https://github.com/ykich/posture-timer-app
  • ライセンス: MIT

フィードバックやIssueはGitHubで受け付けています。


#macos#swift
← Back to notes