【.Net Maui】iPhone実機へのアプリ配布手順(Windows開発者向け)

今回は .Net Maui(=.NET Multi-Platform App UI)で、
モバイルアプリの開発をしてみたい方向けの記事になります。

モバイルアプリのプラットフォームとしては、Android や iPhone などがありますね。
.Net Maui が登場したことで、使い慣れたC#等の言語でも
モバイルアプリ開発ができるようになったということで、
モバイルアプリを作成してみたいと思う方もいると思います。

◆iPhone実機へのアプリ配布は、なぜ敷居が高く感じるのか。

ご存じの方もいると思いますが、2023年11月現在での
.Net Maui でのアプリ開発を iPhone と Android で比較すると、
Androidアプリ開発の場合、デバッグなどは実績の長いエミュレータなどがありますので、
iPhoneと比べてアプリ動作確認をしやすいイメージがあると思います。

iPhoneアプリ開発の方が敷居を高く感じるのは、次の理由だと思います。

 「作成したアプリをiPhoneへ実機に配布して動かすには、MacPCが必要では?」
 「WindowsPCは持っているけど、MacPCは持っていない」

iPhoneアプリ開発の場合、MacOS & PC が必要になるということで、
アプリを動かすまで、少し敷居が高いイメージがあったと思います。

ですが、MacPCを使用せずとも、
自作アプリを
iPhone実機配布することは可能です。


とはいえ、ひと手間が必要です。Xamarin時代では、参考サイト様より
MacOSなしでのiPhone実機配備する手順を説明してくださっていたようでした。

 参考サイト:【Mac不要】.NET製iOSアプリをiPhone実機配備する手順
 ※筆者もこの記事を投稿するうえで、参考にさせていただきました。

.NetMauiの時代になり、Xamarin は .Net Maui吸収されることで
上記の手順も若干変わってきました。良い機会なので
.NetMauiでの、MacOSなしでのiPhone実機への配布手順をまとめてみたいと思います。

◆今回記事の対象となる方

今回の記事の対象の方は、下記のような方と思います。

 ・Visual Studio で、C# で一通りのアプリ開発経験が相応にある。
  ※もしくは、VB.netで開発経験がある。

 ・Visual Studio「.Net Maui」で組んだアプリを、iPhone実機へ転送&配布して動かしてみたい。

 ・WindowsのPCは所有しており、MacOSのPCは持っていないが
  MacPCを購入しないまでも、開発ライセンス「Apple Developer Program」に加入してもよい。
  私が登録したときは、年間契約\12,980 (※$99)でした。※2023/08時点


 ・iPhone実機にアプリを、Ad Hoc配布(アドホック配布)したい。

  アドホックとは何かについても、詳細を覚えておきましょう。
   Ad Hocとは … 「特定の目的のための」「限定目的の」等の意味のラテン語の語句である。
  今回で言えば、Apple Store を通さずに一般非公開にiOSアプリを配布する方法の一つ です。
   ・実機デバッグ・テストでの配布
   ・個人使用アプリでの配布
   ・小規模グループ内のみでの配布

  つまり、アドホック(Ad Hoc)配布とは、限定的配布という感じで覚えればよさそうですね。
  App Store 一般配布向け以外でも、iPhoneへのアプリ配布が出来そうですね。

今回はAd Hoc配布までを行います。
Apple Store への一般公開配布手順なども、いずれしていきたいですが
初めての方には、Ad Hoc配布の手順でも参考になると思います。

  ※当記事でのアプリ配布手順は、すべての責任を負いません。
   そのため、非営利配布の目的までに限定して解説します。
   もし、アプリ配布を営利目的で行う場合は、
   営利配布する上での調査確認等は、必ず行うようにしてくださいね。

◆用意するもの

 ・Windows PC             ※筆者は、Windows10 professional
 ・iPhone 実機              ※筆者は、iPhone12 pro
 ・WindowsからiPhoneへの転送ケーブル ※筆者は、Lightningケーブル
 ・Visual Studio 2022 Professional (無料のCommunityでも可)
 ・OpenSSL(Windows用)
  iPhone実機に配布する為に必要な「証明書ファイル」作成に使用します。
  MacがあればGUIで作成できますが、Windowsでも

  OpenSSLのコマンドを利用して「証明書ファイル」を作成することができます。

◆iPhoneに実機配布するために必要な認証

作成したアプリをiPhone実機へ配布する為の仕組みを確認しておきましょう。
アプリ配布には、そのアプリの正当性の認証チェックが必要になります。

この認証は、プロビジョニングプロファイル(.mobileprovision)という、
導入設備へ提供するための情報をまとめたものを使用して、認証します。

今回の導入先はiPhoneになりますが、アプリを配布する際に
アプリに一緒にプロビジョニングプロファイルを添えることで
「配置してOK」とアプリが正当である事を、認証します。

添えるといっても、実際は Visual Studio にプロビジョニングプロファイルを読込み、
アプリと紐づけることでコンパイル・ビルドした際に、
配布アプリにプロビジョニング情報が付与されることになります。

