iOS 開発のために Mac とペアリングする

.NET Multi-platform App UI (.NET MAUI) を使用して、ネイティブ iOS アプリケーションをビルドするには、Mac 上でのみ動作する Apple のビルド ツールにアクセスする必要があります。 このため、.NET MAUI iOS アプリをビルドするために、Visual Studio 2022 はネットワークからアクセス可能な Mac に接続する必要があります。

Visual Studio 2022 の Mac とペアリングする機能は、Mac ビルド ホストの検出、接続、認証、記憶を行うため、Windows で生産的に作業できます。

Mac とペアリングする機能を使うと、次のような開発ワークフローが可能になります。

  • Visual Studio 2022 では、.NET MAUI iOS のコードを記述できます。
  • Visual Studio 2022 は、Mac ビルド ホストへのネットワーク接続を開き、そのマシン上のビルド ツールを使用して iOS アプリをコンパイルし、署名を行います。
  • Mac 上で別のアプリケーションを実行する必要はありません。Visual Studio 2022 では SSH 経由で Mac ビルドを安全に呼び出します。
  • 変更が行われるとすぐに Visual Studio 2022 は通知を受信します。 たとえば、iOS デバイスが Mac に接続された際や、ネットワーク上で使用できるようになった際には、iOS ツール バーが即座に更新されます。
  • Visual Studio 2022 の複数のインスタンスを Mac に同時接続できます。
  • Windows のコマンド ラインを使って、iOS アプリをビルドできます。

Note

この記事の手順に従う前に、Mac で Xcode をインストールします。 インストール後に手動で Xcode を開き、コンポーネントを追加できるようにします。 さらに、最新の Visual Studio 2022 for Mac または Mono のいずれかをインストールする必要があります。 さらに、Apple シリコンを搭載した Mac コンピューターをお持ちの場合は、Rosetta がインストールされていることをご確認ください。

Visual Studio 2022 for Mac のインストールを希望しない場合は、Visual Studio 2022 で Mac ビルド ホストを自動的に構成できます。 ただし、Xcode をインストールして実行し、Mono をインストールする必要があります。

Mac でリモート ログインを有効にする

Mac ビルド ホストを設定するには、まずリモート ログインを有効にします。

  1. Mac で、[システム環境設定] を開き、[共有] ウィンドウに移動します。

  2. [サービス] リストの [リモート ログイン] オプションをオンにします

    Enabling remote login.

    [すべてのユーザー] がアクセスできるように構成されていること、お使いの Mac のユーザー名またはグループが許可されたユーザーのリストに含まれていることを確認します。

  3. メッセージが表示されたら、macOS ファイアウォールを構成します。 着信接続をブロックするように macOS ファイアウォールを設定した場合は、mono-sgen による着信接続の受信を許可することが必要な場合があります。 その場合は、アラートが表示されます。

  4. Windows コンピューターと同じネットワーク上にある場合、この時点で、Visual Studio 2022 で Mac を検出できるようになっているはずです。 Mac がまだ検出できない場合は、Mac を手動で追加してみてください。

Visual Studio 2022 から Mac に接続する

Mac でリモート ログインを有効にした後、Visual Studio 2022 を Mac に接続します。

  1. Visual Studio 2022 で、既存の .NET MAUI プロジェクトを開くか、新規プロジェクトを作成します。

  2. iOS ツール バーの [Mac とのペアリング] ボタンを使用して、[Mac とのペアリング] ダイアログを開きます。

    The iOS toolbar, with the Pair to Mac button highlighted.

    または、[ツール] > [iOS] > [Mac とのペアリング] を選択します。

    [Mac とのペアリング] ダイアログに、過去に接続し、現在利用可能なすべての Mac ビルド ホストのリストが表示されます。

    The Pair to Mac dialog.

  3. 一覧で Mac を選択し、[接続] を選択します。

  4. ユーザー名とパスワードを入力します。 特定の Mac に初めて接続した場合は、そのコンピューターのユーザー名とパスワードを入力するよう求められます。

    Entering a username and password for the Mac.

    ヒント

    ログインの際には、システム ユーザー名を使用します。

    [Mac とペアリング] はこれらの資格情報を使用して、Mac への新しい SSH 接続を作成します。 成功した場合、Mac 上の authorized_keys ファイルにキーが追加されます。 以降、同じ Mac コンピューターに接続する際には自動的にログインします。

  5. [Mac とペアリング] により自動的に Mac が構成されます。 Visual Studio 2022 は、必要に応じて、接続されている Mac ビルド ホストに前提条件をインストールまたは更新します。 ただし、Xcode は手動でインストールする必要があります。

  6. 接続状態のアイコンを確認します。 Visual Studio 2022 が Mac に接続されている場合、[Mac とペアリング] ダイアログのその Mac の項目には、現在接続されていることを示すアイコンが表示されます。

    A connected Mac.

    接続できる Mac は一度に 1 台だけです。

    ヒント

    [Mac とペアリング] の一覧で Mac を右クリックすると表示されるコンテキスト メニューでは、[接続...][この Mac を記憶しない][切断] を選択できます。

    The Pair to Mac context menus.

    [この Mac を記憶しない] を選んだ場合、選択した Mac に対する資格情報は保持されません。 その Mac に再接続するには、ユーザー名とパスワードを再入力する必要があります。

