新機能:写真エクスプローラー · 登録された旅行写真の検索

開発者向けドキュメント

「今日から」、および「過去と現在」、および「パスポートスタンプ」

「今日から」、および「過去と現在」、および「パスポートスタンプ」は、異なる技術を使用します。カレンダーの関連付け、空間的な分類、およびOCRです。これらはすべて、同じ原則に従います。役立つものを見つけ、説明し、最終的な決定は旅行者に委ねます。

によって。 11 分の読書時間
Mapsake パスポート: 旅行統計、地図、およびメモリーカード

過去を蘇らせる三つの方法

ほとんどの旅行ソフトウェアは、次の旅行に最適化されています。Mapsakeも、5年、10年、または20年前に発生した旅行に戻るのに役立つように設計されています。

このアップデートは、過去への3つの異なる道を追加します。 この日 カレンダーとの関連性を見つけます。 過去と現在 場所との関連性を見つけます。 パスポートスタンプ 物理的な資料を保存し、それを地図の改善に使用します。

これらは、共通の設計原則を共有しています。ユーザーがすでに所有しているデータから始め、デバイス上で興味深い処理を行い、推測が間違っている可能性がある場合は、常に確認を求めます。

このリリースには、保持という考え方がありますが、それは「より多くの通知を送信する」という意味ではありません。ライフタイムのアトラスは、古いデータを再利用する新しい理由を生み出すことで役立ちます。最も良い理由は、ユーザーが手動でキュレーションする必要のない、真のつながりです。

「今日から」、および「過去と現在」、および「スタンプ」は、すべてこれらの関連付けを異なる方法で作成します。これにより、Mapsakeの成長する機能セットが、写真の読み込み、場所の特定、レンダリング、ナビゲーション、およびプライバシーのルールを共有し、単一の巨大なメモリエンジンに統合されることなく機能するかどうかをテストできました。

「今日から」機能は、写真だけでなく、日付情報も使用します。

最も単純な実装では、写真ライブラリからその月の写真を探します。Mapsakeはさらに一歩進んでおり、写真は旅行の証拠のほんの一種に過ぎません。

地図上の各場所には、手動エントリ、インポート、フライト、および写真履歴からの滞在日数を含めることができます。この機能は、キャッシュされた写真のメタデータと組み合わせ、年ごとにグループ化し、最も具体的な場所を最初に表示します。都市または空港が記憶の主要な要素となり、地域と国は同じストーリーの一部となります。

写真のフィルタリングは、メインインターフェースから分離されています。これは、クエリが単純に見えても、大きなライブラリは依然として大きなライブラリだからです。結果は、最新の順にグループ化され、年ごとのカードとして表示されます。1つのカードを開くと、ギャラリーが表示され、関連する場所のストーリーへのリンクが提供されます。

また、静かな日には、最も近い記憶を優先する機能があります。もし7月の9に何もデータがない場合、Mapsakeは、何もデータがない代わりに、最も近い日付のデータを示すことができます。

カレンダーのマッチングには、思っている以上に多くの複雑なケースがあります。

「同じ月と日」は、タイムゾーンや不完全な記録が考慮されるまで、取るに足らない条件のように聞こえます。写真の日付はキャプチャされたメディアから取得されますが、手動で入力された場所の日付やインポートされた日付は、正確な瞬間ではなく、1日全体を表す場合があります。そのため、この機能は、タイムスタンプが正確に 365 日間離れているかどうかを判断するのではなく、カレンダーの要素で機能します。

場所は、表示のために最も細かいものから順に並べられます。 アトラスが、ある場所の空港、都市、地域、国を1日に知っている場合、空港または都市がカードのタイトルになるべきです。 全てを個別の思い出としてリストすると、証拠の一部が誇張されてしまいます。 完全な階層構造は、場所のチップとして利用可能であり、周囲の物語に貢献します。

写真のサイドは、Mapsakeがインポート時にすでに構築したメタデータキャッシュを使用します。Profileを開くたびに、PhotoKitにライブラリ全体を再スキャンさせることはありません。1日のフィルタリングは、バックグラウンドタスクで実行され、インターフェースは、遅延して読み込むことができる資産の小さなコレクションを受け取ります。

