Idea, Concept, and Technology

アイデアを形に

「降車タイマー」をリリースしました — 寝過ごし・乗り過ごしを防ぐ iOS アプリ

目的の駅に着くまで、残りの距離と時間を Dynamic Island / ロック画面 に出しっぱなしにして、近づいたら段階的に知らせてくれる iOS アプリ「降車タイマー」を App Store で公開しました。

📱 App Store でダウンロード(iOS 17.0 以降・無料)

降車タイマー

降車タイマー

  • icot
  • Navigation
  • Free
apps.apple.com

なにをするアプリ?

電車で「気づいたら乗り過ごしていた」「うたた寝して降りる駅を通過した」——そういう失敗を減らすためのアプリです。

使い方はシンプルです。

  1. 降りたい駅を検索して選ぶ
  2. 「監視開始」を押す
  3. あとはスマホをしまってOK

監視中は、目的駅までの残り距離推定残り時間が Live Activity(ロック画面や Dynamic Island)に常駐します。画面を開かなくても、ちらっと見れば「あと2駅くらいだな」と分かる。そして駅が近づくと、段階的に通知が強くなっていきます。

  • 3km 手前: 穏やかに「そろそろです」
  • 1.5km 手前: 強めの通知でしっかり気づかせる
  • 500m(到着圏): 持ち物チェックの通知+連続通知でダメ押し

閾値(何km手前で鳴らすか)は設定画面で自分好みに変えられます。

時刻表 API は使っていません

このアプリ、実は乗換案内や時刻表の API を一切使っていません。仕組みは「GPS で今いる場所を測り、駅の位置データとの距離を計算する」だけ。いわゆるジオフェンス方式です。

そのおかげで、

  • どの路線でも動く(対応路線という概念がない)
  • 通信が要らないので圏外でも動く
  • そして何より位置情報が一切外に出ない

という設計になっています。

プライバシーは「全部、端末の中で完結」

個人的にいちばんこだわったのがここです。位置情報を含むすべての処理が端末の中で完結し、外部に送信されません。 広告 SDK も解析ツールも入れていません。「今どこにいるか」という一番プライベートな情報を扱うアプリなので、そこは妥協したくありませんでした。

だから完全無料で、広告も出しません。

地下でも安心のフォールバック

GPS 方式の弱点は「地下鉄・トンネルでは測位できない」こと。ここは正直に割り切りつつ、保険を用意しました。

  • 一定時間 GPS が更新されないと、Live Activity に「位置情報が取得できません」と正直に表示する
  • 代わりに手動タイマーモードを用意。到着予定時刻を入れてカウントダウンで知らせる

「地下に入ったら黙って外れる」より、状態が見えて代替手段がある方が安心だと考えました。

技術的なメモ(つくり手向け)

中身は SwiftUI + ActivityKit + CoreLocation です。設計で意識したのは、位置計算のロジックを CoreLocation から切り離すこと。距離計算(Haversine)・移動速度の平均・ETA 推定・段階アラートの判定を「純粋な Swift」として書き、緯度経度を注入する形にしました。おかげでシミュレータや実機なしにユニットテストが回せます。

バッテリーにも配慮していて、目的駅まで遠いうちは測位精度を粗く、近づいたら最高精度に切り替える二段構えにしています。バックグラウンドでも監視を続けるので、スマホをポケットに入れたままで大丈夫です。

これから

まずは最小構成での公開です。使ってもらいながら、次のような機能を検討しています。

  • 乗り換え駅対応(途中の乗り換え駅でもアラート)
  • Apple Watch 対応(手首への触覚アラートはこのアプリと相性が良さそう)
  • ホーム画面ウィジェットからのワンタップ監視開始
  • Dynamic Island の表示改善

「乗り過ごしがちなんだよな」という方、よかったら使ってみてください。感想やご要望もお待ちしています。

📱 App Store でダウンロード