見出し画像

❻ Playgrounds で作ったアプリを公開する

iPad 用アプリ Playgrounds 4 で作った自分のアプリを知り合いに使ってもらったり、App Store で公開する方法を説明します。
Playgrounds 4 では実際に iPad だけでアプリを作ることができますが、説明や資料が少なく、開発経験者でなければなかなか使いこなすことができないのが現状です。
【2022年10月13日 【ためしにアップロードしてみよう】、「最初のアプリアップロード」を追加しました】

この記事を含む『Playgroundsでアプリデビュー』マガジンでは、アプリ公開に不可欠なノウハウをお伝えします。

この記事では Playgrounds 4 アプリと同じく iOS 15.2 以降の環境を前提にしています。

マガジンは複数の有料記事をリーズナブルに読めます。
『Playgroundsでアプリデビュー』マガジンで 6 つの有料記事が読めます。

Playgroundsでアプリデビュー』マガジンの構成 ➡️このnote
 ⓪ iPadでアプリを作ろう【無料記事】
 ❶ App Store からアプリをリリースする準備
 ❷ PlaygroundsでApp教材を動かす
 ❸ Playgrounds App教材のすべて前編
 ❹ Playgrounds App教材のすべて後編
 ❺ Playgournds でアプリの作り方
➡️❻ Playgrounds で作ったアプリを公開する

記事構成は予告なく変更する場合があります

iPadOS 用 Playgrounds アプリが2月1日 4.0.1にアップデートされました(変更点非公表です)
この記事では『Playgrounds 4』と表記します。
Mac用の Playgrounds アプリはアップデートはありません。

アプリの正式名称は『Swift Playgrounds』ですが、この記事ではホーム画面上の名称である『Playgrounds』と表記しています。





🟩 1  アプリの公開と配布

ここでの公開はもちろん App Store での公開も含みますが、もうひとつ TestFlightテストフライト による配布を含みます。
❶App Storeからアプリをリリースする準備」で説明したように、TestFlight は最も手軽に実際のデバイスにアプリをインストールする方法です。

Xcode ではほかにもデバイスにアプリをインストールする手段がありますが、ここでは Playgrounds に限定して説明します。

iPad では App Store Connect アプリが利用できます。
ここでは Safari で App Store Connect にログインする方法を説明します。
App Store Connect アプリについては触れません。

App Store Connect は ASC と省略される場合があるかもしれません。


🟢 1.1 公開・配布までのステップ

この記事で解説するステップは 1︎⃣ 以降です:
0︎⃣ Playgrounds 4 でアプリを開発
1︎⃣ Playgrounds 4 にデベロッパー登録を済ませた Apple ID を入力
2︎⃣ Playgrounds 4 でアプリをアップロード
3︎⃣ TestFlight でデバイスにインストール(内部テスト)
4︎⃣ 配布用にTestFlightを利用(外部テスト)
5︎⃣ テスト結果による改善
6︎⃣ App Sotre で公開

実際にはプロトタイプを開発し内部テストで基本的な機能を確認し、ある程度機能を実装し終わるまでは内部テストのサイクルを繰り返します。

外部テストでは想定外の問題が発覚することもあります。
開発中のアプリを使うことで、より魅力的なアイディアがひらめいたりすることもあります。

万全を期して App Store で配布しましょう。

TestFlight の概要は「TestFlightでベータ版テストが簡単に」で確認できます。


🟢 1.2 Playgrounds の公式資料 ヘルプ

まだアプリ作りに関する公式資料は残念ながらほとんどありません。

Swift Playgrounds サポート


Swift Playgroundsユーザガイド(ヘルプ)


Swift Playgrounds(ドキュメント)(英文)

ブック形式のPlaygrounds ファイルに関するドキュメントが中心です。

最新の Xcode もヘルプの更新が止まっていて、新機能の説明はドキュメントがリリースされています。
Playgrounds もアプリのアップロードなどのドキュメントが登場するかもしれません。


🟩 2  必要な準備

