メインコンテンツへスキップ

マスターに向けた拡張項目

GPS-MEMOマスター版へ向けた拡張項目の作業計画ページ。詳細な実装作業はCodex側の作業計画ファイルで管理する。

拡張項目一覧

ステータス 機能名 機能説明 現状 実装難易度
実装済み・実機合格・継続観測中 A: バックグラウンド未起動でも通知 スマホアプリがバックグラウンド起動していなかったとしても通知したい。現状の到着通知プロトタイプを、アプリ非起動時にも成立する形へ拡張する。 Swift永続パンくず、段階円、SLC、起動時単発測位を実装。10時間無操作後もリコス・帰宅のiPhone通知とG2表示に成功。数日単位の実績を継続収集中。
一部実装・実測継続 B: 消費電力削減 スマホ側の消費電力をもっと抑えたい。位置監視、判定頻度、通知条件のON/OFFを整理し、実用時の電池負荷を下げる。 現在地から2.5kmの選定圏、18円の枠予算、距離順の休眠、確認フェーズ後のDart側測位間引きを実装。長期常用時の電池消費評価は未完了。
実装済み・実機確認済み C: 通知エリア設定値の洗練 入った、通知のエリア設定値をもっと洗練させる。通知半径、到着判定、実際に思い出したい距離感を調整し、誤通知や遅すぎる通知を減らす。 通知半径を25・60・125・250・375・500mの6段プリセットへ変更し、iOS判定円と安全エリア円を新導出へ接続。500mは試験枠。往復走行と長時間キル後走行で検出を確認済み。
主要UI実装済み・スマホ実機確認中 D: UI見直し UIが致命的に使いにくいので見直す。メモ追加、最新通知、メモ一覧、診断ログ、到着テストなどの配置を、通常利用者が迷わない構成にする。 スマホ版は6段半径、通知円地図、利用者向け文言、診断UI撤去、アプリ情報表示まで実装。G2版は画面ツリー、距離検索、セッションキャッシュ、通知設定表示を実装。Hub実機確認済み、スマホ版1.0.1は実機確認中。
実装済み・検証合格 E: 重なり合った複数の入ったエリア対応 重なり合った複数の通知エリアに対応する。複数の通知条件を同時に満たした場合、通知は該当メモのうち一番登録が新しいものを表示する。一方で履歴には条件を満たしたメモをすべて記録する。将来の拡張として、優先度、中心距離、半径をタイブレークに入れられる余地を残す。 複数メモの独立確認、同一サンプルでの全メモ評価、退出後の再武装を実装。自動テストと往復実機走行で確認済み。 低-中
主要対策実装済み・一部残 E′: iOS瞬間速度の平滑化 瞬間速度の揺れによる測位条件の変動を抑える。 確認中のdistanceFilter=none、進入後60秒の全更新判定、その後10〜30秒のDart側間引きを実装。iOS瞬間速度の平滑化は未実装。
実装済み・実機確認済み F: 近くのメモ検索 何かしらの操作をすると、現在地から設定した距離の範囲のメモを検索し、リスト表示する。例えば秋葉原に行った時に、近くのメモ検索で数キロ範囲のメモを見つけ、店の前まで行かなくても未処理の用事を思い出せるようにする。 smartphone APIとG2の距離区分検索、距離順表示、同距離時の新しいメモ優先を実装。0.1.8でオーナー実機確認済み。距離区分は定義表で増減・変更可能。
未実装 G: 履歴のフォルダ化 現在はすべての履歴が一律でリスト表示されているが、これをフォルダ階層やグループ単位で表示できるようにする。UIは別途検討しつつ、内部的には特定グループで履歴を絞り込める仕組みを用意する。 G2の履歴取得・表示機能はあるが、履歴のフォルダ階層化やグループ絞り込みは未実装。
未実装 H: メモ情報のインポート 現在はメモを手入力しているが、PCなどで作ったデータをデータアセットとして生成し、インポートできるようにする。鎌倉地域の観光スポットデータ集のようなものを作成し、ユーザーはダウンロードしてインポート、削除できる。作成者側にはPCでデータを作成し、ダウンロードできる形式へ変換し、ストアなどへ登録する導線が必要になる。FとGを組み合わせることで、近隣の観光地だけをリスト表示できる。 データ集の作成、配布、インポート、削除はいずれも未実装。 中-高
一部実装・スマホ実機確認中 I: 曜日・時間による通知ON/OFF 入った、通知判定を曜日、時間でON/OFFできるようにする。帰宅時に最寄駅へ着いた時、ランチタイムだけ表示したい、といった用途に対応する。OFF判定時はGPS判定のための電池を消費しないようにする。 全曜日ON・開始/終了指定なしを既定とし、曜日・時間帯設定を実装。到着判定・履歴・再武装は維持し、設定時間外はOS通知だけを抑止。G2詳細画面への設定表示も実装。自動テスト合格、スマホ実機確認中。OFF時間帯の測位停止は現行方針では実装していない。 中-高
未実装 J: 自動車・進行方向別・超広域モード 高速道路の上り・下りなど進行方向に応じて通知を分け、サービスエリアや沿線の名所を高速移動中に案内する。 徒歩版から分離した将来項目。方向判定、超広域半径、専用UIはいずれも未実装。
修正済み・実機確認合格 K: G2履歴の取得・画面更新不良 スマホに履歴があるのにG2で取得・反映されない問題を切り分けて解消する。 履歴取得、起動時接続判定、セッション内キャッシュ、自動更新、再取得、画面反映を修正。0.1.8で履歴・画面遷移・キャッシュ表示をオーナー実機確認済み。
構想・調査済み/未実装 L: 地域カタログ サーバーから地域別のグルメ、名所、イベント等をスマホへ配信し、現在地から近い順の能動検索、地図ルート表示、利用者が明示的にONにした場合だけのまとめ通知を提供する。 2026年7月26日に構想と現行実装の接続点を調査。Fの距離検索、Iの曜日・時間設定、地図アプリ連携は再利用可能。地域カタログ専用DB、配信、通知設定、まとめ通知、UI、サーバーは未実装。