そして、ビルド等によりiPhone実機に転送配置される際に、自動で認証がなされます。
問題なければ、iPhoneにインストールされます。(AdHocアドホック配布)

◆iPhone実機配布(アドホック)の大まかな手順

最初は、全体の手順を確認しましょう。大まかな手順は、下記の通りになります。

①Apple Developer Program への登録(年間 \12,980 ※2023年08月時点 )

②各種ツールのインストール
 ・Visual Studio 2022 ・OpenSSL(Windows用)

③AppleからのiOSアプリ開発証明書を取得。その証明書を暗号化箱(.p12)に入れる。
 1.Apple Developer Program から、Appleより証明書をダウンロードするために
   下記ファイルが必要のため、 OpenSSL コマンドで作成します。
    ・秘密鍵(.key)      
    ・証明書署名要求(.csr) … 秘密鍵、発行者名、メールアドレス、国コードを含んだ物


 2.Apple Developer Program から、証明書署名要求(.csr)を使用して、
   AppleよりiOSアプリ開発証明書を作成してダウンロード。
    ・証明書(.cer) … 公開鍵として使用されます。

 3.証明書(.cer)を、セキュアな暗号化した箱にいれる。
   先ず、・暗号化なしの、証明書の箱(.pem)を作成
   .pemにパスワードと、秘密鍵(.key)を付けて 
      ・暗号化ありの、証明書の箱(.p12)を作成 

 4.PCに、 証明書一式(.p12) をインストール。
   証明書にはAppleからの公開鍵が含まれていますので、それを使用して、
   PCがAppleサーバとのセキュアな通信を確保するための、証明書インストールを行います。

 簡単に順序をまとめると、各ファイルの繋がりはこんな感じです。最終的に(.p12)を作成します。
 A. .key        秘密鍵作成
 B. .key → .csr     秘密鍵から、証明書依頼要求ファイル作成
 C. .csr → .cer      証明書依頼要求ファイルを指定して、証明書ダウンロード
 D. .cer →.pemㅤㅤㅤㅤ 証明書を鍵なしコンテナに入れる
 E. .key & .pem → .p12  秘密鍵&鍵なしコンテナにパスワードを指定して、暗号化鍵ありコンテナ作成。
              セキュアなコンテナ証明書ファイルが作成されたこと。
              Appleサーバーとセキュアの通信を確保するためのインストール。

④Apple Developer Program へ、アプリケーションID、iPhoneのデバイス情報を登録

Apple Developer Program で、プロビジョニングプロファイルを作成。

⑥今度は、AppleからのApp Store&アドホック配布証明書を取得します。
 こちらの証明書も、上記③-2.と同様の手順で作成ダウンロードします。
 PCがAppleサーバとのセキュアな通信を確保するための、証明書インストールを行います。
 
⑦App Store Connect の設定(Apple Developer Program にライセンス登録済みで可能)
 Apple Developer Program アカウントページ内に、App Store Connect へのリンクがあります。
 主に行うことは、下記の通り。
  ・App Store に App情報の新規登録(配布ではなく、情報登録のみ)
  App Store Connect APIキー(.p8)の作成 Application Programming Interface)
   App Store Connect / Apple Developer Program との識別・認証に用いられるキーで、
   「 Visual Studio の Apple Developer アカウント設定」でも通信認証に使用します。
   ※通常はサービス(「内部開発」「テスト」「App売上レポートダウンロード」等)ごとに
    APIが用意されており、「サービス」と「チーム」としても呼んでいるようですね。
    会話にすると「あなたの持っているAPIは、内部開発サービスのチームのものね」という感じ。

⑧Visual Studio へ Apple Developer アカウントの設定。
 1.Apple Developer アカウントを、Visual Studio に設定して
   Appleサーバーと通信できるようにする。
    ツール(T) > オプション(O) > Xamarin > Appleアカウント 
     App Store Connect APIキー(.p8)を指定して、Appleサーバーに接続します。

 2.上記③iOSアプリ開発証明書と④App Store&アドホック配布証明書を読み込みます。

 3.プロビジョニングプロファイル(.mobileprovision)を、PCにダウンロードします。
   Apple Developer アカウントサーバーより、上記オプション画面のダウンロードボタンで、
   PCの既定フォルダに保存して、Visual Studio と関連付けます。   
   C:\Users\ユーザ名\AppData\Local\Xamarin\iOS\Provisioning\Profiles

