マスターに向けた拡張項目
GPS-MEMOマスター版へ向けた拡張項目の作業計画ページ。詳細な実装作業はCodex側の作業計画ファイルで管理する。
2026-07-23 A1/Eprime 位置判定・測位診断強化
Codex側の正式な作業計画ファイルは core/課題/課題260723a_A1_Eprime_location_diagnostics.md。SESSION_LIVEもこの計画へ切り替え済み。
背景
A「バックグラウンド未起動でも通知」と、E′「測位頻度・iOS瞬間速度・確認測位の見直し」に関する実地ログから、通知失敗の原因が一つではないことが分かった。当初は「長時間バックグラウンドでアプリが起きない」が主犯候補だったが、2026-07-22の帰宅経路では長時間バックグラウンド後でも複数地点で到着判定と通知履歴保存が成立している。一方で、2026-07-21夜の橋本/鳥貴族、2026-07-23朝のリコスでは別の失敗が見えている。
2026-07-22 帰宅経路で確定したこと
- 門前仲町、代々木上原駅、多摩川、芹が谷公園、セブンイレブン、チー実家、リコスで
arrivalとfire_eventsが残った。 - このため、長時間バックグラウンド後でもiOS region監視から通知判定へ復帰できるケースはある。
- 門前仲町はDB上
notification_delivery_probe pending=false delivered=true lifecycle=pausedまで出ているが、G2/Watch/iPhone表示として気づけていない。これはGPS判定ではなく、OS通知表示、Watch/G2ミラー、ロック解除タイミング、通知ID再利用まわりの切り分け対象である。
2026-07-23 朝リコスで確定したこと
- 前夜20:30頃に最後にGPS-MEMOを起動し、以後朝までGPS-MEMO本体は起動していない。
- 08:05頃にリコスへ移動し、約2分滞在して退店したが、G2通知もiPhone通知表示もなかった。
- DBには08:08:29
geofence_enter リコス、08:08:29sample dist=50m acc=20m notifyRadius=25m、08:08:36sample dist=51m acc=6m notifyRadius=25mが残っている。 arrivalとfire_eventsはない。- iOSが一切起こしていないわけではなく、SwiftからDartまで少なくとも一部は届いている。
- 約2分滞在したのにサンプルは7秒間に2件だけで途絶しているため、確認フェーズ中の
distanceFilterにより、屋内・低速・静止時の位置報告が止まった可能性が高い。 - リコス/自宅周辺はGoogle Mapでも位置が飛ぶ地域であり、
acc=6mと高精度を自称しながら実位置と50m級でずれる可能性がある。短域25mはこの地域では成立しないことがある。
2026-07-21 夜 橋本/鳥貴族で確定したこと
- ふゆきさんの行動は、横浜線橋本駅から鳥貴族橋本へ移動し、食事後に横浜線橋本駅へ戻って帰宅。
- 横浜線橋本駅と鳥貴族橋本の中心距離は約320.5m。
- 横浜線橋本駅は通知半径125m、入った半径約212.5m、安全半径約161.6m。鳥貴族橋本は通知半径25m、入った半径50m。
- したがって、鳥貴族滞在中は横浜線橋本駅の通知・入った・安全エリアのすべての外にいる。
- DBには20:07:20 横浜線橋本駅
arrival、20:07:28 横浜線橋本駅notification_delivery_probe ... delivered=trueがある。 - 20:12頃に配達窓ログが終わり、20:12〜22:34頃はGPS-MEMO診断ログがほぼ空白。
- 鳥貴族橋本の
geofence_enterは記録されていない。 - 横浜線橋本駅の
safe_exit_rearmedは22:46:01まで記録されていない。 - つまり「安全エリア内にいたから再通知されなかった」ではない。実際には安全エリア外へ出ていたはずなのに、退出確認と鳥貴族の入ったイベントが食事中に記録されていない。
- Swift永続ログがないため、iOSがイベントを出していないのか、Swiftが受けてDartに渡せていないのか、Dartが起きていないのかは確定できない。
問題の分解
- A1: iOS/Swift/Dart境界のブラックボックス。沈黙時に、iOSがイベントを出していないのか、Swiftで止まったのか、Dartで止まったのかが分からない。
- E′: 確認フェーズ中の
distanceFilter問題。enter後にサンプルが少数で止まり、判定もタイムアウトも進まない。 - 判定条件/半径: リコス/自宅周辺のように位置が飛ぶ地域では、通知半径25mが測位ノイズより小さくなる。
- 通知表示:
notification_delivery_probe delivered=trueでもユーザーが表示として気づけないケースがある。iPhone通知センターに実物が残っているかを基準に、GPS-MEMO側通知登録とWatch/G2ミラーを分ける。
次の実装候補
- 判定条件緩和の検討: 現行の
dist <= notifyRadiusかつacc <= notifyRadiusに対し、候補としてdist - acc <= notifyRadiusと2サンプル連続成立を検討する。ただし誤発火リスクがあるため、A1/E′後のログで評価する。
次GO候補
- 7/21夜橋本/鳥貴族、7/23朝リコスを明記した専用自動テスト(関連挙動の回帰テストは実装済み)
- A1/E′実装に対するStudioLLMデバッグ
拡張項目一覧
運用注意
- DB事実、座標、半径、ふゆきさんの行動事実を突き合わせる前に原因結論を出さない。
- A、K、E′、通知表示問題を混同しない。
- ログにないことを、存在しないことと即断しない。現行アプリにはSwift永続パンくずがあるが、ローテーション範囲外や未記録の可能性を分けて扱う。
- F′、メモ配置UI再設計、安全マージン最小値変更は今回の独立タスクから外す。安全マージンの新しい値は後日オーナーが提示するまで確定しない。