メインコンテンツまでスキップ

iOS SDK v3 から v4 への移行

移行ガイド

v4 SDKでは、パフォーマンス、SwiftUIサポートを大幅に改善し、開発ワークフローを簡素化しました。最も注目すべき変更は、デバッグモードから開発モードへの置き換えです。これにより、レポートとテストに対してより安全で効率的なアプローチが提供されます。v3を使用していてアップグレードを希望する場合は、以下の手順に従ってv4に移行してください。

v4の主な変更点

パフォーマンスと安定性

  • WebView翻訳の改善 - コンテンツの翻訳が確認されるまでWebViewを非表示にすることでちらつきを修正
  • プッシュ通知翻訳の改善 - 「PushNotification」画面のコンテンツのみを取得することで高速な翻訳を実現
  • 自動翻訳の対象範囲拡大とバグ修正

新機能

  • 開発モードがデバッグモードに置き換わり、セキュリティが向上
  • 改善されたレポート機能 - 安全なクライアントベースの検証
  • SwiftUI自動翻訳 - TextWovnTextに、ButtonWovnButtonに変更する必要がなくなりました
  • 開発モードでの検出済み未翻訳テキストに対する**「!」マーカー**

移行手順

1. Wovn.start()からisDebugModeパラメータを削除

v4での最大の変更点は、初期化メソッドからisDebugModeパラメータが削除されたことです。開発モードは、クライアント検証に基づいてサーバーが自動的に判定するようになりました。

v3では、isDebugModeパラメータを渡す必要がありました:

class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// v3: デバッグモードをパラメータとして渡す
Wovn.start(isDebugMode: _isDebugAssertConfiguration())
return true
}
}

または#if DEBUGディレクティブを使用:

// v3: プリプロセッサディレクティブを使用
#if DEBUG
Wovn.start(isDebugMode: true)
#else
Wovn.start(isDebugMode: false)
#endif

v4では、デバッグパラメータなしでWovn.start()を呼び出すだけです:

class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// v4: デバッグモードパラメータは不要
Wovn.start()
return true
}
}

他のパラメータを使用していた場合:

// v3
Wovn.start(appGroupIdentifier: "group.com.example.app", isDebugMode: true, autoTranslateUIKit: true)

// v4
Wovn.start(appGroupIdentifier: "group.com.example.app", autoTranslateUIKit: true)

2. WOVNダッシュボードでクライアントIDを設定(開発モード用)

プログラムでデバッグモードを有効にする代わりに、v4では開発モードを使用します。これはWOVNダッシュボードで設定されたクライアントIDホワイトリストに基づいて有効化されます。

開発モードを有効にする手順:

  1. WOVNダッシュボードでプロジェクトのアプリ設定に移動
  2. セキュリティセクションに移動
  3. デバイスのクライアントIDをホワイトリストに追加
  4. 設定を保存

クライアントIDの確認方法:

開発モードが有効になると、アプリ起動時に以下を表示するトーストメッセージが表示されます:

  • レポートステータス(オン/オフ)
  • クライアントID

または、コンソールログで以下を確認:

ClientID: <your-client-id>

これにより、認可されたデバイスのみがWOVNにレポートを送信でき、本番アプリのセキュリティが向上します。

3. WOVN設定画面のデバッグモードトグルを削除(オプション)

以前、デバッグモードトグル付きのWOVN設定画面を実装していた場合(旧debug_mode.mdドキュメントの方法2)、v4ではこれは不要になりました。開発モードは完全にWOVNダッシュボードで管理されます。

安全に削除できるもの:

  • WOVN設定画面のデバッグモードトグル
  • 設定画面経由でプログラムでデバッグモードを設定するコード

4. SwiftUIコードを更新(オプション - 簡素化)

v4の主要な改善点の1つは、SwiftUIの自動翻訳です。カスタムのWovnTextWovnButtonラッパーを使用する必要がなくなりました。

