製品のアップデート。
独立記念日:旅行の成果とMapsakeの友達
アメリカ合衆国で祝うすべての人に、独立記念日おめでとうございます。このリリースでは、プライベートな地図が、説明可能な成果と、意図的な友人同士の共有によって、より楽しくなります。
独立記念日おめでとうございます
アメリカ合衆国で祝うすべての人に、独立記念日おめでとうございます!
このアップデートは、プライベートな旅行地図がより生き生きとするための2つの方法についてです。アチーブメントは、ユーザーが自分の履歴の中で新しいパターンに気づくのを助け、Mapsake Friendsは、実際に知っている人々と自分の履歴を比較できるようにします。
これらの機能のいずれも、コアルールを変更するものではありません。Mapsakeは、まず個人の地図です。公開フォロワー数、グローバルリーダーボード、または、見知らぬ人が互いに評価し合うように設計されたフィードはありません。
160 に関する理由をもう一度地図で確認する。
Mapsakeには、現在、約160の成果が含まれています。その中には、最初の場所の登録、5つの国、すべての大陸、都市や空港のリストなど、馴染みのあるマイルストーンがあります。また、地理的なグループ、文化、自然、科学、航空、旅行履歴に隠されたあまり目立たない要素などを説明するものもあります。
カタログは、意図的に広範囲にわたっています。近隣地域を旅行する人は、依然として意味のある進歩を遂げるでしょう。このシステムは、すべての国を収集しようとしている人だけのものではありません。
インターフェースの下では、アチーブメントの評価は、地図全体を網羅する決定的なプロセスです。各アチーブメントは、関連する場所または閾値を定義し、Mapsakeは、その定義と現在の「訪問済み」および「居住地」の記録を比較し、その結果には、進捗状況、アンロック状態、日付、およびメダルレベルが含まれます。これは、分析サービスやリモートルールエンジンに依存しません。
そのアプローチには、役立つ効果があります。実績はオフラインで動作し、インポートまたは手動変更後すぐに更新されます。これにより、テストも容易になります。同じ設定を使用すると、常に同じ実績セットがアンロックされます。
カタログは、11から約160まで成長しました。
最初の成果エンジンは、11の単純なマイルストーンで提供されました。 これは、進捗状況を地図から導き出し、ロックされたものを強調し、残りの進捗状況のプログレスバーを表示するというループを証明するのに十分でした。 また、確立された旅行履歴を持つ人にとって、興味深いものではなくなってしまうほど、小さすぎました。
2回目のバージョンでは、国や地理的グループが追加されました。国ごとのマイルストーンは、ほぼ同じカードの壁ではなく、1つのスタックになりました。大陸の完了や、欧州連合、シェンゲン地域、ASEAN、G7、マグレブ、スタンなどのグループは、旅行の量だけでなく、旅行の形状に関する目標を追加しました。
その後、カタログは、芸術、音楽、科学、技術、自然、地質学、経済学へと拡張されました。それが、Mapsakeらしさの始まりでした。ジャズの歴史グループと宇宙プログラムグループは、地理的に重なることがありますが、それらがその場所がなぜ一緒に存在するのかについて、まったく異なる物語を語ることができます。
課題は、恣意的なトリビアを避けることでした。すべてのグループには、防御可能な、固定されたメンバーシップリストと、面白さが薄れた後でも意味のある説明が必要です。メンバーシップは、ソースに保存され、変更可能なWebサービスから取得されるのではなく、カタログの更新は、他の製品の動作と同様に、レビューされ、バージョン管理されます。
160 の周辺は、検索と整理が必要になるほどです。これは、永遠に成長し続ける目標ではありません。数千もの人が理解できない手続き上のバッジよりも、小さくまとまりのあるカタログの方が優れています。
アチーブメントのアンロック日と家族設定がインターフェースを変更しました。
カタログのアイテム数が約80に達すると、通常のグリッド表示では機能しなくなりました。 同じファミリーの複数の閾値が他の情報を押し出し、長期間利用しているユーザーがどの情報が新しいものか判断できなくなりました。
Mapsakeは、現在、獲得した成果を家族ごとにまとめて表示し、最も高いレベルが一番上に表示されます。展開すると、以前のマイルストーンが表示されます。ロックされた成果は、目標として表示されたままですが、デフォルトの並び順は、完了に最も近いものが最初に表示されます。
アチーブメントのアンロック日は、そのアチーブメントが初めて達成されたときに記録されます。後回の評価や、友達のスナップショットへの旅行に耐え、これにより、友達のアチーブメントページで、何がいつ起こったかを表示できますが、プライベートなイベントログは公開されません。既存のユーザーは、初回起動時に基準値が設定されるため、アップデートをインストールしても、以前の地図で既に達成されたマイルストーンに対して、大量の紙吹雪が表示されることはありません。
その基本的な動作は、移行を機能の一部として扱うことから来ています。70「新しい」実績を起動時に発表する、技術的に正しいエンジンは、すべてのバッジが数学的に正当であっても、使い勝手が悪く感じられます。
進捗状況は理解しやすいように表示されるべきです。
ロックされたアイコンの壁はあまり役に立ちません。そのため、実績タブは説明を中心に構成されています。
- 名前で検索し、カテゴリまたは大陸でフィルタリングします。
- 最も近い順、最近アンロックされた順、またはすでに完了した順に並べ替えます。
- 成果を開いて、説明、関連する場所、地図、および現在の進捗状況を確認します。
- 家族がサポートするブロンズ、シルバー、ゴールド、およびプラチナのティアを通過します。
- アチーブメントを長押しすると、自動的に公開することなく、共有カードを作成できます。
アチーブメントのアンロックは、短く、触覚的な体験であり、詳細情報は後で確認できます。トーンは意図的に軽快で、時々少しオタクっぽいものです。地図について何かを発見したような感覚になるべきで、パフォーマンスレビューのようなものではありません。
詳細画面も、信頼性の問題を解決しました。「Five Eyes」や「Ring of Fire」のようなタイトルは、すべての人にとって自明ではありません。 開くと、完全な説明、地図の範囲、グループ内の国、達成された国、および利用可能な場合は訪問日範囲が表示されます。 階層型ファミリーでは、ブロンズからプラチナまで、4つの無関係な視覚システムを必要とせずに、進捗状況を伝えます。
地図は、到達済みの国だけでなく、未訪問の国も強調表示します。目標が隣接する国にあることが明確にわかる場合、進捗状況を理解しやすくなります。単に「8のうち9」と読むだけの場合よりも、これは重要です。
祝賀は、ナビゲーションを所有できません。
テスト中に、ある実装上の詳細が明らかになりました。当初、成果の祝賀はモーダルサマリーとして機能していました。カードはタップ可能に見えましたが、祝賀レイヤーには、元の詳細を確実に開くための十分なナビゲーション状態がありませんでした。
この修正は、各賞をメインカタログで使用されている同じ成果IDとして扱い、既存の詳細画面にルーティングするというものです。お祝いは一時的なプレゼンテーションであり、成果モデルは永続的な情報源です。これは、Mapsakeのより広範なルールの一例です。特殊効果は、製品の上に配置されるべきであり、製品自体を派生させるべきではありません。
ソーシャルネットワークを構築することなく、友達との共有
Mapsake Friends は、検索可能なディレクトリではなく、招待から始まります。リンクには、名前やアカウントではなく、プライベートな共有コードが含まれています。リンクを開くと、相互接続が確立されます。各ユーザーは、Mapsake 内で相手の共有マップを表示できます。
リンクは距離を越えて効果的に機能しますが、QR コードや近隣の発見は、2 人が同じ部屋にいる瞬間に役立ちます。このアプリは、2 つの完全なローカルデータベースを同期しようとするのではなく、接続のためのコンパクトな旅行のスナップショットを公開します。
最初の共有モデルは、十分に信頼性が高くありませんでした。
以前は、友達関係ごとに個別のCloudKit共有を使用していました。これは、CloudKitがアクセス招待を処理するため魅力的でしたが、相互の友情を困難にしました。一方が共有を受け入れると、元の送信者は信頼できる方法で応答を受け取ることができず、システム共有URLを予測可能なアプリ内フローに変換することが困難でした。
新しいモデルでは、各プロファイルに、不透明なコードによってアドレス指定された、安定した共有マップレコードが提供されます。 インバイテーションリンクは、友達のレコードを開き、スナップショットをキャッシュし、受信者の独自のマップを公開し、元のコードに小さなリクエストを書き込みます。 前景と背景のリフレッシュにより、相互接続が完了します。
その代替機能の最初のバージョンでは、安定したコードを直接リンクで使用していました。これは機能しましたが、リンクが意図された会話から抜け出すと、永久に再利用される可能性があります。現在では、安定した地図IDの前に、一時的な招待トークンが配置されています。消費されたトークンは再利用できませんが、基盤となる友情は引き続き更新されます。
これは、製品とインフラストラクチャが同時に変化する例です。「自分の地図を共有する」は、インターフェース上の1つのボタンですが、その下には、ユニバーサルリンクのルーティング、CloudKitレコードの検索、相互リクエストの処理、ローカルキャッシュ、重複排除、および明確な成功または失敗メッセージがあります。この仕組みを隠すことが重要であり、存在しないと仮定すると、失敗を説明することが不可能になります。
友達のプロフィールは、詳細な情報が含まれています。インタラクティブな地図、レンズ、地域、および年を制御できるパスポート、成果、および比較ビュー(重複部分と、各人に固有の場所を表示)が含まれます。自宅の場所は、所有者が明示的に共有を許可しない限り除外されます。
以前の友達画面は、よりシンプルな地球儀と概要を使用していました。しかし、これはプレビューのように感じられ、関係性を示すものではありませんでした。現在のインターフェースは、所有者のアトラスと同じマップ設定、同じパスポート計算、および同じ実績詳細モデルを使用しますが、データソースが異なります。
これらのコンポーネントを再利用することで、有用な抽象化が明らかになりました。地図とPassportの画面は、旅行データを消費する必要がありますが、そのデータがサインインしているローカルプロファイルに属していると想定すべきではありません。友達のスナップショットがこのインターフェースを実装すると、レンズフィルタリング、年範囲、大陸範囲、成果の進捗状況、および比較において、共通の動作を可能にしながら、友達が所有者の基になるデータベースにアクセスすることを防ぐことができます。
途中、あまり華やかではないナビゲーションのバグがありました。フレンドの行はSwiftDataモデルオブジェクトに直接バインドされていましたが、CloudKitのミラーリングによって、そのオブジェクトがリセットされ、ナビゲーションの開始時にIDが変更されることがありました。フレンドの安定したIDでナビゲーションを行うことで、一見デッドになっているタップが修正されました。分散データのエラーは、通常、インターフェースのエラーとして現れます。
プロフィール写真も、同じスナップショットのルールに従います。小さなアバターを共有プロフィールの横に公開でき、編集後に更新できます。写真が設定されていない場合は、イニシャルがデフォルトで使用されます。Mapsakeは、最初の招待時に、認識可能な名前と写真の入力を求めますが、どちらも必須ではありません。
意味のある変更から作成されたフィード。
友達タブは、アップロードされた投稿のストリームではありません。Mapsakeは、デバイスにすでにキャッシュされている最新の友達のスナップショットを定期的に比較します。友達が場所を追加したり、成果を達成したりした場合、それらの違いが小さなローカルアクティビティフィードになります。
このスナップショット差分アプローチは、機能をシンプルに保ちます。友達は、自分の地図が変更されるたびに投稿を作成する必要がなく、Mapsakeはコンテンツのランキングシステムを必要としません。フィードは、基盤となる旅行履歴が変更された場合に役立つイベントを記録します。
また、各フィードイベントに対して別のCloudKitレコードタイプを追加することも回避します。アプリはすでに古いスナップショットと新しいスナップショットを持っています。それらの場所識別子と成果のロックを比較することで、興味深い変更をローカルで推測し、デバイス上の小さなJSONストアにバウンドされたフィードを保持できます。
場所の追加と実績のアンロックは、たとえ1回の更新で到着した場合でも、個別のグループにまとめられます。 これにより、大量のインポートによって多数のほぼ同一の行が生成されるのを防ぎ、フィードが「エマが日本、京都、およびさらに2つの場所を追加しました」のように表示され、データベースのトランザクションログのように表示されなくなります。
通知は、クールダウン期間を設定して、各旅行レンズごとに有効にすることができます。これにより、大量の履歴インポートによって大量の通知が送信されるのを防ぎます。誰かが意図的に確認したい場合は、プルダウンで更新が可能です。
プライバシーは機能の一部であり、免責事項ではありません。
旅行の履歴は、住まい、日常、そして将来の計画を明らかにすることがあります。そのため、Friends機能は、従来のソーシャル機能よりも、より明確である必要があります。
- 誰かを追加するには、招待、QRコードスキャン、または近隣でのやり取りが必要です。
- 共有ペイロードには、フレンドエクスペリエンスに必要な地図データが含まれています。写真ライブラリのコピーではありません。
- ホーム共有は別機能で、デフォルトではオフになっています。
- 友達を削除すると、ローカルの関係と、それに関連するキャッシュされたアクティビティが削除されます。
- Mapsakeの基本的な機能を使用するには、Mapsakeのアカウントは不要です。
友達のスナップショットには、元の写真データは含まれません。旅行の記録、プロフィール情報、レンズ情報、範囲統計に必要な日付、および友達が利用できるインターフェースに必要な実績のロック解除情報が含まれています。この制限により、リッチな体験が意図せず写真共有サービスになることを防ぎます。
Mapsake は、フレンド共有と公開ブラウザリンクを区別します。フレンド接続は相互であり、アプリ内に存在します。公開マップは、読み取り専用のリンクを希望するユーザー向けの別のオプションのアーティファクトです。一方を有効にしても、もう一方を自動的に有効にするわけではありません。
実績と友達は、地図をより楽しくしますが、公開プロフィールに変えるものではありません。この境界線は重要であり、アプリが成長するにつれて繰り返し強調する必要があります。
更新を実行します。
開く。 実績 フルカタログを検索して、最も近いものを確認します。その後、開きます。 友達, を共有したり、招待リンクを使用したり、近くにいる人やQRコードを使用して、地図を比較したりできます。
最も良い結果は、スコアの向上ではありません。会話です。両者が愛した場所、ある人が考えたことのない地域、またはどちらも達成できるとは思っていなかった小さな成果です。