Slide 1

Slide 1 text

新機種発売前に見直そう! 端末移行で再ログインが要るアプリ・要らない アプリは何が違うのか 〜シームレスに再開できる設計と実装〜 株式会社ZOZO ZOZOTOWN開発本部 ZOZOTOWN開発2部 iOSブロック 河原 慶太郎 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

株式会社ZOZO ZOZOTOWN開発本部 ZOZOTOWN開発2部 iOSブロック 河原 慶太郎 / ハリーharii_226 2026年 株式会社ZOZO 新卒入社 © ZOZO, Inc. 2

Slide 3

Slide 3 text

携帯どのくらいで買い替えてますか? © ZOZO, Inc. 3

Slide 4

Slide 4 text

携帯の移行面倒くさいなと思ったことある方 © ZOZO, Inc. 4

Slide 5

Slide 5 text

© ZOZO, Inc. 5

Slide 6

Slide 6 text

アプリへようこそ! はじめる © ZOZO, Inc. 6

Slide 7

Slide 7 text

ログインが必要です ログイン情報を確認できませんでした。 もう一度ログインしてください。 メールアドレス [email protected] パスワード •••••••• ログインする パスワードを忘れた方 © ZOZO, Inc. 7

Slide 8

Slide 8 text

設定 ↻ ○ ! ◷ P 設定が初期状態になっています 以前の設定をこの端末で確認できませ んでした。 使い方の目的 未設定 › 指定なし › 未確認 › 通知 オフ 習慣の時間帯 プレミアム 設定をやり直す あとで © ZOZO, Inc. 8

Slide 9

Slide 9 text

あるあるですよね? © ZOZO, Inc. 9

Slide 10

Slide 10 text

また最初からか. . . アプリへようこそ! はじめる © ZOZO, Inc. 10

Slide 11

Slide 11 text

ログインが必要です ログイン情報を確認できませんでした。 もう一度ログインしてください。 パスワードなんだっけ メールアドレス [email protected] パスワード •••••••• ログインする パスワードを忘れた方 © ZOZO, Inc. 11

Slide 12

Slide 12 text

設定 ↻ ○ 設定が初期状態になっています 以前の設定をこの端末で確認できませ んでした。 使い方の目的 未設定 › どういう設定にしてたっけ? ! ◷ P 通知 オフ 習慣の時間帯 プレミアム 指定なし › 未確認 › 設定をやり直す あとで © ZOZO, Inc. 12

Slide 13

Slide 13 text

もう使わなくていっか? © ZOZO, Inc. 13

Slide 14

Slide 14 text

M P メール 写真 H HIBI ニュース N タスク A メモ W 天気 音楽 アプリを削除しますか? C S B このAppを削除すると、 F 関連するデータもこのiPhoneから削除されます。 カメラ 決済 読書 ファイル アプリを削除 A CキャンセルH S App 予定 健康 設定 B S P © ZOZO, Inc. M 14

Slide 15

Slide 15 text

どういう状態が理想なのか? © ZOZO, Inc. 15

Slide 16

Slide 16 text

アプリへようこそ! はじめる © ZOZO, Inc. 16

Slide 17

Slide 17 text

ログインが必要です ログイン情報を確認できませんでした。 もう一度ログインしてください。 メールアドレス [email protected] パスワード •••••••• ログインする パスワードを忘れた方 © ZOZO, Inc. 17

Slide 18

Slide 18 text

設定 ↻ ○ ! ◷ P 設定が初期状態になっています 以前の設定をこの端末で確認できませ んでした。 使い方の目的 未設定 › 指定なし › 未確認 › 通知 オフ 習慣の時間帯 プレミアム 設定をやり直す あとで © ZOZO, Inc. 18

Slide 19

Slide 19 text

いつも通り使える状態にしておけばいい © ZOZO, Inc. 19

Slide 20

Slide 20 text

どうしたら実現できるのか? © ZOZO, Inc. 20

Slide 21

Slide 21 text

移行経路 x 保存先 © ZOZO, Inc. 21

Slide 22

Slide 22 text

データ移行の種類 © ZOZO, Inc. 22

Slide 23

Slide 23 text

データ移行の種類 iCloudバックアップからの復元 別のiPhoneからの転送 PCバックアップからの復元(暗号化あり) PCバックアップからの復元(暗号化なし) © ZOZO, Inc. 23