⑨Visual Studio のプロビジョニングプロファイルの関連付け設定
 1.バンドル識別子の設定
   アプリにバンドルIDという識別子を設定して、iOSに配置する際に
   アプリ正当性を認証できる状態にします。
   VisualStudio より、アプリ「プロジェクト」-「プロパティ」設定より、
   上記⑧-3.の既定フォルダに保存したプロビジョニングプロファイル が、
   ドロップダウンリストに表示されるようになりますので、選択してアプリと関連付けます。

 2.アプリのビルド(「ローカルデバイス」を指定)
   iPhone実機をLightningケーブルでPC接続して、「ローカルデバイス」でのビルドを行います。
   お手持ちのiPhone実機が、VisualStudioの実行ボタン「▷」配下メニューの
   「iOSローカルデバイス」→「〇〇のiPhone」で認識されるようになります。
   また、実行ビルドすることで、アプリにプロビジョニングファイルが含まれるようになります。
   
⑩iPhone実機へのインストール&アプリ起動と動作確認
 1.アプリのインストール状態の確認
 2.iOSより、デベロッパーモード=オンに設定 → iPhone再起動
 3.アプリの起動&動作確認

では、次より詳細な手順を行っていきましょう。

①Apple Developer Program への登録

早速、始めて行きましょう。
Apple Developer Programへの登録は、iOSで開発を行うためには必要です。
メンバーシップ登録料は年間 米$99ドルで、
2023年時点では日本円に換算すると\12,000~14,000 位になると思います。
支払う前に必ず$から、ご自身の使用する通貨に換算してくださいね。
実際に利用開始になるのは、登録支払い後から問題なければ、最大48時間で連絡が来ます。

 developer.apple.com/jp
 developer.apple.com/jp/develop/

どちらかのアドレスからの、ページ上部にある「アカウント」にアクセスして         
「Apple Developerにサインイン」ページの 
     Apple IDをお持ちでないですか? 作成はこちら >
より必要情報を入力します。


登録までに48時間時間がありますので、下記手順を進めておくのも良いでしょう。

②各種ツールのインストール

 ・Visual Studio 2022 Community のダウンロード&インストール
   Visual Studio 2022 Professional などの上位エディションは有料ではあるので
   開発に慣れるまでは、無料の Visual Studio 2022 Community を使用しても良いでしょう。
   Communityは無料とは言っても、開発する分には Professional と同等の機能を有しています。
   ※Professional との違いは、アプリ配布時のライセンスなどが違ったりしますので、
    いずれどこかでしっかり確認しておきましょう。
  
   Visual Studio 2022 Community のダウンロード
   
   インストール方法はこちらのサイトが参考になります。
   参考:【C#】Visual Studio 2022をインストールする手順を紹介

 ・OpenSSL(Windows用)
  Appleのアプリ開発の際に「開発証明書」を得るために、
  「秘密鍵」と「公開鍵」というもの使用して「証明書」をAppleへ要求するのですが、
  通常はMacPCからだと画面操作で、すべて作成してくれます。
   参考:MacPCでのイメージ

  但し、今回は前述通りMacPCを持っていない方向けなので、
  代わりにOpenSSLを使用して「秘密鍵」「公開鍵」を作成しましょう。
  
   OpenSSL のダウンロード
   「Win32/Win64 OpenSSL Installer for Windows」のダウンロードページ

   インストール方法はこちらのサイトが参考になります。
   参考:WindowsにOpenSSLをインストールして証明書を取り扱う(基本編) – @IT

  私は、Win64 OpenSSL v1.1.1〇.exe(もしくは.msi) をインストールしました。※ライトではない方 

-1.AppleからのiOSアプリ開発証明書を取得のため
    OpenSSLコマンドを使用して下記を作成する。
    ・秘密鍵(.key) ・証明書署名要求(.csr)

最初に、そもそも秘密鍵と公開鍵とは何かを確認しておきましょう。
 参考:公開鍵・秘密鍵とは?暗号化の仕組みをわかりやすく解説

No.拡張子名前内容
1.key秘密鍵秘密鍵とは、対になる公開鍵で暗号化された通信を復号するために
使うキーのことです。特定のユーザーのみが持つため、
公開鍵で暗号化された通信は、 第三者に読み取られる心配がありません。
エンコーディングは DERあるいは PEMです。
2.csr証明書署名要求証明書の発行依頼に使用する。
秘密鍵と一緒に、メールアドレス、発行者名(CN)、国コード(C)などの
コモンネームなどの情報を指定したもの。
3.cer証明書サーバーの証明書です。 通常、ドメインの認証局によって受信されます。
証明書は簡単に言うと、公開鍵であり、誰の公開鍵かを証明したものです。
公開鍵とは、通信を暗号化するときに使うキーのことです。
公開鍵暗号方式で使われる2種類の鍵のひとつで、
公式なもので、誰でも利用できるように広く公開されています。
秘密鍵と対となることで、高い秘匿性を実現します。

では、OpenSSLがインストールできましたら、
証明書を得るために「秘密鍵」と「公開鍵」を作成していきましょう。

OpenSSLは、コマンドを入力して使用しますので
「Windowsスタートメニュー > Windows PowerShell > Windows PowerShell」
を起動しましょう。

Windows Power Shell 起動


