# バックアップとインポート

Cakeday は、完全バックアップ、汎用エクスポート、共有パッケージのインポートという3つのデータフローに対応しています。それぞれ用途が異なります。

## 完全バックアップ（.cakeday）

`.cakeday` は Cakeday の公式な完全バックアップ形式で、デバイス移行や長期保存に最適です。次の内容を保持します：

- 友だちの記録
- カスタムグループ
- 高解像度アバター
- 友だちごとの通知オフセット、誕生日アラームの選択、アラーム音、友だちのタイムゾーン通知、カレンダー同期設定
- アプリ全体のリマインダー標準設定、誕生日アラームのタイミング、標準アラーム音、テーマ、表示設定、詳細ページの追加コンテンツ、日付形式設定

完全な復元に最も近い選択肢です。

ダウンロード済みの HQ アラーム音ファイルはバックアップに含まれません。デバイス本体のリソースとして扱われ、アラーム音ピッカーから再ダウンロードできます。

## 汎用エクスポート（JSON / CSV）

**汎用エクスポート（JSON）**と**汎用エクスポート（CSV）**は、データの持ち運びや手動処理に向いています。次のような主要フィールドを保持します：

- 名前
- グループ名
- 西暦または旧暦の種別
- 生年、月、日
- 星座
- メモ

これらの形式には、アバター、カスタムグループの見た目、友だちごとのリマインダーや誕生日アラーム設定、アプリ全体の設定は含まれません。

## 共有パッケージのインポート（.cakeshare）

`.cakeshare` は、人から人へ友だち情報を共有する用途に最適化されています。共有パッケージには、友だち、アバター、グループ情報を含められ、暗号化と任意の追加パスワードに対応しています。

`.cakeshare` ファイルをインポートすると、Cakeday は友だちごとに選択できるインポート画面を開きます。追加する人を個別に選び、インポート前に重複の警告を確認できます。プロトコルの詳細は [CakeShare](/docs/ja/cakeshare) をご覧ください。

## インポートモード

`.cakeday`、JSON、CSV をインポートする場合、Cakeday には2つのインポートモードがあります：

- **上書きインポート：** 現在のローカルデータベースをインポートしたデータで置き換えます。
- **追加インポート：** 現在のローカル記録を残したまま、新しいデータを追加します。

上書きインポートは移行や復元に向いています。追加インポートは新しい友だち情報を統合したい場合に向いています。

## iCloud と上書きインポート

iCloud 同期が有効な状態で上書きインポートを行うと、まずローカル復元が完了し、その後 iCloud 同期が一時停止されます。これにより、同期とマージを再開する前に、インポート後の状態を確認できます。

影響の大きい復元では、クラウド上のコピーを戻し先の参考として残せるため、この流れのほうが安全です。

## 重複検出とインポート後の処理

Cakeday は次のフィールドで完全一致のインポート統合を判定します：

- 名前
- 生年
- カレンダー種別（西暦または旧暦）
- 月と日
- 閏月フラグ

生年だけが異なる場合、Cakeday はインポートされる行を別の記録として扱い、確認が必要な重複候補として表示することがあります。

時間のかかるインポート中は、アプリが進捗を表示します。インポート後、Cakeday は検索インデックス、ウィジェット、関連する拡張機能のデータを更新し、新しい状態を各入口に反映できるようにします。

## システムカレンダー同期

Cakeday は EventKit を通じて誕生日をシステムカレンダーに書き込めます。友だちごとに**システムカレンダーに同期**を有効にすると、Cakeday は単一の繰り返しイベントではなく、今後の各年に対して個別の終日カレンダーイベントを作成し、その友だちが変更または削除されたときにそれらのイベントを更新し続けます。年ごとに別々のイベントを使うことで、旧暦の誕生日が毎年同じ西暦の日付にならなくても正確さを保てます。
