> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OneSignalへの移行

> SDKの統合、ユーザーのインポート、段階的なロールアウト、テストのガイダンスを含む、別のメッセージングプロバイダーからOneSignalへの移行ガイド。

このガイドでは、現在のメッセージングプラットフォームからOneSignalへ最小限の中断で移行する方法を説明します。

対象者：

* **開発者** - OneSignal SDKを実装する方
* **マーケター** - キャンペーンと分析を管理する方

***

## 前提条件

始める前に：

* [OneSignal](https://onesignal.com)でアカウントを設定します
* [チームメンバーを招待します](./manage-team-members)

***

## 移行手順

### 1. 現在のメッセージング設定を監査する

移行前に、現在の実装の棚卸しを行います：

**開発者向け：**

* サポートしているプラットフォーム：iOS、Android、Web、メール、SMSなど
* プッシュとアプリ内メッセージイベントを処理するコード：
  * フォアグラウンド表示とクリック処理
  * プッシュ、メールなどのディープリンク使用
  * プッシュトークンとペイロード処理
* メールアドレス、電話番号、プッシュトークンなどの収集方法
* メールドメインとDNS所有権
* SMS送信者とオプトインメカニズム

**マーケター向け：**

* 送信するメッセージのタイプ（トランザクション、マーケティングなど）と各タイプのテンプレート
* ユーザーのセグメント化とターゲティング方法
* 追跡している分析またはコンバージョンメトリクス

### 2. 用語をOneSignalに対応付ける

ほとんどのメッセージングプラットフォームは、異なる名称で同様の概念を持っています。OneSignalの用語と、すでに使用している用語の対応は次のとおりです：

| Your platform                           | OneSignal term                  | Details                                         |
| --------------------------------------- | ------------------------------- | ----------------------------------------------- |
| User / contact / profile                | [User](./users)                 | 外部IDで識別されます。プロパティとサブスクリプションを持ちます。               |
| Push token, email address, phone number | [Subscription](./subscriptions) | ユーザーがメッセージを受信できるチャネル（モバイルプッシュ、Webプッシュ、メール、SMS）。 |
| Audience, cohort, list                  | [Segment](./segmentation)       | 共通のプロパティまたは行動に基づくユーザーの動的グループ。                   |
| Custom attribute, user property         | [Tag](./add-user-data-tags)     | ターゲティングとパーソナライズのためにユーザーに付加されるキーと値のペア。           |
| Tracked action, analytics event         | [Custom Event](./custom-events) | ユーザーが行うアクション。セグメンテーションおよびメッセージのトリガーに使用。         |

### 3. OneSignal SDKを追加する（開発者向け）

モバイルアプリやWebサイトでOneSignal SDKをセットアップします：

<Columns cols={2}>
  <Card title="モバイルSDKセットアップ" icon="mobile" href="./mobile-sdk-setup">
    アプリ内メッセージには必須で、iOSおよびAndroidのプッシュ通知に推奨されます。
  </Card>

  <Card title="Web SDKセットアップ" icon="globe" href="./web-sdk-setup">
    Webプッシュ通知に必須です。
  </Card>
</Columns>

SDKを統合した後、次のメソッドを使用してユーザーを識別し、サブスクリプションデータを収集します：

* **`login`** — [外部ID](./users#external-id)を設定して、デバイスやチャネル間でユーザーを識別します。
* **`addEmail`** — アプリやサイトで収集したメールアドレスからメールサブスクリプションを作成します。
* **`addSms`** — アプリやサイトで収集した電話番号からSMSサブスクリプションを作成します。

実装の詳細については、SDKリファレンスを参照してください：

<Columns cols={2}>
  <Card title="モバイルSDKリファレンス" icon="mobile" href="./mobile-sdk-reference">
    `login`、`addEmail`、`addSms`、プッシュトークンアクセス、通知リスナーのメソッド。
  </Card>

  <Card title="Web SDKリファレンス" icon="globe" href="./web-sdk-reference">
    `login`、`addEmail`、`addSms`、Webプッシュイベント処理のメソッド。
  </Card>
</Columns>

### 4. レガシー実装を削除する

移行パスは2つあります：

* **クリーン移行** — 古いSDKを完全に削除し、1回のアプリリリースでOneSignalに置き換えます。推奨されるアプローチです。
* **段階的移行** — 両方のSDKを一時的に保持し、アプリのバージョンに基づいて異なるユーザーグループに各プロバイダーから送信します。1回のリリースで古いSDKを削除できない場合にのみ使用します。

いずれの場合も、プッシュトークン、メールアドレス、電話番号を収集するレガシーメソッドとAPIを削除してください。特にプッシュトークンの収集は、OneSignal SDKと競合を引き起こす可能性があります。

#### プッシュトークンの競合と形式

プッシュトークンを生成するすべてのレガシーコードを削除します。SDKが初期化されるときに自動的に行われるプッシュトークンの生成は、OneSignalにのみ許可してください。

必要に応じて、SDKを使用してトークンを取得し、他のプロバイダーやバックエンドに送信できます。その方法：

* [フロントエンドモバイルSDK](./mobile-sdk-reference#user-pushsubscription-token)を使用してデバイスのプッシュトークン識別子を取得します
* [ユーザーを表示](/reference/view-user) APIを使用してデバイスの識別子を取得します

<Note>
  プッシュトークンの形式はプラットフォームによって異なります（iOS APNSとAndroid FCM）。詳細は[プッシュトークンの形式](./osnotification-payload#push-token-formats)を参照してください。
</Note>

#### Firebase Messaging SDKの競合

アプリにFirebase Messaging SDK（`firebase_messaging`またはカスタムの`FirebaseMessagingService`）が含まれている場合、OneSignalが処理する前にFCMメッセージを横取りすることがあります。これにより、通知がOneSignalでは「配信済み」と表示されるにもかかわらず、デバイスに表示されません。

解決するには：

* `AndroidManifest.xml`からレガシーのFirebaseレシーバーを削除します。
* `FirebaseMessaging.getToken()`や`FirebaseMessaging.deleteToken()`を呼び出さないようにします。
* OneSignalのみがプッシュトークンのライフサイクルを管理するようにします。

完全なトラブルシューティング手順については、[Firebase Messaging SDKの競合](./notifications-show-successful-but-are-not-being-shown#firebase-messaging-sdk-conflict)を参照してください。

#### プッシュペイロード処理

OneSignalと別のプッシュプロバイダーを並行して使用する場合、重複を避けるために、他のSDKがOneSignal通知を処理しないようにする必要があります。

OneSignalのプッシュペイロードには、他のプロバイダーと区別するための`"custom"`キーが`rawPayload`に含まれています。両方のSDKを使用している場合、このキーを確認するように通知ハンドラーを更新して、レガシーSDKがOneSignalの通知を処理しないようにしてください。詳細については、[OSNotificationペイロード](./osnotification-payload)リファレンスを参照してください。

#### 段階的移行（モバイルアプリのみ）

一般的なアプローチは、古いプロバイダーから古いアプリバージョンのユーザーに送信し、OneSignalから新しいバージョンのユーザーに送信することです。ただし、限られた期間、両方のSDKを保持する必要がある場合：

* OneSignalがプッシュトークンを独占的に管理するようにします。必要に応じて古いシステムとトークンを共有します（上記の[プッシュトークンの競合](#プッシュトークンの競合と形式)を参照）。
* ペイロードフィルターを更新して、レガシーSDKがOneSignalのプッシュを無視するようにします（上記の[プッシュペイロード処理](#プッシュペイロード処理)を参照）。
* 古いプロバイダーから古いアプリバージョンのユーザーに送信し、OneSignalから新しいバージョンのユーザーに送信します。
* 明確なカットオフ日と段階的廃止計画を設定します。

### 5. Webプッシュ移行

同じHTTPSサイトの[オリジン](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)を使用している場合、サブスクライバーは次回の訪問時に自動的にOneSignalに追加されます。プロンプトは表示されず、すぐにプッシュを受信できます。ブラウザーのセキュリティ制限により、Webプッシュサブスクリプションをインポートすることはできません。

OneSignalが引き継ぐ前に、古いプッシュサービスワーカーの登録を解除する必要があります：

1. WebサイトからレガシーSDKコードとService Workerファイルを削除します。
2. 古いService Workerの登録を解除するために、次のスニペットを追加します。`sw.js`をレガシープロバイダーのService Workerのファイル名に置き換えてください。

```javascript theme={null}
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.getRegistrations().then(function(registrations) {
    for (let registration of registrations) {
      if (registration.active.scriptURL.includes("sw.js")) {
        registration.unregister();
      }
    }
  });
}
```

#### OneSignalアプリ間の移行

1つのOneSignalアプリ（アプリA）から別のアプリ（アプリB）にサブスクライバーを移動する場合：

* Webプッシュサブスクリプションは、アプリ間で直接転送できません。各サブスクリプションは、サイトのドメイン（オリジン）とOneSignalアプリIDの両方に関連付けられています。

* 移行するには、サイトのOneSignal初期化コードを更新して、アプリBのappIdを使用します：

```javascript theme={null}
OneSignal.init({
  appId: "YOUR_APP_B_ID",
});
```

* ユーザーがサイトを再訪問すると、ブラウザーの既存のプッシュ権限により、OneSignalはアプリBに自動的に登録します。

* 新しい権限プロンプトは表示されませんが、アプリBでサブスクリプションが作成されるには、ユーザーが少なくとも1回サイトを訪問する必要があります。

* サブスクライバーは、非アクティブになるまでアプリAに引き続き表示されます。

<Info>
  **Best practice:** 十分なユーザーが移行したことを確認したら、アプリAからの送信を停止します。両方のアプリのサブスクライバー数を監視して、移行の進行状況を検証します。
</Info>

### 6. メールとSMSのセットアップ

OneSignalでメールやSMSを送信する場合は、[メールセットアップ](./email-setup)および[SMSセットアップ](./sms-setup)ガイドに従う必要があります。

現在のメール送信ドメインをOneSignalに移行するには、DNSレコードを更新する必要があります。必要に応じて、OneSignalで複数のメール送信者を設定できます。

SMS送信者の移行には時間がかかる場合があります。サポートが必要な場合は`support@onesignal.com`にお問い合わせください。

### 7. 既存ユーザーをインポートする（オプション）

過去270日間にアプリでアクティブだったサブスクライブ済みユーザーをインポートすると、移行中の中断を最小限に抑えることができます。

まず既知のテストユーザーをインポートし、アプリの起動前に残りのユーザーをインポートすることをお勧めします。

#### プラットフォームの考慮事項

* メールアドレスは、アクティブで有効なユーザーのものである必要があります。これまでにメールをクリックまたは開封したことのないメールアドレスはインポートしないでください。
* 電話番号は特定の形式である必要があり、ユーザーはSMSの受信に同意している必要があります。
* iOSサブスクリプションは、インポート後すぐにプッシュ通知の受信を開始できます。通知クリックトラッキングや確認済み配信などの機能には、デバイスでSDKがアクティブである必要があります。
* Android/Huawei/Amazonサブスクリプションは、自動更新または手動更新を通じて、デバイスでSDKがアクティブである必要があります。
* Webサブスクリプションはインポートできません。[Webプッシュ移行](#5-webプッシュ移行)の手順に従うと、ユーザーがサイトに戻ったときに、SDKを介してWebプッシュサブスクリプションが作成され、プッシュトークンが取得されます。

#### インポート手順

1. [ユーザー](./users)および[サブスクリプション](./subscriptions)ドキュメントを確認します。
2. 古いシステムからテストユーザーデータをエクスポートします。
3. OneSignalの[ユーザーを作成](/reference/create-user) API用にデータをフォーマットします。
4. まずテストユーザーをインポートします。確認後、リリース前に残りのユーザーに対して同じプロセスを繰り返します。

各ユーザーには`external_id`（identity）と、`type`および`token`（または`email`/`phone_number`）を含む少なくとも1つのサブスクリプションが必要です。必須フィールド、対応するサブスクリプションタイプ、およびペイロードの例については、[ユーザーを作成APIリファレンス](/reference/create-user)を参照してください。

### 8. 移行をテストする

スムーズな移行には徹底的なテストが不可欠です。

1. OneSignal SDKで[デバッグログ](./capturing-a-debug-log)を有効にします。
2. すべてのプラットフォーム（Android、iOS、Webなど）の実機でテストします。
3. フォアグラウンドとバックグラウンドの両方の通知処理を確認します。

**開発者とマーケターチーム向けのテストシナリオ：**

* **OneSignal SDKを追加する前に**、OneSignalからインポートされたユーザーにテスト通知を送信します。
  * iOSではプッシュを受信しますが、確認済み配信やクリック分析は取得できません。
  * 別のプッシュSDKがあり、まだ[ペイロード処理](#プッシュペイロード処理)要件を実装していない場合、Androidでプッシュを受信する可能性があります。通知にはデータが欠けている可能性が高く、クリックしても期待どおりに機能しません。

* **OneSignal SDKを追加した後**、OneSignalからインポートされたユーザーにテスト通知を送信します。
  * AndroidとiOSの両方で、確認済み配信とクリック分析と共にプッシュを受信するはずです。

* さまざまな状態のアプリで通知動作をテストします。

* ディープリンクとカスタムアクションが正しく機能することを確認します。

**複数のプロバイダーを使用している場合：**

* 現在のプロバイダーとOneSignalの両方から送信します。
* 重複通知を確認します。
* 各プロバイダーの通知が正しく表示されることを確認します。
* ユーザーのログイン/ログアウトシナリオをテストします。

***

## プレリリースチェックリスト

**マーケター向け：**

* アプリ更新を促すメッセージング計画を構築します
* 古いシステムからのプッシュとアプリ内メッセージを使用して、ユーザーに更新を優しく促すことを検討してください。

**開発者向け：**

* プッシュとアプリ内メッセージの分析が期待どおりに機能していることを確認します。
  * クリックイベントと確認済み配信がAndroidとiOSで追跡されます。
* 両方のプロバイダーから送信されたメッセージについて、クリックイベントとフォアグラウンド受信イベントが正しく処理されることを確認します。
* ユーザーをインポートする場合は、過去270日間にアプリでアクティブだったAndroidおよびiOSユーザーをエクスポートして、期限切れトークンのインポートを防ぎます。詳細については、[FCM期限切れトークンFAQ](./fcm-expired-token-faq)を参照してください。

***

## アプリ/サイトをリリースする

* ほとんどのユーザーは、アプリが最新バージョンに自動的に更新されます。
* ユーザーが更新されたアプリを開いたとき、権限が既に付与されている場合（必須の権限プロンプトまたはアプリの通知設定を通じて）、プッシュ通知のサブスクライブを求められることはありません。

**ユーザーをインポートしなかった場合：**

* ユーザーがアプリの更新バージョンを開くと、OneSignalで自動的に作成されます。以前にサブスクライブしていた場合、プッシュを求められることはありません。
* メッセージを送信する前に、更新されたアプリを開くのを待つ必要があります。
* OneSignalに十分なユーザーが表示されるまで数日間、以前のプッシュプロバイダーから通知とアプリ内メッセージを送信し続けます。アプリを最新バージョンに更新するよう求める追加のアラートを送信します。

***

## 結果を監視する

**開発者向け：**

* デプロイ後のエラー率とクラッシュを監視します。
* 予期しないトークンの無効化に注意します。
* SDK統合の分析を確認します。

**マーケター向け：**

* アプリのリリース日をマークし、どの移行パスが取られたか（[クリーンまたは段階的](#4-レガシー実装を削除する)）およびユーザーがインポートされたかどうかを開発者に確認します。
* 以前のプラットフォームで、まだ新しいアプリバージョンに更新していないユーザーのセグメントを作成します。このグループに古いプロバイダーから引き続き送信し、更新を促します。
* OneSignalのサブスクライバー数が安定したら、以前のプロバイダーからの送信を停止します。
* **段階的移行**を実施している場合は、カットオフ日後の次のアプリリリースで古いプロバイダーのSDKを削除します。

***

## FAQ

### 現在のプッシュプロバイダーと並行してOneSignalを使用できますか？

はい、ただし一時的にのみです。2つのプッシュSDKを並行して使用すると、トークンの競合や重複通知が発生する可能性があります。段階的移行が必要な場合は、競合を防ぐために[段階的移行](#段階的移行モバイルアプリのみ)のガイダンスに従い、明確なカットオフ日を設定してください。

### Webプッシュのサブスクライバーをインポートできますか？

いいえ。ブラウザーのセキュリティ制限により、Webプッシュサブスクリプションをプロバイダー間で転送することはできません。サイトにOneSignalを統合すると、既存のサブスクライバーは次回の訪問時に自動的に再登録されます。新しいプロンプトは表示されません。[Webプッシュ移行](#5-webプッシュ移行)を参照してください。

### 移行後にプッシュ許可の再プロンプトが必要ですか？

いいえ。ユーザーがすでにアプリやサイトにプッシュ許可を付与している場合、OneSignalは既存の許可を使用します。新しいプロンプトは表示されません。

### メールのウォームアップは必要ですか？

送信ドメインが確立された送信評価を持っている場合は不要です。ウォームアップが必要なのは、専用IPアドレスを使用する場合のみです。

### 専用IPアドレスを取得できますか？

はい、プランタイプと送信量に応じて取得できます。詳細については、アカウントマネージャーにお問い合わせください。

### 古いプロバイダーからの送信をいつまで続けるべきですか？

ほとんどのユーザーがOneSignal SDKを含む更新されたアプリを開くまで、古いプロバイダーから送信し続けてください。両方のシステムのサブスクライバー数を監視し、数値が安定したら古いプロバイダーからの送信を停止します。

***

<Check>
  OneSignalへの移行が正常に完了しました！移行計画に関する戦略的な質問については、カスタマーサクセスチームがパーソナライズされたガイダンスを提供します。
</Check>

<Info>
  サポートが必要ですか？

  サポートチームとチャットするか、`support@onesignal.com`にメールしてください

  以下を含めてください：

  * 発生している問題の詳細と再現手順（利用可能な場合）
  * OneSignal App ID
  * 該当する場合は、External IDまたはSubscription ID
  * 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  * 関連する[ログまたはエラーメッセージ](/docs/ja/capturing-a-debug-log)

  お気軽にお問い合わせください！
</Info>