OpenSSLコマンドは「C:\Program Files\OpenSSL-Win64\bin\openssl.exe」を使用して実行します。
※また、コマンドラインに「openssl」と指定するだけで openssl.exe が使用できるように、
 環境パスに、openssl.exe が存在する「bin」フォルダを設定しておくとよいでしょう。
(OpenSSLインストール時に、参考サイトより環境パスを設定していれば問題ありません。)

Windows PowerShellのコマンドで、環境パスに、一時的に設定することも可能です。

さて、これからAppleから証明書を得るために、以下の情報で作成するものとします。

秘密鍵(*.key)の作成
 RSA, 2048bit で作成します。

▼証明書署名要求(*.csr)の作成
 秘密鍵、メールアドレス、発行者名(CN)、国コード(C)を指定して作成します。

-2.Apple Developer Program から
    証明書署名要求(.csr)を使用して
    iOSアプリ開発証明書をダウンロード。
    ・証明書(.cer) … 公開鍵として使用されます。

▼iOSアプリ証明書(*.cer)のダウンロード
Apple Developerにサインインし、Certificates のページにアクセスします。 
 
1.「Certificate」の+ボタンを押す


2.「iOS App Development」を選択し、Continue。


3.「Choose File」に証明書署名要求ファイル「TestApp.iOS.csr」を選択し、Continue。


4.「Download」ボタンをを押し、ファイルを TestApp.iOS.cer という名前で保存する。


5.一覧に戻ると、作成ダウンロードしたiOSアプリ開発証明書が表示されていますので、
  以後、一覧から選択して、管理できるようになります。

-3.証明書(.cer)を、セキュアな暗号化した箱にいれるため、
    先ず、・暗号化なしの、証明書の箱(.pem)を作成
    .pemにパスワードと、秘密鍵(.key)を付けて 
       ・暗号化ありの、証明書の箱(.p12)を作成 

秘密鍵(.key)と証明書(.cer)と対となることで秘匿性が高いことがわかりましたが、
通信がセキュアになりましたが、証明書ファイルを保管しておく場合も、セキュアが良いでしょう。
証明書ファイルを、暗号化パスワードのかけた箱を作成して、厳重に保管しておきましょう。

No拡張子名前内容
4.pemプライバシー強化メール
Privacy Enhanced Mail
エンコーディングコンテナ
PEM形式のコンテナは、カギのかかっていない入れ物です。
証明書や鍵を入れることのできる入れ物のようなもので
テキストファイルを開くと、”CERTIFICATE”があることがわかります。
ファイルの先頭に — BEGIN… という行があるのをみたら
「PEMだな」と思えば良いと思います。

opensslコマンドのデフォルトのエンコーディングなので、
何も指定せずに鍵を生成すると、PEM形式ファイルが作られます。
5.p12PKCS #12
個人情報交換ファイル
フォーマット
PKCS12形式のコンテナは、カギのかかった入れ物です。
秘密鍵(.key)、コンテナ(箱)に入れた証明書(.pem)と、
パスワードを指定して、暗号化形式で作成します。

p12はPublic-Key Cryptography Standards(略称PKCS)の
12番目の仕様であり、パスワードに基づく鍵(暗号)により
保護された秘密鍵と、それに関連する公開鍵証明書を
保管するために一般に利用されるファイルフォーマットである。
p12やpfx(Personal Information Exchange)と呼ばれたりする。

▼暗号化なしの、証明書の箱(.pem)を作成


▼暗号化ありの、証明書の箱(.p12)を作成
 コマンド実行すると、パスワードを入力しますので、必ずこちらも保管して控えておきましょう。

これで「箱(コンテナ)に、秘密鍵と公開鍵をセットにした証明書(*.p12)」を作成できました。

-4.PCに 証明書(.p12) をインストール。

お使いのPCが、Appleサーバーとのセキュアな通信を確保するため、
証明書(*.p12)のインストール(インポート)を行います。
証明書に含まれていたAppleからの公開鍵を使用して、通信されるようになります。

PCに保存した「TestApp.iOS.p12」ファイルを、ダブルクリックすると
インポートウィザードが表示されますので、順に実行していきます。


ファイル名(F);に「TestApp.iOS.p12」が指定されていることを確認して「次へ(N)」を実行します。


設定した、秘密キーのパスワードを入力する必要があります。入力後「次へ(N)」ボタンを指定します。
※インポートオプションは、私は「すべての拡張プロパティを含める(A)」を指定しました。


「証明書ストア」
 Windowsが自動的に証明書を選択させるか、証明書の場所を指定することができます。
 私は、これを選びました。
  ⦿証明書の種類に基づいて、自動的に証明書ストアを選択する。


証明書のインポートウィザードの完了画面。
「正しくインポートされました」となっていれば、PCに設定できました。
※ファイル名には、.p12ファイルが表示されています。
※PFX(Personal Information Exchange)は、個人情報交換ファイルフォーマットの意。

④Apple Developer Program で、
 アプリケーションID、iPhoneのデバイス情報を登録

▼Apple Developer Program の Identifiers のページで、AppIDを登録します。
識別子(Identifiers)のボタンをクリックして、AppIDを登録します。