最初のエントリポイントは、Atlasに配置されていました。テストの結果、カレンダーボタンは、記憶がない日でも、最も重要な画面を煩雑にしてしまうことがわかりました。エントリポイントをProfileに移動することで、必要に応じて表示され、他のパーソナル機能と自然に連携し、マップコントロールと競合することなく、未読の状態を表示できるようになりました。

通知には、独自のルーティング処理が必要です。ローカル通知は、通常のユニバーサルリンクをタップした場合と同じ経路で配信されるわけではありません。Mapsakeは、通知ペイロードにディープリンクを書き込み、アプリ委任で応答をキャッチし、他のディープリンクで使用される同じナビゲーション状態に転送します。表示される機能は1つの文ですが、信頼性の高いタップには、この全体的なルートが必要です。

リマインダーは、意図的にオプトインです。

「今日から」機能は、ユーザーが有効にした場合にのみ、穏やかな通知をスケジュールします。Mapsakeは、ローカルデータから今後の記念日を準備し、通知をタップすると正しい画面が開くようにディープリンクを添付します。

どのサーバーも、どの記憶が重要かを決定するわけではありません。また、リマインダーが機能するために、写真はデバイスから出る必要はありません。プロファイルタイルは、今日に表示する内容がある場合にのみ表示され、未読の小さな点が表示されます。この点を開くと消えます。

通知のコピーは、ローカル計算ですでにグループ化された結果を知っているため、1つ以上の年または場所を要約できます。リマインダーは、旅行者がこの日に数年間にわたってレドモンド、ローマ、東京にいたことを示す場合があります。テキストはデバイス上で組み立てられ、アプリの他の部分と同様にローカライズされます。

その条件付きエントリは、エンジニアリングだけでなく、製品の決定でもありました。常に空のカードを表示すると、その機能がより頻繁に宣伝されますが、機能に役立つ情報がない場合、プロファイルが毎日騒がしくなります。

「Then & Now」は、場所を共通のテーマとして扱います。

「Then & Now」は、少なくとも2年以上離れた時期に、同じ場所の近くで撮影された写真を検索します。この実装では、コンパクトな空間グリッドを使用しています。フィルタリングされた写真の座標を、幅約280メートルのセルに配置し、各セルは最も古い写真と最新の写真をのみ保持し、スキャンを行います。

十分な時間範囲を持つセルは候補となります。最も長い期間のものが最初に表示され、近くの候補は重複排除されるため、1つの広場がリスト全体を埋めることはできません。また、バンドルされた地理情報データベースは、都市と国のラベルを提供します。この結果は、写真インデックスが変更されるまで、メモ化されます。

これは、意図的に画像類似性ではありません。写真は、同じ構図または被写体である必要はありません。これは、Constellationsの別の機能です。Then & Nowは、より簡単な質問をします。数年後にその場所に戻ったとき、その場所はどのような姿でしたか?

ペアは通常の写真ビューアで開き、パスポートカードと同じレンダリングパスで共有できます。オリジナルは元のライブラリに残り、Mapsake はペアを再度見つけるために必要な軽量メタデータのみを保持します。

なぜ280メートルと2年なのか?

空間セルは、意図的に寛容です。電話のGPSは、ランドマークを広場の反対側から撮影したり、古いカメラは、座標の精度が低い場合があります。正確な座標の一致では、多くの有効な結果が失われます。都市レベルの一致では、関連性のない地域がペアになってしまいます。

おおよそ280メートルが製品の閾値であり、2つの写真が同一の物理的な地点を示しているという主張ではありません。画像が並べて表示されたときに、結果が十分に近いためらいを感じられるかどうかを評価します。2年間の最低期間は、旅行の最初と最後の日の出来事を長期的な変化として捉えることを防ぎます。

スキャン中に、各セルで最も古い写真と最新の写真を保持します。これにより、メモリ使用量は、合計画像数ではなく、使用されているセルの数に比例し、自然に時間範囲を最大化します。候補ペアは、期間でソートされ、空間的に重複排除されるため、1つのホームスクエアの周りに数百枚の写真がある場合でも、多様な写真が表示されます。

メモ化キーは、写真のメタデータ生成と除外カウントに従います。新しいライブラリのバッチをインポートするか、地図から写真を削除すると、ペアが再計算されます。画面を再オープンしてもソースは変更されないため、アプリは結果を再利用します。