v3では、WOVN専用のラッパーを使用する必要がありました:

// v3: カスタムラッパーが必要
struct ContentView: View {
var body: some View {
VStack {
WovnText("Hello World")
WovnButton("Click Me") {
// action
}
}
}
}

v4では、標準のSwiftUIコンポーネントが自動的に翻訳されます:

// v4: 標準のSwiftUIコンポーネントを使用
struct ContentView: View {
var body: some View {
VStack {
Text("Hello World") // 自動的に翻訳
Button("Click Me") { // 自動的に翻訳
// action
}
}
}
}

これは、WovnTextWovnButtonを使用していた場合、互換性の向上とコードの簡素化のために標準のSwiftUIコンポーネントに移行する必要があるという意味での破壊的変更です。

5. 開発モードのテスト

移行後:

  1. テストデバイスでアプリを起動
  2. コンソール出力でクライアントIDを確認:
    ClientID: <your-client-id>
  3. このクライアントIDをWOVNダッシュボードの開発モードホワイトリストに追加
  4. アプリを再起動
  5. 開発モードがアクティブであることを確認するトーストメッセージを確認
  6. 未翻訳テキストの横に「!」マーカーが表示されることを確認(該当する場合)

開発モードのメリット

v4の新しい開発モードは、旧デバッグモードに比べていくつかの利点があります:

  1. セキュリティの強化:レポートの有効/無効化のためにコードを変更したりアプリを再ビルドする必要がありません。ダッシュボードでホワイトリストを管理するだけです。

  2. ワークフローの簡素化:条件付きコンパイルやビルド構成チェックが不要になりました。開発モードはサーバー検証に基づいて実行時に判定されます。

  3. 視認性の向上:トーストメッセージと「!」マーカーにより、どのコンテンツがレポートされ、何が未翻訳のままかを簡単に識別できます。

  4. リスクの軽減:本番ビルドで誤ってデバッグ/レポート機能を有効にすることはできません。クライアントIDホワイトリストによりサーバー側で制御されるためです。

v4の追加改善点

WebView翻訳の強化

WebViewは翻訳が確認されるまで非表示になり、翻訳プロセス中に発生する可能性のあるちらつきを排除します。これにより、よりスムーズなユーザー体験が提供されます。

プッシュ通知のパフォーマンス

プッシュ通知の翻訳は、すべての翻訳データを読み込むのではなく、「PushNotification」画面に固有のコンテンツのみを取得することで高速化されました。

SwiftUIサポート

v4では、TextButtonLabelなどの標準SwiftUIコンポーネントの自動翻訳により、ファーストクラスのSwiftUIサポートが実現されました。カスタムラッパーは不要です。

未翻訳テキストの検出

開発モードで実行している場合、検出されたが未翻訳のテキストには「!」プレフィックスが付けられ、テスト中に不足している翻訳を簡単に識別できます。

破壊的変更のまとめ

削除されたパラメータ

  • Wovn.start(isDebugMode: Bool) - isDebugModeパラメータは削除されました。代わりにWovn.start()を使用してください。

動作の変更

  • 開発モードは、プログラムで設定するのではなく、クライアントID検証に基づいてサーバー側で判定されるようになりました
  • SwiftUIコンポーネントはカスタムラッパーなしで自動的に翻訳されます
  • WebView翻訳は、翻訳が確認されるまでWebViewを非表示にし、ちらつきを排除

非推奨のAPI

  • カスタムのWovnTextWovnButtonラッパー(存在した場合)は不要になりました - 代わりに標準のSwiftUIコンポーネントを使用してください

お困りの場合

移行中に問題が発生した場合:

  1. クライアントIDがダッシュボードのホワイトリストに正しく追加されていることを確認
  2. コンソール出力でエラーメッセージを確認
  3. iOS SDK v4.0.0以降を使用していることを確認
  4. WOVNサポートにお問い合わせください

追加リソース