アプリ ID の使用を開始する
 登録すると、アプリ、アプリ拡張機能、または App Clip が利用可能なサービスにアクセスし、
 プロビジョニングプロファイルでアプリを識別できるようになります。
  「アプリIDを登録する」

新しい識別子を登録するページでは、「AppID」を選択します。


タイプの選択は「アプリ」を選択します。


アプリIDを登録するページでは、「アプリの説明」と「バンドルID」を設定します。
 ●アプリの説明:例)TestApp for Mobile
  私は識別しやすいタイトル名を設定しました。 

 ●バンドルID:例)com.test_taro.TestApp  
  (com.ドメイン名.アプリ名)形式のスタイルでの入力を推奨しているようです。
  そして、これは重要な設定です。
  ・一意なユニークな識別できるアプリバンドルIDとなるように設定しましょう。
  ・後で設定する Visual Studio の「プロジェクト名 > Platform > iOS > Info.plist」に
   設定する「バンドル識別子」とも一致させる必要があります。
   設定ミスをすると、アプリ配布時に認証できない原因になります。
   ※Visual Studio の画像は、今は参考まで。
   
 ●アプリIDプレフィックス(App ID Prefix) 
  これは入力ではなく、このページを表示したときに自動で番号が設定されます。
  英数字の大文字10文字で設定されます。これも後で時々出てくるので控えておきましょう。


入力したアプリID情報で登録してもよいかの確認画面になります。

Apple Developer Program
Certificates, Indentifiers & Profiles
証明書、識別子、プロファイル  アプリIDを確認する
・プラットホーム
 iOS、他
・アプリIDプレフィックス
 英数字大文字10桁(チームID)
・説明:TestApp for Mobile
・バンドルID  アプリサービス
「Register」 ボタン


登録する(Register)のボタンで登録後に、 Identifiers 一覧に表示され管理できるようになります。


▼Apple Developer Program の Devicesのページで、アプリ利用するiPhoneを登録します。
デバイス(Device)のボタンをクリックして、iPhoneを登録します。


新しいデバイスを登録するページより、下記情報を入力します。今回は1つのiPhoneを登録しました。
また、登録には iPhoneの UUID が必要です。
iPhoneの場合はUUIDを調べる方法はいくつかあるようです。私は、iTunesより確認しました。
 参考:iPhoneやiPadのUDIDを調べる方法 全10種 - (8) iTunes (Windows)など

 ●プラットフォーム:
  iPhoneがターゲットプラットフォームなので、iOSが含まれていることを確認
 ●装置名:
  私は「〇〇 の iPhone」を入力。※iTune参照
 ●デバイスID(UUID):
  iTune>概要>電話番号のした項目をクリックすると、UUIDの項目が出てくると思います。
  これをコピーして入力しました。


これで、登録した iPhone は、
アプリ開発用とインストール用のプロビジョニングプロファイル(後述で作成します)に
含めることができるようになりました。

Apple Developer Program で
 プロビジョニングプロファイル作成

プロビジョニングプロファイルは、証明書, AppID, Deviceのセットが記述されたファイルです。
これがアプリケーションパッケージに埋め込まれることにより、
「記述されたDevice」で「記述された証明書がインストールされた端末」にのみ、
「AppIDが一致するアプリケーション」がインストール可能になります。

Apple Developer Program の Profilesのページで、プロビジョニングプロファイルの作成
プロフィール(Profile)のボタンをクリックして、iPhoneを登録します。


新しいプロビジョニングプロファイルを登録するページより
「iOS App Development(iOSアプリ開発)」を選択して、
前述で登録した「証明書」「AppID」「Device」を選択してプロビジョニングプロファイルを作成します。


プロビジョニングプロファイルの生成では、下記を選択します。
 ●アプリIDを選択してください:
  「AppIDの登録」より、前述で作成したアプリIDが表示されます。
  「説明(アプリIDプレフィックス(App ID Prefix).バンドルID)」

 ●プロビジョニングプロファイルの構成:
  アプリの起動時に ppq.apple.com に接続されるとのことで(おそらく何らかの認証?)
  インターネット接続することには、筆者は何も不都合ないため、
  オフラインサポートは「いいえ」を選択。


証明書の選択をします。前述で作成した「iOS開発証明書」を選択できます。


デバイスの選択をします。前述で登録した iPhone を選択できます。


プロビジョニングプロファイルに、名前を付けて生成します。
 ●プロビジョニングプロファイル名:TestApp


生成したプロビジョニングプロファイルを、「ダウンロード(DownLoad)」ボタンより保存します。
先程設定したプロビジョニングプロファイル名の後ろに、
拡張子(.mobileprovision) を付けたファイル名でダウンロードされます。
  TestApp.mobileprovision

⑥Apple Developer Program から
 App Store&アドホック配布証明書を取得
 PCにインストールします。