Mac ビルド ホストとのペアリングが成功すると、Visual Studio 2022 で .NET MAUI iOS アプリをビルドできるようになります。 詳細については、「初めてのアプリを作成する」をご覧ください。

Mac をペアリングできない場合は、Mac を手動で追加してみてください。

Mac を手動で追加する

[Mac とペアリング] ダイアログのリストに特定の Mac が表示されない場合は、手動で追加します。

  1. お使いの Mac で [システム環境設定] > [共有] > [リモートログイン] を開き、Mac の IP アドレスを確認します。

    The Mac's IP address in System Preferences > Sharing.

    または、コマンド ラインを使用します。 [ターミナル] で次のコマンドを実行します。

    ipconfig getifaddr en0
    

    ネットワークの構成によっては、en0 ではなく、インターフェイス名 (例: en1en2) の使用が必要になる場合があります。

  2. Visual Studio 2022 の [Mac とペアリング] ダイアログで、[Mac の追加] を選択します。

    The Add Mac button in the Pair to Mac dialog.

  3. Mac の IP アドレスを入力して、[追加] を選択します。

    Entering the Mac's IP address.

  4. Mac のユーザー名とパスワードを入力します。

    Enter a username and password.

    ヒント

    ログインの際には、システム ユーザー名を使用します。

  5. [ログイン] を選択して Visual Studio 2022 を SSH 経由で Mac に接続し、既知のマシンのリストに追加します。

既知の Mac への自動接続を有効にする

既定では、以前にペアリングされた Mac への接続は Visual Studio の起動時に確立されません。 ただし、[ツール] > [オプション] > [Xamarin] > [iOS 設定] に移動し、[既知の Mac への自動接続を有効にする] にチェックを付ければ、Visual Studio で既知の Mac への自動接続を有効にすることができます。

Enable auto connection to known Macs in Visual Studio.

Visual Studio を再起動すると、起動するたびに既知の Mac に自動的に接続されます。

Mac の自動プロビジョニング

[Mac とのペアリング] では、.NET MAUI iOS アプリの構築に必要なソフトウェアが Mac に自動的にプロビジョニングされます。 このようなソフトウェアには、.NET とさまざまな Xcode 関連ツールが含まれます (Xcode 自体は含まれません)。

重要

  • [Mac とのペアリング] では、Xcode をインストールできません。 Mac ビルド ホストに手動でインストールする必要があります。 Xcode は NET MAUI iOS アプリの開発で必要になります。
  • Mac の自動プロビジョニングには、Mac でリモート ログインが有効になっている必要があり、Mac はネットワーク経由で Windows コンピューターにアクセスできる必要があります。
  • 自動 Mac プロビジョニングでは、.NET をインストールするための十分な空き容量が Mac に必要です。

さらに、[Mac とのペアリング] では、Visual Studio 2022 を Mac に接続すると、Mac に対して、必要なソフトウェアのインストールや更新も行われるようになります。

Xcode ツールとライセンス

[Mac とペアリング] は、Xcode がインストールされ、そのライセンスが同意されているかどうかも調べて判断します。 [Mac とのペアリング] では Xcode はインストールされないものの、ライセンスへの同意は求められます。

さらに、[Mac とのペアリング] では、Xcode と一緒に配布されるさまざまなパッケージをインストールまたは更新します。 これらのパッケージのインストールは迅速に行われ、プロンプトは表示されません。

Mac の自動プロビジョニングのトラブルシューティング

Mac の自動プロビジョニングを使用して問題が発生した場合は、%LOCALAPPDATA%\Xamarin\Logs\17.0 に保存されている Visual Studio 2022 IDE ログを確認してください。 これらのログには、障害を診断したりサポートを受けたりするときに役立つエラー メッセージが含まれる可能性があります。

Windows コマンド ラインから iOS アプリをビルドする

[Mac とのペアリング] では、コマンド ラインからの .NET MAUI アプリの構築をサポートしています。 .NET MAUI iOS アプリのソースが格納されているフォルダーに移動し、次のコマンドを実行します。

dotnet build -f net8.0-ios -p:ServerAddress={macOS build host IP address} -p:ServerUser={macOS username} -p:ServerPassword={macOS password} -p:TcpPort=58181 -p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/Xamarin/XMA/SDKs/dotnet/

上記の例で dotnet に渡されるパラメーターは次のとおりです。

  • ServerAddress: Mac ビルド ホストの IP アドレス。
  • ServerUser: Mac ビルド ホストにログインするときに使用するユーザー名。 フル ネームではなくシステム ユーザー名を使います。
  • ServerPassword - Mac ビルド ホストにログインするときに使用するパスワード。
  • _DotNetRootRemoteDirectory - .NET SDK を含む Mac ビルド ホスト上のフォルダー。

[Mac とペアリング] が、Visual Studio 2022 またはコマンド ラインから Mac ビルド ホストに初めてログインするときに、SSH キーを設定します。 これらのキーを設定していれば、以降のログインではユーザー名やパスワードは必要ありません。 新しく作成されたキーは、%LOCALAPPDATA%\Xamarin\MonoTouch に格納されます。

コマンド ラインでのビルドの呼び出しで ServerPassword パラメーターを省略すると、[Mac とペアリング] は保存されている SSH キーを使って Mac ビルド ホストへのログインを試みます。

Windows コマンド ラインから iOS アプリをビルドする方法の詳細については、「コマンド ラインを使用して iOS アプリを公開する」をご覧ください。