前提条件
コードの移行を開始する前に、以下の要件を満たしていることをご確認ください。
- 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)は存在しなくなりました。タスク固有のクラスに置き換えられました。 検出機能を取得するためのさまざまな Factory メソッドの呼び出しを、各検出機能の Factory メソッドへの直接呼び出しに置き換えます。VisionImageMetadataクラスがVisionDetectorImageOrientation列挙型とともに削除されました。VisionImageのorientationプロパティを使用して、画像の表示方向を指定します。新しい
TextRecognizerインスタンスを取得するonDeviceTextRecognizerメソッドの名前がtextRecognizerに変更されました。信頼度プロパティが、
TextElement、TextLine、TextBlockなどのテキスト認識結果クラスから削除されました。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で、言語タグ(.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 ML Kit が使用する唯一の Firebase コンポーネントである
- オンデバイス API のみを使用している
- モデル サービングを使用していない
この場合は、移行後に Firebase の依存関係を削除できます。手順は次のとおりです。
- アプリのディレクトリと Xcode プロジェクトから GoogleService-Info.plist ファイルを削除して、Firebase 構成ファイルを削除します。
- Podfile から
pod 'Firebase/Analytics'などの Firebase cocoapod を削除します。 - コードから
FirebaseApp.configure()などの FirebaseApp の初期化を削除します。 - Firebase サポートサイトの 手順に沿って、Firebase コンソールで Firebase アプリを削除します。
ヘルプ
問題が発生した場合は、コミュニティ ページで、Google にお問い合わせいただけるチャネル をご確認ください。