iOS 向けの移行

前提条件

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

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

Cocoapods を更新する

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

API古い Pod 名新しい Pod 名
バーコード スキャン Firebase/MLVision
Firebase/MLVisionBarcodeModel
GoogleMLKit/BarcodeScanning
顔検出 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/Translate

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

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

  • Swift: クラス名と列挙型から Vision 接頭辞を削除
  • Objective-C: FIRVisionFIR の両方のクラス名と列挙型接頭辞の置き換え 作成者: MLK

一部のクラス名と型では、この一般的なルールは適用されません。

Swift

以前のクラスまたは型新しいクラスまたは型
AutoMLLocalModel LocalModel
AutoMLRemoteModel CustomRemoteModel
VisionBarcodeDetectionCallback BarcodeScanningCallback
VisionBarcodeDetector BarcodeScanner
VisionBarcodeDetectorOptions BarcodeScannerOptions
VisionImage VisionImage(変更なし)
VisionPoint VisionPoint(変更なし)
VisionOnDeviceAutoMLImageLabelerOptions CustomImageLabelerOptions
VisionOnDeviceImageLabelerOptions ImageLabelerOptions

Objective-C

以前のクラスまたは型新しいクラスまたは型
FIRAutoMLLocalModel MLKLocalModel
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionCallback MLKBarcodeScanningCallback
FIRVisionBarcodeDetector MLKBarcodeScanner
FIRVisionBarcodeDetectorOptions MLKBarcodeScannerOptions
FIRVisionImage MLKVisionImage
FIRVisionOnDeviceAutoMLImageLabelerOptions MLKCustomImageLabelerOptions
FIRVisionOnDeviceImageLabelerOptions MLKImageLabelerOptions
FIRVisionPoint MLKVisionPoint

Objective-C

メソッド名を更新する

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

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

  • VisionImageMetadata クラスと、 VisionDetectorImageOrientation 列挙型。次の orientation プロパティを使用します: VisionImage: 画像の表示向きを指定します。

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

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

  • onDeviceImageLabeler メソッドと onDeviceImageLabeler(options:) メソッド: 新しい ImageLabeler インスタンスを統合し、名前を imageLabeler(options:)

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

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

  • バーコード スキャン API detect(in _:, completion:) の名前が次のように変更されました: 他の Vision API と一致するように process(_:, completion:)

  • Natural Language API では「言語タグ」という用語を使用するようになりました( BCP-47 標準)を使用します。

  • TranslateLanguage が定数に読みやすい名前(.english など)を使用するようになりました (.en など)は使用しないでください。

以下に、古い 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 の古いメソッドと新しいメソッドの例を次に示します。

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 は、ObjectLabeltext として返されます。 オブジェクトです。可能なすべての文字列カテゴリが DetectedObjectLabel 列挙値。

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

新旧の 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 コードの例を次に示します。

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

新規

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

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

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

  • 使用する Firebase コンポーネントが Firebase ML Kit のみである
  • オンデバイス API のみを使用している
  • モデルのサービングを使用しない

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

  • GoogleService-Info.plist を削除して Firebase 構成ファイルを削除します。 このファイルは、アプリのディレクトリと Xcode プロジェクトから取得できます。
  • Podfile から pod 'Firebase/Analytics' などの Firebase cocoapod を削除します。
  • FirebaseApp.configure() などの FirebaseApp の初期化をコードから削除します。
  • Firebase コンソールで Firebase アプリを削除する Firebase サポートサイトの手順をご覧ください。

ヘルプ

問題が発生した場合は、コミュニティ ページで概要をご確認ください。 問い合わせ用のチャネルが表示されます