Slide 24

Slide 24 text

データ移行の種類 iCloudバックアップからの復元 別のiPhoneからの転送 PCバックアップからの復元(暗号化あり) PCバックアップからの復元(暗号化なし) © ZOZO, Inc. 24

Slide 25

Slide 25 text

データ移行の種類 iCloudバックアップからの復元 別のiPhoneからの転送 PCバックアップからの復元(暗号化あり) PCバックアップからの復元(暗号化なし) © ZOZO, Inc. 25

Slide 26

Slide 26 text

データ移行の種類 iCloudバックアップからの復元 別のiPhoneからの転送 PCバックアップからの復元(暗号化あり) PCバックアップからの復元(暗号化なし) © ZOZO, Inc. 26

Slide 27

Slide 27 text

オンボーディング © ZOZO, Inc. 27

Slide 28

Slide 28 text

オンボーディング アプリへようこそ! はじめる © ZOZO, Inc. 28

Slide 29

Slide 29 text

UserDefaults © ZOZO, Inc. 29

Slide 30

Slide 30 text

UserDefaults © ZOZO, Inc. 30

Slide 31

Slide 31 text

UserDefaults © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/Preferences/ Library/Preferences/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 31

Slide 32

Slide 32 text

UserDefaults © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/Preferences/ Library/Preferences/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 32

Slide 33

Slide 33 text

UserDefaults 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ © ZOZO, Inc. どの経路でも引き継がれる Documents/ Library/Preferences/ Library/Preferences/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 33

Slide 34

Slide 34 text

UserDefaults 旧端末での書き込み時 © ZOZO, Inc. 新端末移行後 34

Slide 35

Slide 35 text

UserDefaults 旧端末での書き込み時 © ZOZO, Inc. 新端末移行後 35

Slide 36

Slide 36 text

UserDefaults 旧端末での書き込み時 © ZOZO, Inc. 新端末移行後 36

Slide 37

Slide 37 text

全部UserDefaultsでよくない? 🤔 © ZOZO, Inc. 37

Slide 38

Slide 38 text

再ログイン © ZOZO, Inc. 38

Slide 39

Slide 39 text

再ログイン ログインが必要です ログイン情報を確認できませんでした。 もう一度ログインしてください。 メールアドレス [email protected] パスワード •••••••• ログインする パスワードを忘れた方 © ZOZO, Inc. 39

Slide 40

Slide 40 text

Keychain © ZOZO, Inc. 40

Slide 41

Slide 41 text

Keychain kSecAttrAccessible © ZOZO, Inc. 41

Slide 42

Slide 42 text

Keychain © ZOZO, Inc. ref: https://developer.apple.com/documentation/security/ksecattraccessible 42

Slide 43

Slide 43 text

Keychain © ZOZO, Inc. ref: https://developer.apple.com/documentation/security/item-attribute-keys-and-values#Accessibility-Values 43

Slide 44

Slide 44 text

Keychain WhenUnlocked AfterFirstUnlock © ZOZO, Inc. 44

Slide 45

Slide 45 text

Keychain WhenUnlocked +ThisDeviceOnly AfterFirstUnlock +ThisDeviceOnly © ZOZO, Inc. 45

Slide 46

Slide 46 text

Keychain 「いつ読めるか」 「別の端末に移行する資格があるか」を決める →「実際に移行されるか」は別問題 © ZOZO, Inc. 46

Slide 47

Slide 47 text

Keychain © ZOZO, Inc. 47

Slide 48

Slide 48 text

Keychain © ZOZO, Inc. 48

Slide 49

Slide 49 text

Keychain 実装の工夫なし © ZOZO, Inc. 実装の工夫あり 49

Slide 50

Slide 50 text

Keychain 実装の工夫なし © ZOZO, Inc. 実装の工夫あり 50

Slide 51

Slide 51 text

設定項目 © ZOZO, Inc. 51

Slide 52

Slide 52 text

設定項目 設定 ↻ ○ ! ◷ P 設定が初期状態になっています 以前の設定をこの端末で確認できませ んでした。 使い方の目的 未設定 › 指定なし › 未確認 › 通知 オフ 習慣の時間帯 プレミアム 設定をやり直す あとで © ZOZO, Inc. 52

Slide 53

Slide 53 text