最初のベンチマークテストでは、Then & Nowも近くの都市の検索に多大な時間を費やしていることがわかりました。これは、機能固有のリバースジオコーダーではなく、共有の地理データベースを使用しているためです。この地理データベースは、インポートの高速化やConstellationsにも使用されており、ラベルのコストを大幅に削減しました。共有の基盤が、共有の成果をもたらします。

共有機能はPassportパイプラインを再利用します。

「Then & Now」には、年、場所、期間が記載された2枚の写真が必要でした。新しいエクスポート機能を構築すると、ライトとダークのレンダリング、ソーシャルアスペクト比、画像のプリロード、Photosへの保存、システム共有シートなどが重複してしまいます。

代わりに、ペアをカスタムのPassportカードとしてラップし、既存の共有画面に渡します。ソース画像は、SwiftUIのオフスクリーンImageRendererが最終レンダリング時に同期的に動作するため、プリロードされます。ユーザーは、地図や統計に使用される、同じプレビューと宛先フローが表示されます。

その再利用は、単なるコードの効率化にとどまりません。共有の動作を予測可能にします。自動投稿は行われず、エクスポートはプレビューと同じに見え、アクセシビリティとカラーのルールも同じです。

パスポートスタンプには、誤った確実性ではなく、サポートが必要です。

本物のパスポートスタンプは、OCRにとって困難な素材です。かすれていたり、回転していたり、背景のイラストに重ねてあったり、多くの言語で書かれていたり、時には互いに直接スタンプされていたりします。完璧な自動認識を謳うスキャナは、ユーザーに誤った旅行データを引き起こす可能性があります。

Mapsake は、Apple の Vision フレームワークを使用して、デバイス上で読み取ることができるテキストを抽出し、次に、考えられる一致をランク付けします。IATA 空港コードは強力な指標です。2 文字の国コード、国名、ローカルの固有名、都市、入国港、またはヨーロッパの日付は、追加の証拠となります。ローカル言語の空港名の一部は、OCR が単語の末尾を読み取れない場合でも、エントリが飛行機によるものであった可能性を認識するのに役立ちます。

マッチャーは、提案と、国、地域、都市、および利用可能な場合は空港を含む、推奨される場所のチェーンを提示します。推測を自動的に行うことはありません。レビュー画面では、常に別の候補または完全に手動での選択が可能です。

その慎重な提案は重要です。提案を見逃すと、タップが必要になります。自信を持って間違った提案をすると、地図が静かに破損します。

古いアイスランドのスタンプが、マッチング機能を変更しました。

1つの実際のスタンプが、制限事項を具体的に示しました。その空港のテキストは、次のように表示されるべきでした。 KEFLAVIKURFLUGVOLLUR,。かすれたインクと改行が、Visionにとって、より近いものとして認識されました。 KEFLAVIKURFLUGVOLI UR.。アイスランドの空港という用語の完全一致チェックが失敗したため、Mapsake はフライトを推測することも、ケフラヴィーク空港を解決することもできませんでした。

この修正は、特定のパスポートに対する特別な対応ではありませんでした。マッチングエンジンは、いくつかの言語で一般的な空港という単語の語幹を認識するようになりました。アイスランド語、ドイツ語、スペイン語、ポルトガル語、オランダ語、スカンジナビア言語など、さまざまな言語の空港に対応する断片が含まれています。破損した語尾でも、入国方法を示唆し、場所の特定を空港に偏らせる可能性があります。

EUおよびシェンゲン圏のスタンプが追加され、さらに2つのレッスンが追加されました。2文字のISO国コードが隅の楕円形に表示されるのは、単独で表示される場合にのみ有効です。すべての2文字の単語を国として扱うと、不適切な一致が発生します。ヨーロッパの日付形式も、地域に依存しない一般的な検出器が月順の形式を読み取る前に、日順で解析する必要があります。

エントリーポイントの解決は、同じ理由でプレフィックスに寛容です。長いローカル言語の複合語には、都市または空港の名前が含まれている場合があります。組み込みの地理辞書には短い英語の形式が保存されている場合でも、解決プログラムは意味のある先頭の断片を試し、確認された結果の周りに国、地域、都市、および空港のチェーンを構築します。

チェーンは、保存する前に表示されます。特定の空港を選択すると、その都市、地域、国をまとめて示すことができますが、推測された各レベルは表示され、編集可能です。UIは、強力な提案と、それに続く人間の判断を中心に設計されています。

コピーではなく、オリジナルのアーティファクトを保持します。