Playgrounds 4 でアプリを作り、その中で実行はとても手軽です。
一方作ったアプリを配布しようとすると、いろいろな準備が必要です。


🟢 2.1 デベロッパー登録

Apple Developer Program の登録が必要です。
Apple Developer Enterprise Program ではありません。


2.1.1 年会費が必要

Apple Developer Program に参加するには年会費が必要です。
毎月に平均すると千円ほどですが、アプリの販売予定がない場合は安い出費ではありません。
TestFlight が利用でき、リリース前の開発ツールもダウンロードできます。
コードレベルのサポートも受けることができます。

学生など年会費が免除される場合があります。「❶App Storeからアプリをリリースする準備」の「🟩5.2 Apple Developer Program メンバーシップ登録料の免除」を参照してください。


🟢 2.2 チームの管理

デベロッパー登録後に必要ならチームのメンバーを登録します。
チームの管理は企業など組織で開発する場合に必要な作業です。

個人開発の場合は特にメンバーの追加は必要ありません。
(自分自身の別メールアドレスを開発者などで登録することはできます)

セキュリティの問題が発生するので無闇に招待するべきではありません
あなたのアカウントでウイルスやトロイの木馬付きアプリをばら撒かれたり、売り上げ振込先を勝手に別の銀行口座に変更される危険があります。
最悪デベロッパー登録アカウントを乗っ取られる可能性もあります。
招待する場合は役割の決定に十分注意するべきです。

日本語の「デベロッパアカウントヘルプ」を参照してください。

ただし Playgrounds 4 でアプリを開発しアップロードする場合は「証明書を作成する」「鍵を管理する」「デバイスを登録する」は必要ありません
自動で作成されるはずです。(私は既に作成し利用しています)
必要はありませんが内容は把握しておくと良いでしょう。


🟢 2.3 App Store Connect の設定を済ませる

次の日本語資料で App Store Connect の概要を把握しておいてください。

App Store Connect のワークフロー

App Store Connect へのサインイン


🟢 2.4 実機での動作確認(TestFlight を使います)

App Store にアップロードする前に、アプリとしての動作確認が必要です。
動作確認は実際のデバイスで行なってください。
外部テスト前にも実際のデバイスでのテストは欠かせません。
デバイスで実行しないと発生しない問題(不具合)もあります。

TestFlight の内部テストを使うのが手軽です。
(Xcode の場合はデバイスを物理的に接続して行うことができます)
TestFlight で内部テストのためにアップロードが必要ですが、この段階では気軽に操作しても大丈夫です。
アップロードの練習としてやってみてください。


🟢 2.5 App Store Connect を使う

TestFlight による配布の場合も App Store Connect にアップロードし、必要な設定をしなければなりません。
アップロードまでは Playgrounds 4 で可能ですが、App Store Connect にログインしての操作は不可欠です。


2.5.1 必要なら自分をメンバーに追加

内部テスト用に普段使っているメールアドレス※を追加するのがおすすめです。
※テストするデバイスのメールで使っているアドレスが確実です。


2.5.2 App Store Connect ヘルプ

App Store Connect は必須の環境なので確実な使いこなしが重要です。
App Store Connect ヘルプ」を参照してください。
このヘルプは日本語です。

⚠️App Store Connect の web は表示文字サイズとウインドウ幅によりレイアウトと操作が若干変わる部分があります。

TestFlight ベータ版テストの概要


🟩 3  TestFlightについて

TestFlight は開発中アプリの「テスト」を行うためのシステムとツール(アプリ)です。


🟢 3.1 TestFlight の構成


3.1.1 開発者とテスター

開発者は App Store Connect にログインし、アプリ別に TestFlight の設定を行います。
開発者はテスターを招待します。

招待されたテスターは TestFlight アプリ(Apple製・無料)をインストールします。
TestFlight アプリがテスト中のアプリをインストールするツールです。
テスターはいつでもテストへの参加をやめることができます


3.1.2 TestFlight の機能

テスターはテスト中のアプリ実行中にスクリーンショットを撮影することで、開発者に問題点の連絡などクラッシュ情報を含むフィードバックを送信できます。
(クラッシュ情報は問題点の発生箇所を探るために重要です)