L: 地域カタログ(2026年7月26日 調査追記)

地域カタログはG2専用ではなく、iPhone版・Android版GPS-MEMOが共通利用する公開地域情報の配信基盤とする。データはアプリへ固定収録せず、サーバー上で更新可能にし、スマホが必要な地域を取得・保存する。G2、Apple Watch、Pixel Watchは原則としてスマホ経由で必要な情報を受け取る。

利用者向けの初期機能

  • メインメニューに「おすすめ」を追加し、グルメ、名所、イベント等をカテゴリと距離で絞り、近い順に表示する。
  • 能動検索だけでは通知履歴や到着履歴を発生させない。
  • 詳細画面からAppleマップまたはGoogle Mapsへ座標を渡してルートを開く。
  • 地域カタログの項目を個人メモと混同せず、利用者が選んだ項目だけを自分のGPS-MEMOへ追加する。
  • 自動通知は利用者が地域カタログ、カテゴリ、距離、期間を明示的にONにした場合だけ行い、複数地点は1本のまとめ通知にする。

現行実装から再利用できる部分

  • G2の現在地取得、距離計算、距離区分、近い順の表示。
  • スマホからG2へ生存メモと座標を渡すlocalhost APIの考え方。
  • メモごとの通知曜日、開始時刻、終了時刻の判定。
  • 現在地に近い対象を優先するiOS監視枠配分。

監視枠の重要制約

iOSのCore Locationは1アプリあたり同時監視regionを20件に制限する。GPS-MEMO側も通常18枠、現在地不明時は最大20件としている。このため、観光地点をすべて通常メモへ変換して監視登録する方式は成立しない。地域カタログは個人メモと監視枠を分け、地域単位の粗い起床枠または現在地付近の候補絞り込みを使う。能動検索は保存済み全項目を対象にできるが、自動通知は利用者設定と監視枠予算で選んだ候補だけを対象にする。

初期実装として妥当な方式

  1. 地域別のバージョン付きJSONと更新マニフェストをサーバーへ置く。
  2. 利用者が選んだ地域だけスマホへダウンロードし、距離検索は端末内で行う。
  3. 正確な現在地を検索のたびにサーバーへ送らない。
  4. 地域カタログ、地点、利用者の通知設定を個人メモとは別テーブルで保存する。
  5. 個人メモへ追加する時は内容を複製し、元のカタログIDと地点IDを由来として保持する。元データが失効しても個人メモを勝手に削除しない。
  6. 自動通知は地域単位の起床と端末内候補選択を組み合わせ、地点ごとの通知連打を避ける。

必要なデータ

  • カタログ: カタログID、名称、地域、バージョン、配信元、ライセンス、更新日時。
  • 地点: 地点ID、カタログID、カテゴリ、題名、説明、座標、有効開始日・終了日、更新日時、削除状態。
  • 利用者設定: カタログID、通知ON/OFF、対象カテゴリ、通知距離、通知期間、再通知抑止時刻。

外部データと地図連携

自治体や国のオープンデータは候補になるが、データごとにライセンス、商用利用、表示義務、更新頻度、座標精度を確認する。公開Nominatimは大量利用、系統的なPOI取得、定期的一括検索に制限があるため、地域カタログの観光地点を一括収集する供給元には使わない。ルート表示は、Apple MapsとGoogle Mapsの公式URLへ目的地座標を渡す方式で実現できる。

現在の状態

構想、現行ソースとの接続点、外部仕様の調査まで完了。地域カタログ専用DB、データ配信、更新処理、通知設定、まとめ通知、「おすすめ」UI、G2表示、サーバー構築、DB migration、ビルド、実機確認は未着手。

G2APP UI

画面ツリー
drawing-1-1784956497.png

各種画面レイアウト・仕様
drawing-1-1784955479.png

画面0:レイアウトの基本フォーマット

 