パスポートスタンプの記録は、メタデータとソース写真への参照を保存しますが、完全な画像データではありません。Mapsake は、スタンプの壁のために小さな再生成可能なサムネイルを作成し、必要に応じて元の画像を読み込みます。Photos から取得した元の画像が完全に削除された場合、照合によって、画像がまだ存在しているかのように見せかけずに、孤立したスタンプを削除できます。

その文の「truly(本当に)」という言葉が重要です。Limited Photosの権限では、未確認のアセットが削除されたかどうかを証明できません。単に許可範囲外である可能性があります。リコンシリエーションは、ライブラリの権限が十分であり、ローカルまたはクラウドの識別子がいずれも解決しない場合にのみ、スタンプを削除します。曖昧さにより、記録が保持されます。

この参照ベースのモデルは、CloudKitとの互換性を保つためのデータサイズを小さくします。スタンプは、国、日付、書籍、登録方法、ページ、お気に入り状態、メモ、および識別子を同期できます。パスポートの写真などをデータベースの行に保存しようとする必要はありません。256ピクセルのローカルサムネイルはキャッシュであり、真実の源ではありません。

切手は、名前付きのパスポート帳に整理したり、到着または出発としてマークしたり、日付と入国方法を割り当てたり、国ごとに表示したりできます。トリミング、補正、回転、および検閲によるぼかしツールを使用して、国または大陸のコラージュを共有する前に、役立つ画像を作成できます。

同じ機能を使用して、パスポートの身分証明書ページを本にスキャンできます。機械可読ゾーンの解析により、可能な場合は構造化されたフィールドが提供され、画像はユーザー自身のライブラリへの参照となります。

MRZ(機械判読ゾーン)認識では、言語の修正が無効になります。機械判読ゾーンは、文字、数字、および角括弧からなる固定された文字列です。OCR(光学文字認識)に自然な単語に変換させると、読みやすくなるように見えるかもしれませんが、解析されたフィールドの精度が低下する可能性があります。出生地などの印刷されたフィールドは、別の方法で処理され、その結果は編集可能な形式で表示されます。

カメラとピッカーの機能は、認識処理の前に、トリミングと回転のステップを共有します。その後、画像の補正機能が追加され、傾き補正ダイヤル、ズーム、パン、および機密情報をぼかすためのブラシが追加されました。エディターは、ぼかしブラシがアクティブになっている間に、競合するジェスチャーを無効にし、編集内容をユーザーが選択した保存方法に従って、元の画像に合成します。

スタンプギャラリーでは、アーティファクトを国や大陸ごとに分類しますが、パスポートの国順ではありません。国の一覧を表示すると、個々のスタンプが表示されます。到着、出発、お気に入りなどをフィルタリングできます。大陸や国のヘッダーは、Passport共有パイプラインを通じてコラージュを表示できます。国は便利なメタデータですが、旅行地図帳では地理的な順序がより自然です。

信頼できるだけの技術力

これらの機能は、3つの異なる技術を使用しています。カレンダーの関連付け、空間的なバケット処理、およびOCRです。ユーザーエクスペリエンスは、同じパターンに従います。

  1. 既存のローカルデータから候補を導出します。
  2. 複雑な機能はメインインターフェースから分離します。
  3. 何が見つかったかを説明してください。
  4. ユーザーがそれを開き、修正し、共有し、または無視できるようにします。

それが、私がMapsakeに求める知性です。プライベートな記録が、アルゴリズムが人生を理解しているよりも、その人生を経験した人よりも、簡単に再発見できるようにする必要があります。

これらの機能には、その落ち着いた外観が示すよりも多くのエンジニアリングが含まれていますが、そのどれもがユーザーの宿題になる必要はありません。技術的な作業は、On This Dayが正しい年に開かれ、「Then & Now」が驚くべき結果を示し、「難しいスタンプ」が、過度に確実であることを主張せずに、役立つ候補を提供する場合に成功します。

Mapsake アプリのアイコン

Mapsakeの開発者によるものです。このアプリの背後にある製品、地図、プライバシー、およびAppleプラットフォームに関する情報を提供します。

あなただけの旅行地図を作成しましょう。

すでに持っている旅行履歴から開始します。

Mapsakeは無料で、コア機能の利用にはMapsakeのアカウントは不要で、サポートされている写真のマッチングはすべてデバイス上で行われます。

Mapsakeを無料でダウンロード