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 ビルド ホストを設定するには、まずリモート ログインを有効にします。
Mac で、[システム環境設定] を開き、[共有] ウィンドウに移動します。
[サービス] リストの [リモート ログイン] オプションをオンにします
[すべてのユーザー] がアクセスできるように構成されていること、お使いの Mac のユーザー名またはグループが許可されたユーザーのリストに含まれていることを確認します。
メッセージが表示されたら、macOS ファイアウォールを構成します。 着信接続をブロックするように macOS ファイアウォールを設定した場合は、
mono-sgen
による着信接続の受信を許可することが必要な場合があります。 その場合は、アラートが表示されます。Windows コンピューターと同じネットワーク上にある場合、この時点で、Visual Studio 2022 で Mac を検出できるようになっているはずです。 Mac がまだ検出できない場合は、Mac を手動で追加してみてください。
Visual Studio 2022 から Mac に接続する
Mac でリモート ログインを有効にした後、Visual Studio 2022 を Mac に接続します。
Visual Studio 2022 で、既存の .NET MAUI プロジェクトを開くか、新規プロジェクトを作成します。
iOS ツール バーの [Mac とのペアリング] ボタンを使用して、[Mac とのペアリング] ダイアログを開きます。
または、[ツール] > [iOS] > [Mac とのペアリング] を選択します。
[Mac とのペアリング] ダイアログに、過去に接続し、現在利用可能なすべての Mac ビルド ホストのリストが表示されます。
一覧で Mac を選択し、[接続] を選択します。
ユーザー名とパスワードを入力します。 特定の Mac に初めて接続した場合は、そのコンピューターのユーザー名とパスワードを入力するよう求められます。
ヒント
ログインの際には、システム ユーザー名を使用します。
[Mac とペアリング] はこれらの資格情報を使用して、Mac への新しい SSH 接続を作成します。 成功した場合、Mac 上の authorized_keys ファイルにキーが追加されます。 以降、同じ Mac コンピューターに接続する際には自動的にログインします。
[Mac とペアリング] により自動的に Mac が構成されます。 Visual Studio 2022 は、必要に応じて、接続されている Mac ビルド ホストに前提条件をインストールまたは更新します。 ただし、Xcode は手動でインストールする必要があります。
接続状態のアイコンを確認します。 Visual Studio 2022 が Mac に接続されている場合、[Mac とペアリング] ダイアログのその Mac の項目には、現在接続されていることを示すアイコンが表示されます。
接続できる Mac は一度に 1 台だけです。
ヒント
[Mac とペアリング] の一覧で Mac を右クリックすると表示されるコンテキスト メニューでは、[接続...]、[この Mac を記憶しない]、[切断] を選択できます。
[この Mac を記憶しない] を選んだ場合、選択した Mac に対する資格情報は保持されません。 その Mac に再接続するには、ユーザー名とパスワードを再入力する必要があります。
Mac ビルド ホストとのペアリングが成功すると、Visual Studio 2022 で .NET MAUI iOS アプリをビルドできるようになります。 詳細については、「初めてのアプリを作成する」をご覧ください。
Mac をペアリングできない場合は、Mac を手動で追加してみてください。
Mac を手動で追加する
[Mac とペアリング] ダイアログのリストに特定の Mac が表示されない場合は、手動で追加します。
お使いの Mac で [システム環境設定] > [共有] > [リモートログイン] を開き、Mac の IP アドレスを確認します。
または、コマンド ラインを使用します。 [ターミナル] で次のコマンドを実行します。
ipconfig getifaddr en0
ネットワークの構成によっては、
en0
ではなく、インターフェイス名 (例:en1
やen2
) の使用が必要になる場合があります。Visual Studio 2022 の [Mac とペアリング] ダイアログで、[Mac の追加] を選択します。
Mac の IP アドレスを入力して、[追加] を選択します。
Mac のユーザー名とパスワードを入力します。
ヒント
ログインの際には、システム ユーザー名を使用します。
[ログイン] を選択して Visual Studio 2022 を SSH 経由で Mac に接続し、既知のマシンのリストに追加します。
既知の Mac への自動接続を有効にする
既定では、以前にペアリングされた Mac への接続は Visual Studio の起動時に確立されません。 ただし、[ツール] > [オプション] > [Xamarin] > [iOS 設定] に移動し、[既知の Mac への自動接続を有効にする] にチェックを付ければ、Visual Studio で既知の Mac への自動接続を有効にすることができます。
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 アプリを公開する」をご覧ください。
.NET MAUI