iOS の移行

Prerequisites

コードの移行を開始する前に、次の要件を満たしていることを確認してください。

  • ML Kit は Xcode 13.2.1 以降をサポートしています。
  • ML Kit は、iOS バージョン 10 以降をサポートしています。
  • ML Kit は、32 ビット アーキテクチャ(i386 と armv7)をサポートしていません。ML Kit は、64 ビット アーキテクチャ(x86_64 と arm64)をサポートしています。
  • ML Kit ライブラリは cocoaPods としてのみ提供されています。フレームワークと cocoaPods は混在できないため、このライブラリを使用するには、まず cocoaPods を使用するように移行する必要があります。

CocoaPods を更新する

アプリの Podfile で ML Kit の iOS CocoaPods の依存関係を更新します。

API古い Pod 名新しい Pod 名
バーコード スキャン Firebase/MLVision
Firebase/MLVisionBarcodeModel
GoogleMLKit/バーコード スキャン
顔検出 Firebase / MLVision
Firebase / MLVisionFaceModel
GoogleMLKit/FaceDetection
画像ラベル付け Firebase / MLVision
Firebase / MLVisionLabelModel
GoogleMLKit/ImageLabeling
オブジェクトの検出とトラッキング Firebase/MLVisionObjectDetection GoogleMLKit/ObjectDetection
テキスト認識 Firebase/MLVision
Firebase/MLVisionTextModel
GoogleMLKit/TextRecognition
AutoML 画像のラベル付け(バンドルモデル) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
AutoML 画像のラベル付け(Firebase からのモデルのダウンロード) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase
言語 ID Firebase / MLNaturalLanguage
Firebase / MLNLLanguageID
GoogleMLKit/LanguageID
スマート リプライ Firebase/MLNaturalLanguage
Firebase/MLNLSmartReply
GoogleMLKit/SmartReply
翻訳する Firebase/MLNaturalLanguage
Firebase/MLNLTranslate
GoogleMLKit/翻訳

クラス、列挙型、型の名前を更新する

一般に、クラス、列挙型、型の名前を変更する必要があります。

  • Swift: クラス名と列挙型から Vision プレフィックスを削除しました。
  • Objective-C: FIRVisionFIR の両方のクラス名と列挙型の接頭辞を MLK に置き換えます。

クラス名と型によっては、この一般ルールが適用されない場合があります。

Swift

以前のクラスまたは型新しいクラスまたは型
AutoMLLocalModel ローカルモデル
AutoMLRemoteModel CustomRemoteModel
VisionBarcodeDetectionCallback バーコード スキャンのコールバック
VisionBarcodeDetector バーコードスキャナ
VisionBarcodeDetectorOptions BarcodeScannerOptions
VisionImage VisionImage(変更なし)
ビジョンポイント VisionPoint(変更なし)
VisionOnDeviceAutoMLImageLabelerOptions CustomImageLabelerOptions
VisionOnDeviceImageLabelerOptions ImageLabeler オプション

Objective-C

以前のクラスまたは型新しいクラスまたは型
FIRAutoMLLocalModel MLKLocalModel(英語)
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionCallback MLKBarcodeScanningCallback
FIRVisionBarcodeDetector MLKBarCodeScanner
FIRVisionBarcodeDetectorOptions MLKBarcodeScannerOptions
FIRVisionImage MLKVisionImage
FIRVisionOnDeviceAutoMLImageLabelerOptions MLKCustomImageLabelerOptions
FIRVisionOnDeviceImageLabelerOptions MLKImageLabeler オプション
VisionPoint MLKVisionPoint

Objective-C

メソッド名を更新する

次のルールに従ってメソッド名を更新します。

  • ドメイン エントリ ポイント クラス(VisionNaturalLanguage)は存在しなくなりました。これらはタスク固有のクラスに置き換えられました。検出機能を取得するさまざまなファクトリ メソッドの呼び出しを、各検出器のファクトリ メソッドへの直接呼び出しに置き換えます。

  • VisionImageMetadata クラスと、VisionDetectorImageOrientation 列挙型が削除されました。画像の表示方向を指定するには、VisionImageorientation プロパティを使用します。

  • 新しい TextRecognizer インスタンスを取得する onDeviceTextRecognizer メソッドの名前が textRecognizer に変更されました。

  • TextElementTextLineTextBlock などのテキスト認識の結果クラスから信頼プロパティが削除されました。

  • 新しい ImageLabeler インスタンスを取得するための onDeviceImageLabeler メソッドと onDeviceImageLabeler(options:) メソッドがマージされ、名前が imageLabeler(options:) に変更されました。

  • 新しい ObjectDetector インスタンスを取得するための objectDetector メソッドが削除されました。代わりに objectDetector(options:) を使用してください。

  • type プロパティが ImageLabeler から削除され、entityID プロパティが画像ラベル付けの結果クラス ImageLabel から削除されました。

  • 他の Vision API との整合性を取るため、バーコード スキャン API detect(in _:, completion:) の名前を process(_:, completion:) に変更しました。

  • Natural Language API では、「言語コード」ではなく「言語タグ」という用語(BCP-47 標準で定義されている用語)が使用されるようになりました。

  • TranslateLanguage が、言語タグ(.en など)の代わりに、定数名に読み取り可能な名前(.english など)を使用するようになりました。