テスターが見る画面 -1- iPad の TestFlight 画面例

TestFlight アプリの表示例

テスターが見る画面 -2- テストアプリの情報画面(iPad の TestFlight 画面)

テストアプリの情報画面

テスターが見る画面 -3- テスト開始画面

最初のアプリ起動で TestFlight の説明を表示する


3.1.3 TestFlight の資料

TestFlight でAppをテストする


🟩 4  Playgroundsでアップロード前に入力が必要な項目

公式な Playgrounds 4 のヘルプではアプリのアップロードに関する情報がほとんどないので、手探りで試してみました。
エラーなどは日本語で表示されるので、Xcode でのアップロード経験があればすぐに対応できます。


🟢 4.1 詳細で Apple ID を入力

⚠️以下の操作はネットワークに接続した状態で操作します。

その他ボタン(⋯⃝ ボタン)で「詳細」を選びサインインします(デベロッパー登録済みの Apple ID を入力します)。

詳細メニューでサインインする

サインインをタップすると Apple ID の選択が表示されます。

Apple ID の選択

デベロッパー登録した Apple ID を入力し、パスワードも入力します。
パスワード欄は Apple ID を入力すると表示されます。

Apple ID とパスワードの入力画面

正常にサインインできるとメニューはサインアウトに変わり Apple ID を表示します。
サインアウトはいつでもできます。

サインインした状態

正しく入力すると App設定画面にボタンが増えます。
サインインする前の App設定画面

サインインする前

「機能」ボタンの下に三つのボタンが追加されます。

サインインするとアップロード可能になる

この三つのボタンで、アップロードに必要な情報の設定しアップロードします。


4.1.1 チームおよびバンドルID

チームおよびバンドルIDを入力します。

チームおよびバンドルID 入力画面

チームは選択します。(この画面で入力はできません)
チームが複数表示される場合は ✳︎ 印のないもの(アプリ配布可能なチーム)を選びます。

チームを選択する


バンドルID は直接入力します。
画面のタイトルは「チームおよびバンドルID」ですが、入力欄のタイトルは「バンドル識別子」となっています。
翻訳が統一されていません。

利用可能な文字に注意してください。
バンドルID はすべての App Store アプリでユニークにしなければなりません。

バンドルIDで世の中のすべてのアプリを識別します。
IDの重複を避けるため通常は組織のドメインを利用します。
ドメインが sapporo-swift.com であれば、バンドルIDは
com.sapporo-swift.アプリ名 
とします。
App Store connect ではバンドルIDでアプリを識別します。

バージョン番号は 1.0 が設定済みです。
なおビルド番号は自動的にアップロードの度にインクリメント(1プラス)されます。


4.1.2 チームおよびバンドルID が未設定の場合

設定しないと「app Store Connectにアップロード」でエラーを表示します。

チームおよびバンドルID を設定せずアップロードした場合


🟢 4.2 カスタムアイコン


4.2.1 アプリをアップロードするにはアイコン画像が必要

アプリをアップロードするには App プロジェクトにカスタムのアイコン画像の登録が必要です。
Playgrounds 4 のプレースホルダアイコンはアップロードには使えません
カスタムアイコンの画像は 1024*1024 のサイズが必要です。
サイズの小さな画像を設定しようとすると次の警告表示が出ます。

アイコン画像に小さなイメージを指定した場合

Apple の App教材(サンプルプロジェクト)はカスタムアイコンを持っているのでアップロードの練習に最適です。


4.2.2 アプリアイコンの注意

Human Interface Guidelines の App Icon(英文)に注意点があります。

iPhone や iPad のアプリでは数種類のサイズのアイコンが必要ですが、Playgrounds 4 では大きな画像(1024 * 1024)をひとつ設定するだけです。
内部で必要なサイズに縮小されます。

Playgrounds ではカスタムアイコンのサイズも特に説明はありません。

SF Symbols のシンボルはアプリアイコンには利用できません