設定項目 設定 ↻ ○ ! ◷ P 設定が初期状態になっています 以前の設定をこの端末で確認できませ んでした。 使い方の目的 未設定 › 指定なし › 未確認 › 通知 オフ 習慣の時間帯 プレミアム 設定をやり直す あとで © ZOZO, Inc. 53

Slide 54

Slide 54 text

© ZOZO, Inc. 54

Slide 55

Slide 55 text

購入の復元 🤔 復元ボタン必要ないのでは? © ZOZO, Inc. 55

Slide 56

Slide 56 text

購入の復元 必要です! © ZOZO, Inc. 56

Slide 57

Slide 57 text

ref: https://developer.apple.com/videos/play/wwdc2022/110404

Slide 58

Slide 58 text

購入の復元 問題が起きた時 別のApple Accountで購入してた時の強制復元 © ZOZO, Inc. ref: https://developer.apple.com/videos/play/wwdc2022/110404 58

Slide 59

Slide 59 text

一番大事なもの忘れてないですか? © ZOZO, Inc. 59

Slide 60

Slide 60 text

データ © ZOZO, Inc. 60

Slide 61

Slide 61 text

データ © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/Preferences/ Library/Preferences/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 61

Slide 62

Slide 62 text

データ © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/Preferences/ Library/Preferences/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 62

Slide 63

Slide 63 text

データ SwiftData / Core Dataの場合は? © ZOZO, Inc. 63

Slide 64

Slide 64 text

データ 引き継がれる © ZOZO, Inc. 64

Slide 65

Slide 65 text

データ © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/ Application Support/ Library/ Application Support/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 65

Slide 66

Slide 66 text

データ © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/ Application Support/ Library/ Application Support/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 66

Slide 67

Slide 67 text

データ © ZOZO, Inc. 旧iPhone 新iPhone アプリコンテナ アプリコンテナ アプリコンテナ アプリコンテナ Documents/ Documents/ Library/ Application Support/ Library/ Application Support/ jp.example.app.plist jp.example.app.plist Library/Caches/ Library/Caches/ tmp/ tmp/ 67

Slide 68

Slide 68 text

発展 © ZOZO, Inc. 68

Slide 69

Slide 69 text

発展 そもそも、端末に置かない © ZOZO, Inc. 69

Slide 70

Slide 70 text

発展 CloudKit iCloud KVS © ZOZO, Inc. 70

Slide 71

Slide 71 text

発展 復元直後 © ZOZO, Inc. 再チェック後 71

Slide 72

Slide 72 text

発展 復元直後 © ZOZO, Inc. 再チェック後 72

Slide 73

Slide 73 text

発展 全てのパターンで引き継ぐのは正解なのか © ZOZO, Inc. 73

Slide 74

Slide 74 text

発展 銀行系アプリ © ZOZO, Inc. 74

Slide 75

Slide 75 text

発展 銀行系アプリ チャット系アプリ © ZOZO, Inc. 75

Slide 76

Slide 76 text

発展 銀行系アプリ チャット系アプリ Google Authenticator © ZOZO, Inc. 76

Slide 77

Slide 77 text

シームレス移行(引き継がれる) 端末固定(引き継がれない) 機種変更UX 何もしなくてよい 再認証が必要 盗難・バックアップ窃取耐性 トークンごと複製される 鍵は物理的に移らない 「所有要素」としての端末 成立しない 成立する 実装例 migratory Keychain ThisDeviceOnly / Secure Enclave © ZOZO, Inc. 77

Slide 78

Slide 78 text

結局何が違ったのか? © ZOZO, Inc. 78

Slide 79

Slide 79 text

移行経路 x 保存先 © ZOZO, Inc. 79

Slide 80

Slide 80 text

ありがとうございました 河原 慶太郎 @harii_226 / 株式会社ZOZO © ZOZO, Inc. 80

Slide 81

Slide 81 text

Appendix 保存先 1 直接転送 2 iCloud復元 3 暗号化PC 4 非暗号化PC 5 QS内 iCloud DL 6 同一端末(非暗) 6b 同一端末(暗) 削除 → 再インストール UserDefaults Documents Documents (isExcludedFromBackup) Caches / tmp Keychain: WhenUnlocked / AfterFirstUnlock Keychain: +ThisDeviceOnly 2種 Keychain: WhenPasscodeSetThisDeviceOnly Keychain: Synchronizable iCloud KVS © ZOZO, Inc. 81