今度は「iOS開発証明書」ではなく「App Store & アドホック配布証明書」を取得します。 
文字通り、配布するための証明書になります。
※「配布証明書」は、後述のVisual Studio オプション設定「Apple Developer アカウント」で読み込みます。
※上記③-2.と同様手順で作成ダウンロードして、証明書のインストールを行います。

App Store & アドホック配布証明書(*.cer)のダウンロード
Apple Developerにサインインし、Certificates のページにアクセスします。 
 
1.「Certificate」の+ボタンを押す


2.「iOS Distribution(App Store and Ad Hoc)」を選択し、Continue。
  ※iOSディストリビューション(App Store および Ad Hoc)


3.「Choose File」に証明書署名要求ファイル「TestApp.iOS.csr」を選択し、Continue。


4.「Download」ボタンをを押し、ファイルを「ios_distribution.cer」という名前で保存されます。


5.一覧に戻ると、作成ダウンロードした App Store & アドホック配布証明書 が表示されています。
  以後、一覧から選択して、削除やダウンロードができるようになります。

6.App Store & アドホック配布証明書 「ios_distribution.cer」をダブルクリックして
  「証明書のインストール(I)」ボタンより、PCにインストールを行います。

⑦App Store Connect の設定
(Apple Developer Program にライセンス登録済みで可能)

Apple Developer Program アカウントページ内に、App Store Connect へのリンクがあります。

App Store Connect では、App Store用に開発したAppを管理します。
 ・Appステータスの表示
 ・TestFlightベータ版テストの管理
 ・App Store提出物の管理
 ・Appのパフォーマンスと
 ・売上の監視
 ・ユーザによるレビューの投稿などの主要イベントの通知を受け取り対応
などを行うことができます。

とはいえ、今回の手順ですることは、下記の通り。
 ・App Store に App情報の新規登録(配布ではなく、情報登録のみ)
 App Store Connect APIキー(.p8)の作成 Application Programming Interface)
  ※このAPIキーは「内部開発」「テスト」「App売上レポートダウンロード」でも使用されます。
なぜ、App Storeにまだ配布しないのに、App Store Connect への登録が必要かというと、
Visual Studio へ Apple Developer アカウント設定時に、識別・認証にAPIキーが必要になるからです。

App Store に App情報の新規登録
App Store Connect より、「マイアプリ」を選択します。


MyApp のボタンをクリックして、App情報を登録します。


App Store Connect にも登録後、「アプリ」より、アプリ情報が管理できるようになります。
TestAppのアプリ名と、「 iOS 1.0 提出準備中」のステータス状態が表示されています。
このステータスは、App Storeでのアプリ公開申請の状況に応じて、更新されるようです。
  → 提出準備中
    → 審査待ち
      → 審査中 or 却下済み
        → 配信準備完了
※iOS 1.0 は初期バージョンのようです。


アプリ名クリック後、「App Store」タブのアプリ管理画面が表示されます。
App Storeでアプリ配布するときに、お世話になると思います。


▼App Store Connect APIキー(.p8)の作成 (Application Programming Interface)
App Store Connect より、「ユーザーとアクセス」を選択します。


「キー」タブを選択します。キータイプ「App Store Connect API」より
「アクセス権をリクエスト」をクリックします。


アクセス権のリクエストが承認されると、「APIキーの生成」が行えるようになります。


「APIキーの生成」をクリックして、キーの名前を入力します。
筆者は、名前は「TestApp」、アクセスについては「Admin」を選択しました。
「生成」ボタンをクリックします。

Adminチームの二次連絡先として機能し、アカウント所有者と同じ責任の多くを担います。
管理者はすべてのアプリにアクセスできます。管理者が組織チームの一員である場合、
デフォルトで証明書、識別子、プロファイルを持っています。
App Manager価格設定、App Store 情報、アプリの開発と配信など、アプリのあらゆる側面を管理します。
Developerアプリの開発と配信を管理します。
Financeレポートのダウンロードや納税フォームのアップロードなど、財務情報を管理します。
支払いと財務レポート、売上とトレンド、アプリ分析のすべてのアプリを表示できます。
Salesアプリの販売、ダウンロード、その他の分析を分析します。

生成した「APIキー」が一覧に表示されます。
また、「Issuer ID(発行者ID)」というIDも一緒に表示されています。
言葉の通り、認証トークンを作成した発行者を識別するためのものです。

どちらも、 Visual Studio へ Apple Developer アカウント設定時に、識別・認証に必要になるので、
「Issuer ID(発行者ID)」「キーID」をコピーボタンで、一緒に控えておきましょう。


ダウンロードボタンで、App Store Connect APIキー(.p8)をPCに保存することができます。
【注意】この APIキー(.p8)は、一度しかダウンロードできませんので、紛失しないようにしましょう。

⑧.Visual Studio へ Apple Developer アカウントの設定