エリアは下記で構成されている

  • 見出しエリア
    画面の見出しを記載する
  • 時刻エリア
    現在時刻を表示する
    特に指定がない限り常時表示する
  • 描画エリア
    その画面に必要な内容を描画する
  • ヘルプ・操作説明エリア

共通操作

  • シングルタップ
    決定
  • ダブルタップ
    戻る
  • その他
    5秒間無操作で表示OFF、その後タップで再表示(5秒間)

画面1:メインメニュー
このアプリのツリーの根っこ

  • 描画エリア
    下記の3つのコマンドが並ぶ。
  1. 通知履歴
  2. メモを確認
  3. 近くのメモを探す

カーソルで選択して、シングルタップで遷移。


  • 見出しエリア
    メインメニュー
  • ヘルプ
    • 「通知履歴」を選択時
      通知されたメモを表示します。 2タップ:戻る
    • 「メモを確認」を選択時
      作成済みのメモを表示します。 2タップ:戻る
    • 「近くのメモを探す」を選択時
      指定距離範囲のメモを検索します。 2タップ:戻る 
  • その他
    なし

画面A:通知履歴
通知済みメモのリストを履歴として表示する画面

  • 描画エリア
    通知済みメモをリスト表示。

    最新が上、日付で区切る。
    最大20件。

    表示状態で通知が追加されても自動更新されない。
    再検索をする場合はメインメニューへ一度もどる。
    現在の実装内容に対して下記の修正を行う。
  • 見出しエリア
    通知履歴の一覧
  • ヘルプ
    メモを表示します。 2タップ:戻る
  • その他
    なし

画面A’:通知履歴

選択したメモを表示する画面

  • 描画エリア
    選択したメモの内容を表示
  • 見出しエリア(表示しているメモ名)
    メモの名前
  • ヘルプ
    2タップ:戻る
  • その他
    なし

画面B:メモを確認
作成済みメモをリスト表示する画面。

  • 描画エリア
    作成済みメモをリスト表示。
    作成タイミングが新しいメモが上に表示される。
    メモの表示上限数はシステムで決められた数とする。
  • 見出しエリア
    メモの一覧
  • ヘルプ
    メモを表示します。 2タップ:戻る
  • その他
    なし

画面B’:メモを確認
選択したメモを表示する画面

  • 描画エリア
    選択したメモの内容を表示。
  • 見出しエリア(表示しているメモ名)
    メモの名前
  • ヘルプ
    2タップ:戻る
  • その他
    なし

画面C:現在地からメモを検索

現在地からプリセットされた距離を選ぶと、その範囲内のメモを表示する、ここは距離を選ぶ画面
距離の選択枝は下記の通り。

  1. 現在地〜500m
  2. 500m〜1km
  3. 1km〜5km
  4. 5km以上
  • 描画エリア
    • 現在地〜500m
    • 500m〜1km
    • 1km〜5km
    • 5km以上
  • 見出しエリア
    現在地から距離でメモを検索
  • ヘルプ
    検索範囲を選びます。 2タップ:戻る
  • その他
    なし

画面C’:現在地からメモを検索
現在地から指定範囲のメモをリスト表示する画面

  • 描画エリア
    指定範囲のメモをリストアップ。
    フィルタ結果のメモは距離が短いものが上。
    同距離だった場合は新しいメモが上。
    表示状態で移動しても自動更新されない。
  • 見出しエリア
    1つ前の画面で選んだ範囲:メモの一覧
  • ヘルプ
    メモを表示します。 2タップ:戻る
  • その他
    なし

画面C’2:現在地からメモを検索

選択したメモを表示する画面

  • 描画エリア
    選択したメモの内容を表示。
  • 見出しエリア(表示しているメモ名)
    メモの名前
  • ヘルプ
    2タップ:戻る
  • その他
    なし

画面X:スマホへ接続できない場合

これは共通画面として下記を実装する。

  • 描画エリア
    GPS-MEMOアプリと通信できません。
    アプリを起動した状態で、再取得してください。
  • 見出しエリア
    その時の画面の見出し内容
  • ヘルプ
    ヘルプエリアは特殊処理とする。
    実装済みのように横方向へコマンドが並ぶ。
    コマンドは下記の通り
    再取得 
  • その他
    MEMOアプリと通信できない場合は、再取得、またはアプリを終了するしか行えないようにする。
    この実装で良いかは悩んでいる。
    今現在はキャッシュを表示する機能があるが、キャッシュはそのまま残しておいて、UIでキャッシュが表示できない、という処置としておいてほしい。

運用注意

  • DB事実、座標、半径、ふゆきさんの行動事実を突き合わせる前に原因結論を出さない。
  • A、K、E′、通知表示問題を混同しない。
  • ログにないことを、存在しないことと即断しない。現行アプリにはSwift永続パンくずがあるが、ローテーション範囲外や未記録の可能性を分けて扱う。
  • F′、メモ配置UI再設計、安全マージン最小値変更は今回の独立タスクから外す。安全マージンの新しい値は後日オーナーが提示するまで確定しない。