前提条件
コードの移行を開始する前に、次の要件を満たしていることを確認してください。
- ML Kit は Xcode 13.2.1 以降をサポートしています。
- ML Kit は iOS バージョン 15.5 以降をサポートしています。
- 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/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:
FIRVision
クラス名とFIR
クラス名、列挙型の接頭辞の両方を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
メソッド名を更新する
メソッド名を次のルールに従って更新します。
ドメイン エントリ ポイント クラス(
Vision
、NaturalLanguage
)は存在しなくなりました。タスク固有のクラスに置き換えられています。検出機能を取得するためのさまざまなファクトリ メソッドの呼び出しを、各検出機能のファクトリ メソッドへの直接呼び出しに置き換えます。VisionImageMetadata
クラスとVisionDetectorImageOrientation
列挙型が削除されました。VisionImage
のorientation
プロパティを使用して、画像の表示方向を指定します。新しい
TextRecognizer
インスタンスを取得するonDeviceTextRecognizer
メソッドの名前をtextRecognizer
に変更しました。信頼性プロパティは、
TextElement
、TextLine
、TextBlock
などのテキスト認識結果クラスから削除されました。新しい
ImageLabeler
インスタンスを取得するonDeviceImageLabeler
メソッドとonDeviceImageLabeler(options:)
メソッドが統合され、imageLabeler(options:)
に名前が変更されました。新しい
ObjectDetector
インスタンスを取得するobjectDetector
メソッドが削除されました。代わりにobjectDetector(options:)
を使用してください。type
プロパティはImageLabeler
から削除され、entityID
プロパティは画像ラベル付け結果クラスImageLabel
から削除されました。他のビジョン 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 では検出されたオブジェクトの分類カテゴリを返す方法が変更されています。
VisionObject
の VisionObjectCategory
は、整数ではなく 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 コンポーネントが Firebase ML Kit のみである
- オンデバイス API のみを使用する
- モデル サービングを使用していない
その場合は、移行後に Firebase の依存関係を削除できます。手順は次のとおりです。
- アプリのディレクトリと Xcode プロジェクトから GoogleService-Info.plist ファイルを削除して、Firebase 構成ファイルを削除します。
- Podfile から Firebase Cocoapod(
pod 'Firebase/Analytics'
など)を削除します。 - コードから FirebaseApp の初期化(
FirebaseApp.configure()
など)を削除します。 - Firebase サポート サイトの手順に沿って、Firebase コンソールで Firebase アプリを削除します。
ヘルプ
問題が発生した場合は、コミュニティ ページで、YouTube にお問い合わせいただけるチャネルをご確認ください。