ぽんまるスタジオ

とじまる開発手順書 ・ 第2回

手順書 とじまる

#2 Family Controls の申請と、Macを買わずに済ませた判断

前回、競合調査から「穴の少なさで勝つ」と決めました。次は技術的に成立するかの確認です。

この回の主題は、Macを買うかどうかでした。

目的

iOSでアプリをロックするには、**Screen Time API(Family Controls)**を使います。これは誰でも使える一般のAPIではなく、Appleが個別に審査して配る特権です。

確かめたかったのは2つ。

  1. 申請は何件必要で、どう出すのか
  2. 開発にMacが必要になるのか(予算5万円に対して、Macは最大3万円=60%を占める)

手順

1. 申請が「4件」必要だと確定させる

Family Controls の entitlement は、アプリ本体だけでは足りません。機能を分担する Extension それぞれにも要ります。

申請対象役割
アプリ本体設定・記録の画面
DeviceActivityMonitor時間の監視
ShieldConfigurationロック中に出る画面の見た目
ShieldActionロック画面のボタンが押されたときの挙動

合計4件。 ここを1件でも漏らすと、あとでビルドが通らなくなります。

大事なのは、bundle ID を推測で書かないことです。expo config で実際に生成される値を出力させ、実物の4件を確定させてから申請しました。

2. 「Macが要る」という情報の出どころを確かめる

使うライブラリのREADMEに、こう書かれていました。

entitlement が全 bundle ID に承認されるまでは、ローカルのXcodeビルドしかない

Xcodeが要る = Macが要る、と読めます。ここで一度、企画が止まりかけました。

ですが、よく読むと**「承認されるまでは」**と書いてあります。承認後の話ではありません。

そこでApple Developer Forumsで、EAS Build(クラウドビルド)が失敗している事例を調べました。原因はどれも次の2つでした。

  1. Extension の App ID の承認漏れ
  2. 古いプロビジョニングプロファイルのキャッシュ

1については、こちらは4件すべてを申請する手順にしてあるので起きません。2は運用で回避できます。

結論はこうなりました。

承認が下りるまで実機で何も試せないという「待ち」が発生するだけで、Macは要らない。

3. Macを買わないと決める

判断はこうです。

変更前変更後
予算リスクMacに最大3万円(予算の60%)0円
Phase 0 の待ち時間—承認が下りるまで実機検証できない。ここは飲む

MacinCloud(月額レンタル)、中古のMac mini、借りる、はすべて却下しました。不要だからです。

ただし条件付きです。entitlement が却下された場合は、話が変わります。 そのときに再検討する、として先送りしました。

4. 前提が2つ抜けていたことに気づく

ここで指摘が入りました。「ぽんまるのときは、こんな手順を踏まなかったのでは?」

調べたところ、踏んでいました。段階が違うだけでした。

ぽんまるとじまる
entitlement の申請不要(写真・カメラは申請なしで使える)必要。4件
App Store Connect にアプリを作る必要。提出直前にやった必要。申請フォームがApple IDを求めるので最初にやる
公開Webページ(プライバシー・サポート)必要必要
有料App契約・銀行・税務情報不要(無料アプリ)必要(課金する)

新しく発生するのは entitlement 申請と有料App契約の2つだけで、残りはぽんまるでもやっていた作業が前倒しになっただけでした。

「前と違う」と感じたときは、本当に新しいのか、順番が変わっただけなのかを分けると、無駄な調査が減ります。

つまずいた点

「承認された」の意味が2つあった

これが後で1回分の審査を無駄にします。

Developer Portal で App ID に Family Controls のチェックを入れられるようになった時点で、「申請は通った」と判断しました。これは開発用については正しかったのですが、配布用の承認とは別物でした。

  • 開発用(Development): 自分の実機で動かすための許可
  • 配布用(Distribution): App Store に出すための許可

このアプリは後に、「Screen Time API を使っているのに entitlement なしで提出された」という理由で審査に落ちます(詳しくは第4回)。原因の有力候補が、この配布用の承認漏れでした。

ポータルでチェックを入れられることと、配布の承認が下りていることは、別。

先に記録しておいた地雷

実装に入る前に、こういう記録を残しておきました。

EASは古いプロビジョニングプロファイルをキャッシュして使い回す。承認が下りた後にビルドして Synced capabilities: No updates と出たら、Expo側とApple側の両方の証明書・プロファイルを削除して作り直す。

これを知らずにハマると半日溶けます。調査中に見つけた地雷は、踏む前に書いておく。 あとで自分を助けます。

成果物

  • 申請すべき4件を、推測ではなく実物のbundle IDで確定
  • Macを買わないと決定(予算リスク3万円 → 0円)
  • ぽんまるとの差分が「entitlement 申請」と「有料App契約」の2つだけだと確定
  • 「開発用の承認 ≠ 配布用の承認」という、後で高くつく区別を(結果的に)記録に残せた

次回は、実装の前に競合アプリを実機で試したら、設計の前提が崩れた話です。

→ #3 実機で競合を試したら、前提が崩れた


この手順書の「実物」版

ここまでの記録は物語として書いています。実際に使ったファイルそのものは、有料記事にまとめました。

  • 審査に通った設定ファイルの全文(package.json / app.json / eas.json / ストア文言)
  • 審査メモの全文と、却下への返信文の型
  • リジェクト4回の全記録(何が届いて、本当の原因は何で、どう直したか)
  • つまずき67件の逆引き表(症状 → 原因 → 対処)
  • 提出前チェックリスト

稼ぎ方は書いていません。 2026年9月8日時点のダウンロードは、道の駅ぽんまるが公開26日で36件、とじまるが6日で7件です。売れる方法は、まだ分かっていません。

→ Windows1台・コード0行でiOSアプリを2本App Storeに出した全記録|審査4回リジェクトの原文と、通った設定ファイル(3,980円・Brain)

同じ記事を note でも同じ価格で出しています。安い経路はありません。

#とじまる #Family Controls #Expo #EAS Build