前述の手順どおり、Visual Studio のインストールはできているものとします。
もし、アプリの新規プロジェクト作成していない方がいましたら、
下記サイト様が参考になると思います。
  参考:【.NET MAUI】開発環境を構築してアプリ開発をはじめる(C#)

すでにアプリプロジェクトを作成済みの方は、スキップしていただいてもかまいません。
新規プロジェクト作成は、筆者も簡単にスクリーンショットを置いておきます。
Visual Studio 2022起動より、下記順に実施してプロジェクトを作成します。


さて、ソリューションとプロジェクト作成が出来ましたら、本題に戻りましょう。

▼Visual Studio に、Apple Developer アカウントを設定しましょう。
 Visual Studio を起動して
 ツール(T) > オプション(O) > Xamarin > Appleアカウント の順で進みます。


オプション画面が表示されますので、下記順で進めます。
 Xamarin > Apple アカウント > 追加ボタン > 個別のアカウント
※Xamarin なのは、.Net Mauiの前衛だからでしょうかね?


今回は、「個別のアカウント」の追加で進めます。


※余談になりますが、、
 EnterPrise アカウントは、Apple Developer Enterprise Program という上位ライセンスであり、
  ・大規模組織向けのアプリ配布
 などで利用されてきましたが、近年では、配布範囲の管理が難しく審査も厳しくなってきたとの事。

 組織向けアプリ配布は、より組織外部に非公開かつ安全に配信することができるために
 Apple公式の「カスタムApp配信」へと運用移行しているようです

 併せて「Apple Business Manager(ABM)」と「モバイルデバイス管理(MDM)」も
 どのようなものか見ておくのもよいと思います。
 ※筆者もあとで勉強します(*’▽’)

 組織向けアプリ配布は「カスタムApp配信」の方法へ移行していき、
 このオプションでどうしても対応しきれない場合のみ
 Apple Developer Enterprise Program を使用していくことになりそうですね。


さて、個別のアカウントより、下記入力して追加します。
 ・名前       上記⑦で入力したAPIキーの名前
 ・発行者ID     上記⑦でコピー控えた  Issuer ID
 ・キーID      上記⑦でコピー控えた  キーID  ※英数大文字8桁コード
 ・秘密キーのパス 「…」より、上記⑦で作成・保存した App Store Connect APIキー(.p8)を指定します。
追加ボタン押下より、
すべての情報が一致していれば Apple Developer アカウントが Visual Studio へ設定されます。


Apple Developer アカウントが個別のアカウントとして、追加されました。


チーム名よりアカウントを選択して、「詳細の表示…」ボタンをクリックしましょう。
Apple Developer – Cartificates に登録されている情報と読み込まれます。
また、
Apple Developer – Profile に登録されているプロビジョニングプロファイルも表示されていますね。

iOS Distribution.cer が「キーチェーン内にありません」は、
.p12ファイルではないからかもしれません。
これも、暗号化なし箱(.pem) → 暗号化あり箱(.p12)の作成をした方が良いかもしれませんね。
※「証明書のインポート」ボタンを押すと、.p12ファイルが選択できますので
 筆者は必要があれば、後ほど試してみようと思います。

「証明書の作成▼」>「iOS開発」ボタンを選択して、
API経由のiOS開発証明書(Apple Development Created via API)を作成しましょう。


また、プロビジョニングプロファイルも表示されていると思いますので、
「すべてのプロファイルをダウンロード」より、PCにダウンロードしましょう。
ここからダウンロードするのが、結構【重要】です。

というのも、
プロビジョニングプロファイルを保存するための、既定フォルダがあるためです。
ダウンロードボタン押下で、下記フォルダに保存されます。
 → C:\Users\{%ユーザ名%}\AppData\Local\Xamarin\iOS\Provisioning\Profiles
   ※ここに保存しないと、Visual Studio アプリのプロジェクトプロパティで
    プロビジョニングプロファイルを正しく読み込んでくれません。


この \Provisioning フォルダ配下には \Profiles フォルダ等もあり、
証明書(.p12)も保存されていたりします。
どんなファイルが保存されているか、参考程度に確認しておくのもよいかもしれませんね。

⑨Visual Studio のプロビジョニングプロファイルの関連付け設定

1.対象アプリの「プロジェクト」-「プロパティ」設定より、「iOS > バンドルの署名」を選択。
  「スキーム」を「手動プロビジョニング」に設定すると、
  「プロビジョニングプロファイル」欄が表示されます。ドロップダウンリストには
  上記⑧で既定フォルダにダウンロードした プロビジョニングプロファイル( .mobileprovision )が、
  表示されるようになりますので、選択してアプリへ関連付けます。


2.次に「プロジェクト > Platforms > iOS」より「info.plist」を設定します。
  ここにも、バンドル識別子の項目がありますので設定します。
   バンドル識別子:com.test_taro.TestApp
  ※これでiOSに配置する際に、正当性を認証できる状態になります。


3.iPhoneを、Lightningケーブル(もしくは、USB-Cケーブル)でPC接続して、
  VisualStudioで実行ボタン「▷」より、アプリをビルドします。

  「iOSローカルデバイス」を指定します。iPhoneを接続してホーム画面を起動すると
  「iOSローカルデバイス」→「〇〇のiPhone」の名称表示に変わります。


Visual Studio の「出力」ウィンドウより、ビルド正常終了ログは下記になります。ご参考まで。

ログより、iPhone に正常に展開されたことが確認できると思います。
iPhone実機にアプリが配置(=デプロイ)されているか確認してみたくなりますが、
一旦、VisualStudio側のビルド後の流れを、先に確認しましょう。

ビルド完了した後は、続いて「ホットリロード」の初期化と接続が実施されます。
ホットリロードとは…
 アプリが起動している状態でも、ビルドし直さなくても、ホットリロードボタンを実行することで
 アプリに修正内容が即更新される機能を言います。iPhone実機でも使用できるということですね。


また[ローカル デバイス]選択時は、ビルド中に「ホット リスタートのセットアップ」が表示されます。
「ホットリロード」と「ホットリスタート」似たような言葉が出てきたので、違いを確認しましょう。
ホットリスタートとは…
 Mac ビルド ホストが必要とせずに、Visual Studio から 64 ビットローカル iOS デバイスに
 .NET MAUI アプリをすばやくデプロイできる機能を言います。


実際には「ローカルiOSデバイスへの配置をセットアップ」ということで
「ホットリスタート機能」&「プロビジョニングの設定」を併せて行う
ウィザード画面と思えばよいと思います。既に前述でプロビジョニング設定をしていますが、
当画面は、上記⑨-1のバンドルの署名より、
 【「手動プロビジョニング」の設定を間違っていた時】
 【「自動プロビジョニング」で未設定状態で、初回ビルドした時】にも起動するようです。


チームを選択…()」は、ドロップダウンリストに下記の形式で表示されます。
 Apple Developer Program で登録した Apple ID 氏名App Store Connect API – キーID
チームとは、前述⑦「App Store Connect API 」を選択すると思えばよいでしょう。


APIキーを選択すると、自動プロビジョニングを開始してくれます。
※当手順では、前述⑧の「iOS開発」の段階なので
 Visual StudioへのApple Develoerアカウントの「証明書の作成▼」より
 作成した「API経由のiOS開発証明書(Apple Development Created via API)」と
 プロビジョニングプロファイルとの関連付けを自動で行ってくれているようですね。

Visual Studio のバージョンアップデートで、
プロビジョニングの関連付けも、どんどん、わかりやすくなってきているようですね。
自動プロビジョニング/手動プロビジョニング、用途に合わせて使用すると良いと思います。

さて、上記ビルド&ホットリスタートの設置が正常終了したので、下記メッセージが表示されます。
これは、iPhone実機にアプリが配置された後に、
ホーム画面よりアプリをタップ起動するまでの待機メッセージです。

⑩iPhone実機へのインストール&アプリ起動と動作確認

さあ、ようやくここまで来ました。早速、iPhone実機よりアプリの状態を確認していきましょう。

1.iPhone実機のインストール状態を確認します。
ホーム画面を起動すると、「TestApp」というアプリがインストールされていますね。
ただ、アプリアイコンをタップ起動してみると、下記メッセージが表示されます。
App Connect API が iOS開発中アプリは、iPhoneを「デベロッパーモード」にする必要があります。


2.デベロッパーモード=オンに設定 → iPhone再起動
iPhoneの ホーム画面 > 設定 > プライバシーとセキュリティ と進み、
最下部に「デベロッパーモード」がありますので「ON」に設定して再起動します。
アップルマークが起動したのち、デベロッパモードをオンにしてよいか
メッセージが表示されますので「オンにする」を選択しましょう。

※後述のアプリ動作確認が一通り済んだら、デベロッパモード=オフにしておきましょう。

これで、アプリを動作確認する準備が整いました。

3.アプリの起動&動作確認
ホーム画面のアプリアイコンをタップして、アプリ起動してみましょう。
例)スプラッシュスクリーンのロゴ表示後に、
  アプリのメイン画面「Hello, World!」が起動しましたね。


Visual Studio より、ソースを修正してみましょう。
ホットリロードを使用して、修正内容がリアルタイムにアプリ更新されるか確認しましょう。


ホットリロードより、修正内容がリアルタイムで更新されました。


iPhone実機での動作確認が出来ましたね (*’▽’)ノ
これで、ソース修正をしながら、アプリの動きも確認していけそうですね。

 今回のまとめ

今回は、iOS開発フェーズでの、
iPhone実機へのアプリ配布手順(アドホック)をお送りいたしました。

今後も時折、こういった技術情報を発信していこうと思いますので、よろしくお願いいたします。

◆免責等
・当ページの掲載情報を利用したものに関して、直接または間接で生じた、いかなる障害・損益・損害について、
ㅤ著作者および著作者の属する団体・組織等は、すべての責任を負いません。
※各記事の内容は個人の見解であり、所属する団体・組織の公式見解ではありません。