iOS の MediaPipe フレームワーク

MediaPipe Framework を使用して iOS サンプルアプリをビルドする手順は次のとおりです。これらのサンプルアプリの詳細については、iOS の Hello World! をご覧ください。

iOS サンプルアプリの構築

前提条件

  1. こちらのinstructionsに沿って Mediapipe Framework をインストールします。

  2. Xcode をインストールし、次のコマンドを使用してコマンドライン ツールをインストールします。

    xcode-select --install
    
  3. Bazelisk をインストールします。

    Homebrew を使用して、最新バージョンを入手することをおすすめします。

    brew install bazelisk
    
  4. Python 3.7 をデフォルトの Python バージョンとして設定し、Python の「six」ライブラリをインストールします。これは TensorFlow で必要です。

    pip3 install --user six
    
  5. MediaPipe リポジトリのクローンを作成します。

    git clone https://github.com/google/mediapipe.git
    

バンドル ID の接頭辞を設定する

すべての iOS アプリにバンドル ID が必要です。また、その ID を持つアプリをスマートフォンにインストールできるプロビジョニング プロファイルも必要です。異なる MediaPipe ユーザー間の競合を回避するには、iOS デモアプリのバンドル ID に一意の接頭辞を構成する必要があります。

カスタム プロビジョニング プロファイルがある場合は、後述のカスタム プロビジョニングをご覧ください。

それ以外の場合は、次のコマンドを実行して一意の接頭辞を生成します。

python3 mediapipe/examples/ios/link_local_profiles.py

Xcode プロジェクトを作成する

これにより、Xcode でサンプルアプリの 1 つを編集してデバッグできます。また、自動プロビジョニング(後述)を利用することもできます。

  1. ここでは、Tulsi というツールを使用して、Bazel ビルド構成から Xcode プロジェクトを生成します。

    # cd out of the mediapipe directory, then:
    git clone https://github.com/bazelbuild/tulsi.git
    cd tulsi
    # remove Xcode version from Tulsi's .bazelrc (see http://github.com/bazelbuild/tulsi#building-and-installing):
    sed -i .orig '/xcode_version/d' .bazelrc
    # build and run Tulsi:
    sh build_and_run.sh
    

    これにより、ホーム ディレクトリの Applications ディレクトリに Tulsi.app がインストールされます。

  2. Tulsi アプリを使用して mediapipe/Mediapipe.tulsiproj を開きます。

  3. [Configs] タブで MediaPipe 構成ファイルを選択し、下の [Generate] ボタンをクリックします。Xcode プロジェクトの保存場所を尋ねられます。プロジェクトが生成されると、Xcode で開きます。

    バンドル ID に関するエラーが発生した場合は、前のセクションをご覧ください。

プロビジョニングの設定

iOS デバイスにアプリケーションをインストールするには、プロビジョニング プロファイルが必要です。次の 2 つのオプションがあります。

  1. 自動プロビジョニング。これにより、アプリをビルドして個人のデバイスにインストールできます。プロビジョニング プロファイルは Xcode によって管理されるため、頻繁に更新する必要があります(有効期間は約 1 週間)。

  2. カスタム プロビジョニング。これは、Apple デベロッパー アカウントに関連付けられているプロビジョニング プロファイルを使用します。これらのプロファイルは有効期間が長く、複数のデバイスをターゲットにできますが、取得するには Apple の有料デベロッパー アカウントが必要です。

自動プロビジョニング

  1. 前述のように、MediaPipe 用の Xcode プロジェクトを作成します。

  2. 左側のサイドバーにあるプロジェクト ナビゲータで、「Mediapipe」プロジェクトを選択します。

  3. アプリ ターゲットのいずれか(HandTrackingGpuApp など)を選択します。

  4. [Signing & Capabilities] タブを選択します。

  5. [署名を自動的に管理] チェックボックスをオンにして、ダイアログを確定します。

  6. [Team] ダイアログ メニューで [Your Name (Personal Team)] を選択します。

  7. この設定は、インストールするアプリごとに 1 回行う必要があります。 必要に応じてステップ 3 ~ 6 を繰り返します。

選択したアプリごとにプロビジョニング プロファイルが生成されます。次に、Bazel にこれらを使用するように指示する必要があります。これを簡単に行うためのスクリプトを用意しています。

  1. ターミナルで、リポジトリのクローンを作成した mediapipe ディレクトリに移動します。

  2. 次のコマンドを実行します。

    python3 mediapipe/examples/ios/link_local_profiles.py
    

これにより、Xcode で自動プロビジョニングを有効にしたすべてのアプリケーションのプロビジョニング プロファイルが検出され、リンクされます。

カスタム プロビジョニング

  1. Apple からプロビジョニング プロファイルを取得します。
  1. プロビジョニング プロファイルを mediapipe/mediapipe/provisioning_profile.mobileprovision にシンボリック リンクまたはコピーします。

    cd mediapipe
    ln -s ~/Downloads/MyProvisioningProfile.mobileprovision mediapipe/provisioning_profile.mobileprovision
    
  1. mediapipe/examples/ios/bundle_id.bzl を開き、BUNDLE_ID_PREFIX をプロビジョニング プロファイルに関連付けられた接頭辞に変更します。

Xcode でアプリをビルドして実行する

  1. Xcode プロジェクトを作成し、自動プロビジョニングまたはカスタム プロビジョニングのいずれかが設定されていることを確認します。

  2. これで、ターゲット メニューで Mediapipe Framework のデモを選択し、通常どおりビルドして実行できるようになりました。

コマンドラインを使用してアプリをビルドする

  1. 自動プロビジョニングまたはカスタム プロビジョニングのいずれかを設定していることを確認します。

  2. MediaPipe Hands を使用して、たとえば以下を実行します。

    bazel build -c opt --config=ios_arm64 mediapipe/examples/ios/handtrackinggpu:HandTrackingGpuApp
    

    アプリに署名するための権限リクエストが codesign から表示されることがあります。

  3. Xcode で Devices and Simulators ウィンドウを開きます(command-shift-2)。

  4. デバイスが接続されていることを確認してください。インストール済みのアプリのリストが表示されます。 リストの下にある [+] ボタンを押し、Bazel でビルドされた .ipa ファイルを選択します。

  5. これで、デバイスでアプリを実行できるようになりました。