アプリアイコンに Apple の絵文字は利用できません
アプリのアイコンが理由でリジェクトされる場合があります。

私のアプリ「絵文字アナライザ」(無料)はアップデート時に旧アイコンが Apple の絵文字を使っていることを理由にリジェクトされました。

アップロードごとに審査があり、担当者により見解が変わる場合があります
絵文字は変形をかけていましたががリジェクトされました。
興味がありましたら「みんな🙋大好き💖絵文字の㊙️ヒミツ🕵️‍♀️」を参照してください。(新旧のアイコン画像を比較できます)


4.2.3 カスタムアイコンの作成

私はアプリのアイコンは Mac の Keynote アプリで作成しています。

まずスライドのサイズを 1024 * 1024 に設定して作成を開始します。
文字やオブジェクトをレイアウトしてアイコンデザインを作成します。
ファイル > 書き出す > イメージ... で jpeg ファイルで出力し、この画像をアイコンに利用します。

サイズは違いますが Book Store で出している電子書籍の表紙画像も、同様の方法で Keynote で作成しています。

note 記事のタイトルも Keynote で作ることが多いです。

iPad の Keynote でもイメージで保存できるのでアイコン画像の作成に使えそうです。
ほかの無料アプリでも使えるものがあるかもしれません。

iPadのKeynoteでもアイコン画像を作ることができそうです


🟢 4.3 App設定 > 機能(必要な場合)

作成したアプリがプライバシー関連のデータにアクセスする場合は、「機能」の設定で許可を求めるメッセージ(目的説明の文字列)の入力が必要です。

プライバシー関連のデータにアクセスするアプリで、「機能」が未設定の場合はアップロードに失敗する場合があります。

アップロード直後は処理中を表示しましたが、連絡先にアクセスするコードを持つアプリで、「機能」を設定していない場合その後ビルドが消える現象がありました。

「処理中」に問題が発見された場合デベロッパー登録しているアドレスにメール(英文)が届きます
メールのタイトルは『App Store Connect: Your app "アプリ名" (Apple ID: アプリID Version: 1.0 Build: 3) has one or more issues』で、アプリ名・バージョン・ビルドはアップロードしたアプリのものです。
アプリIDは App Store Connect に最初にアップロードした時点(アプリの新規追加時)で自動で割り振られます。

メールはタイトルだけでなく本文も英文で、原因と対処法が書かれています。
必要により翻訳ツールを利用してください。
参照先として Protecting the User’s Privacy(英文) がリンクされていました。
Requesting Access to Protected Resources(英文) も参照してください。


4.3.1 連絡先で許可を得る場合の例

確認のためサンプルコードに

CNContactStore.authorizationStatus(for:)

をアプリに組み込み「連絡先」データにアクセスする場合を TestFlight の内部テストで確認しました。
連絡先データはもちろん個人情報で目的説明の文字列の表示が必要です。

機能を追加」から「連絡先」を選びます。

「機能」>「機能を追加」でスクロールして「連絡先」を選ぶ

App設定 > 機能 > 連絡先 の入力画面

説明を確認する

目的説明の文字列を入力します。

アプリ利用者に説明する文字列を入力する

⚠️Playgrouns 4 のアプリは多言語対応できません
この文字列はプライマリの言語(アップロード時に指定する言語)で入力します。

追加」ボタンを押すと設定を確認できます。

機能画面で設定済みの機能を確認できる

App設定に戻ると設定状態が確認できます。

App設定でも設定済みを確認できる

Playgrounds 4 での実行では「機能」の設定は関係しません

Playgrounds 4 で実行した時は「目的説明の文字列」は使われない

この選択画面は通常のアプリの場合は、アプリをインストールした直後の起動時だけ表示します。
Playgrounds 4 の「実行」ではアプリの名称を変更しない限り再び表示されることはありません
App プロジェクトを実行時に一度だけ表示されます。

⚠️Playgrounds 4(4.0.1)では「Appのデータを削除して再起動」してももう一度表示することはできませんでした。