以下に、古い Swift メソッドと新しい Swift メソッドの例を示します。

let options = VisionOnDeviceImageLabelerOptions()
options.confidenceThreshold = 0.75
let labeler = Vision.vision().onDeviceImageLabeler(options: options)

let detector = Vision.vision().faceDetector(options: options)

let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json")
let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = 0.75
let labeler = vision.onDeviceAutoMLImageLabeler(options: options)

let detector = Vision.vision().objectDetector()
    

新規

let options = ImageLabelerOptions()
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = FaceDetector.faceDetector(options: options)

let localModel = LocalModel(manifestPath: "automl/manifest.json")
let options = CustomImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
    

従来の Objective-C メソッドと新しい Objective-C メソッドの例を以下に示します。

FIRVisionOnDeviceImageLabelerOptions *options = 
    [[FIRVisionOnDeviceImageLabelerOptions alloc] init];
options.confidenceThreshold = 0.75;
FIRVisionImageLabeler *labeler = 
    [[FIRVision vision] onDeviceImageLabelerWithOptions:options];

FIRVisionFaceDetector *detector =
    [[FIRVision vision] faceDetectorWithOptions: options];

FIRAutoMLLocalModel *localModel =
    [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"];
FIRVisionOnDeviceAutoMLImageLabelerOptions *options =
    [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc]
        initWithLocalModel: localModel];
options.confidenceThreshold = 0.75
FIRVisionImageLabeler *labeler =
    [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options];

FIRVisionObjectDetector *detector =
    [[FIRVision vision] objectDetector];
    

新規

MLKImageLabelerOptions *options =
    [[MLKImageLabelerOptions alloc] init];
options.confidenceThreshold = @(0.75);
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKFaceDetector *detector =
    [MLKFaceDetector faceDetectorWithOptions:options];

MLKLocalModel *localModel =
    [[MLKLocalModel alloc]
        initWithManifestPath:@"automl/manifest.json"];
MLKCustomImageLabelerOptions *options =
    [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel];
options.confidenceThreshold = @(0.75)
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init];
MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
    

API 固有の変更

オブジェクトの検出とトラッキング

アプリでオブジェクト分類を使用している場合、検出されたオブジェクトの分類カテゴリを返す方法が新しい SDK によって変更されたことに注意してください。

VisionObjectVisionObjectCategory は、整数ではなく、ObjectLabel オブジェクトで text として返されます。使用可能なすべての文字列カテゴリが DetectedObjectLabel 列挙型に含まれています。

.unknown カテゴリは削除されていることに注意してください。オブジェクト分類の信頼度が低い場合、分類器はラベルを一切返しません。

以下に、古い Swift コードと新しい Swift コードの例を示します。

if (object.classificationCategory == .food) {
    ...
}

新規

if let label = object.labels.first {
  if (label.text == DetectedObjectLabel.food.rawValue) {
    ...
  }
}
// or
if let label = object.labels.first {
  if (label.index == DetectedObjectLabelIndex.food.rawValue) {
    ...
  }
}

以下に、古い Objective-C コードと新しい Objective-C コードの例を示します。

if (object.classificationCategory == FIRVisionObjectCategoryFood) {
    ...
}

新規

if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
  ...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
  ...
}

Firebase の依存関係を削除する(省略可)

このステップは、次の条件が満たされる場合にのみ適用されます。

  • Firebase ML Kit は、使用する唯一の Firebase コンポーネントである
  • オンデバイス API のみを使用
  • モデル配信を使用していない

その場合は、移行後に Firebase の依存関係を削除できます。手順は次のとおりです。

  • アプリのディレクトリと Xcode プロジェクトから GoogleService-Info.plist ファイルを削除して、Firebase 構成ファイルを削除します。
  • pod 'Firebase/Analytics' などの Firebase CocoaPods を Podfile から削除します。
  • FirebaseApp の初期化(FirebaseApp.configure() など)をコードから削除します。
  • Firebase サポートサイトの手順に沿って、Firebase コンソールで Firebase アプリを削除します。

ヘルプ

問題が発生した場合は、コミュニティ ページで、お問い合わせ可能なチャネルをご確認ください。