許可しない」「OK」の両方の挙動を確認する場合は、アプリの名称を変更して実行してください。(App設定の「名前」です)
「ContatsTest02」に変更して実行すると、また表示されます。

名称を変更するとインストール直後と同じ挙動になる


Playgrounds 4 で「実行」した場合のメッセージについて

Playgrounds で実行すると固定のメッセージを表示する

許可を求めるローカライズされた固定の文を表示します。
この表示は、たぶんソースコードで配布した場合の対策と思われます。(悪意のあるコードに個人情報を抜かれないための対策)

⚠️この表示文では「入力」のみ警告していますが、「連絡先」データは許可するだけですべての連絡先情報を読み取られます。

⚠️他人のコード(ダウンロードしたコード)を実行した時にこの表示に遭遇した場合は、コードのどこでこの表示をしているか確認し個人情報への不正アクセスがないことを確認してください。


4.3.2 目的説明の文字列の表示確認

例:連絡先を読み込むアプリの場合
「連絡先の氏名を表示します【動作確認】」の文字列を機能に設定した例です。
アプリをアップロードし TestFlihgt でインストールした後、起動時に次の表示で許可を求めます。

アプリでは機能で設定した目的説明の文字列を表示する

TestFlight でインストールした場合は、ホーム画面で「アプリを削除」してから、TestFlight で再度インストールするとこの許可をやりなおすことができます。(通常のアプリの挙動と同じです)
TestFlight でのテストではアプリ名を変更する必要はありません。


4.3.3 App設定 > 機能 で気づいたこと

「機能を追加」の全リスト

すべての機能(合成画面)

Playgrounds 4 を英語環境で実行した場合の表示

「機能を追加」の英語表示

英語では 「Photo Library」の次が「Photo Library(Add Only)」ですが、日本語表示では「フォトライブラリ」と「写真ライブラリ(追加のみ)」が別々に表示されます。
翻訳も統一されていません

また翻訳により「連絡先」が「Contacts」フレームワークに対応することに気づきにくくなる懸念があります。
英語表記も併記してくれるとよかったと思います。


🟩 5  アプリをアップロードする

アップロードするためにはデベロッパー登録した Apple ID でサインインが必要です。
サインインしていない状態では「App Store Connectにアップロード」ボタンは表示されません。



【ためしにアップロードしてみよう】

アップロードは何度でも可能です。
アップロードしたアプリの削除は App Store Connect から可能です(ヘルプの「App の削除」を参照してください)。
App Store で公開の申請をしなければ Apple による審査も受けません。

アップロードに慣れるため、Playgrounds からダウンロードできるApp教材(サンプル)などを練習としてアップロードしてみることをおすすめします。
ただしそのApp名がほかのデベロッパーが利用できなくなります。
練習でアップロードする場合はApp名を実際に使いたい名称とは明確に異なるものにしてください。



アップロードに慣れるため、Playgrounds からダウンロードできるApp教材(サンプル)などを練習としてアップロードしてみることをおすすめします。
ただしそのApp名がほかのデベロッパーが利用できなくなります。
練習でアップロードする場合はApp名を実際に使いたい名称とは明確に異なるものにしてください。

前回のサンプルをアップロードしてみましょう。
バンドルIDはサンプル用の架空ドメインです。
実際には自分のドメインを入力してください。

チームおよびバンドルIDを設定

前回のサンプルにはカスタムアイコンは設定していません。
カスタムアイコンを設定してからアップロードします。

App Store Connect にアップロード」ボタンをタップします。

アップロードボタンをタップする

アップロード画面に切り替わります。
表示されているアイコンは、アプリに設定したカスタムアイコンです。

App Store Connect に接続しこのアプリが登録済みか確認する


🟢 5.1 App Store名と優先する言語を選択

はじめてアップロードする場合は優先する言語の選択が必要です。
一度でもアップロードするとこの選択は表示されません。
App Store名と言語をひとつだけ選びます(デフォルトは英語です)

追加情報入力

ここから先は

9,592字 / 45画像
この記事のみ ¥ 500

今後も記事を増やすつもりです。 サポートしていただけると大変はげみになります。