App Store にアプリを出すには、ストアに載せるスクリーンショットが必要です。
私は今までWebのデベロッパーモードを使ってスクリーンショットを撮っていました。

今回は、シミュレーターを使う方法について説明します。
シュミレーターを使うと必要なサイズがぴったり出せるので、こちらのほうが確実です。
ただ、機種の選び方を間違えると App Store Connect に受け付けてもらえません。(画像自体の大きさ。画像の中にスマホのモックアップを入れる場合は自由)
実際に測ってみたら、思っていたのとは違う結果になりました。この記事では、その落とし穴と、撮影までの具体的な手順をまとめます。
いちばんの落とし穴:機種選びを間違えるとサイズが合いません
Xcode の上部にあるデバイス選択メニューから、実機とシミュレーターを切り替えられます。ここで「新しい機種を選べばいいだろう」と考えて iPhone 17 を選ぶと、実は失敗します。
シミュレーターで実際にスクリーンショットを撮って、ピクセル数を測ってみました。
(2026.8.18現在)
| 機種 | 撮れる画像サイズ | App Store 提出 |
|---|---|---|
| iPhone 17 | 1206 × 2622 | ❌ 規格外のサイズ |
| iPhone 17 Pro Max | 1320 × 2868 | ✅ 6.9インチ用として使える |
App Store Connect は決まった解像度しか受け付けません。iPhone 17(無印)は 6.3 インチで、提出用の規格サイズには含まれていないため弾かれます。(2026.8.18現在)
なお、いちばん大きいサイズを1種類入れておけば、Apple が小さい機種向けに縮小して表示してくれます。iPhone については 6.9 インチの1種類だけ用意すれば足ります。
要求されるサイズは Apple が時々変更します。実際にアップロードする画面で、受け付けられるサイズを確認してください。
先にやっておくこと:iPad 対応を外す
意外な手間になるのがここです。
Capacitor で作った iOS プロジェクトは、初期状態で iPhone と iPad の両対応になっています。
このままだと、App Store Connect が iPad 用のスクリーンショットも要求します。
iPad 向けの画面を作っていないなら、対応から外してしまうほうが早いです。Xcode プロジェクトの設定を確認してみてください。
TARGETED_DEVICE_FAMILY = "1,2" ← 1=iPhone, 2=iPad
これを次のように変えると iPhone 専用になり、iPad のスクリーンショットは不要になります。
TARGETED_DEVICE_FAMILY = 1
Xcode の画面からなら、TARGETS → General → Supported Destinations で iPad を削除すれば同じことができます。
あわせて、Info.plist に残っている iPad 用の設定も消しておくときれいです。
<!-- 不要になるので削除してよい -->
<key>UISupportedInterfaceOrientations~ipad</key>
ステップ 1:シミュレーターを起動する
Xcode 上部のデバイス選択メニューから iPhone 17 Pro Max を選び、▶︎ を押します。シミュレーターが立ち上がり、アプリがインストールされて起動します。
初回は起動に少し時間がかかります。
ターミナルから起動することもできます。
# 使えるシミュレーターの一覧を見る
xcrun simctl list devices available
# 名前を指定して起動する
xcrun simctl boot "iPhone 17 Pro Max"
open -a Simulator
ステップ 2:中身のあるデータを用意する
見落としがちですが、スクリーンショットの出来を大きく左右します。
シミュレーターは実機とは別の環境なので、データは空の状態から始まります。 何も登録されていない画面を撮っても、アプリの魅力は伝わりません。
データを入れる方法は2つあります。
1. シミュレーター上で手入力する
素直な方法です。数件なら、これがいちばん早いです。
2. 実機のデータを持ち込む
アプリにバックアップ機能があるなら、そちらのほうが確実です。
- 実機でバックアップファイル(JSON など)を書き出し、Mac に送る
- シミュレーターでアプリを開き、復元機能を使う
- ファイルピッカーが開くので、Mac 上のファイルを選ぶ
シミュレーターのファイルピッカーは Mac のファイルをそのまま参照できるので、実機と同じ画面を再現できます。
入れるデータのコツとして、実在の人名や病名は避けてください。「わたし」「むすめ」のような一般的な呼び名にしておくと、そのまま公開できて安全です。
ステップ 3:ステータスバーを整える
そのまま撮ると、画面上部の時刻や電池残量が中途半端な状態で写ります。審査で弾かれるわけではありませんが、複数枚並べたときにバラバラだと雑に見えます。
シミュレーターには、ステータスバーの表示を固定するコマンドが用意されています。
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryState charged \
--batteryLevel 100 \
--cellularBars 4 \
--dataNetwork wifi \
--wifiBars 3
電池の表示は3種類から選びます
–batteryState には、次の3つのいずれかを指定します。
| 値 | 表示 | 使いどころ |
|---|---|---|
charging | 充電中(雷マーク付き) | 充電中の状態を見せたいとき |
charged | 満充電(電源接続済み) | 前回お伝えした値 |
discharging | 通常(充電していない) | 今回のご希望はこれ |
スクリーンショットとしていちばん自然に見えるのは `discharging` です。「電源につながっていないけれど電池は満タン」という、ふつうに使っているときの状態になります。
9:41 は、Apple が製品発表や公式の製品写真で使い続けている定番の時刻です。特に決まりはないので、好きな時刻でも構いません。
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryState discharging \
--batteryLevel 100 \
--cellularBars 4
charged を指定すると電源接続中の表示になるため、意図せず「充電しながら使っている画面」に見えてしまうことがあります。気にならなければどちらでも構いませんが、迷ったら discharging を選んでおくと無難です。
なお --batteryState は省略してもかまいません。 その場合はシミュレーターの既定の状態が使われます。ただし毎回同じ見た目にしたいのであれば、明示しておくほうが確実です。
このコマンドは画像を保存しません
ここが誤解しやすいところなので、はっきりさせておきます。
status_bar override は、シミュレーターの画面表示を書き換えるだけのコマンドです。ファイルはどこにも保存されません。
実行しても、ターミナルには何も表示されません。成功すると無言で終わります。「何も起きなかった」と思うかもしれませんが、シミュレーターの画面を見ると、時刻が 9:41 に、電池が満充電の表示に変わっているはずです。
画像として保存するのは、次のステップの別のコマンドです。
設定できているか確認する
不安なときは、いま何が設定されているかを一覧で見られます。
xcrun simctl status_bar booted list
Current Status Bar Overrides:
=============================
Time: 9:41
DataNetworkType: 11
WiFi Mode: 3, WiFi Bars: 3
Cell Mode: 3, Cell Bars: 4
Operator Name: Carrier
Battery State: 2, Battery Level: 100, Not Charging: 0
このように出れば、きちんと効いています。
元に戻す
撮影が終わったら、元の表示に戻せます。
xcrun simctl status_bar booted clear
そのまま放置しても、シミュレーターを再起動すれば元に戻ります。
booted という書き方について
コマンドに出てくる booted は、「いま起動しているシミュレーター」を指す便利な書き方です。長い UDID を調べなくて済みます。
ただし、これには落とし穴があります。シミュレーターが2台以上起動していると、booted がどちらを指すか決まりません。
実際にこれで一度つまずきました。作業の途中で iPhone 17 と iPhone 17 Pro Max の2台が起動したままになっていて、booted を付けたコマンドが、画面で見ているのとは違うほうの端末に適用されていたのです。コマンドは成功しているのに画面が変わらないので、コマンドの書き方を疑ってしまいました。
「実行したのに反映されない」と感じたら、まず起動中のシミュレーターが1台だけか確認してください。
# 起動中のシミュレーターの UDID を調べる
xcrun simctl list devices booted
2台以上出てきた場合は、次のどちらかで対処します。
対処1:使わないほうを終了する
xcrun simctl shutdown <使わないほうのUDID>
対処2:UDID を直接指定する
xcrun simctl status_bar 1DA399E5-XXXX-XXXX-XXXX-XXXXXXXXXXXX \
override --time "9:41" --batteryState discharging
スクリーンショットを撮るコマンドも同じです。booted で意図しない端末を撮ってしまうと、サイズの違う画像ができあがってしまい、提出時に弾かれます。 撮影中は1台だけ起動しておくのが安全です。
ステップ 4:スクリーンショットを撮る(保存先の話)
撮り方は2通りあります。保存される場所が違うので、そこを押さえておいてください。
方法 1:シミュレーターの画面で ⌘ S
シミュレーターのウィンドウをクリックして選択した状態で ⌘ S を押します。
保存先はデスクトップです。 日時入りの長いファイル名で保存されます。メニューの File → Save Screen でも同じです。
手軽ですが、ファイル名が長く、たくさん撮ると管理が面倒になります。
方法 2:ターミナルから撮る
xcrun simctl io booted screenshot ~/Desktop/shot-01.png
保存先は、コマンドで指定したパスです。 上の例ならデスクトップに shot-01.png という名前で保存されます。
実行すると、保存先が表示されます。
Wrote screenshot to: /Users/あなたのユーザー名/Desktop/shot-01.png
この一行が出れば成功です。ここに書かれたパスが、実際の保存場所です。
パスを省略して xcrun simctl io booted screenshot shot-01.png のように書くと、ターミナルでいま開いているフォルダに保存されます。どこに保存されたか分からなくなりがちなので、慣れないうちは ~/Desktop/ のように保存先を明示することをおすすめします。
整理しながら撮る
フォルダを作っておくと、あとの作業が楽になります。
mkdir -p ~/Desktop/appstore-screenshots
xcrun simctl io booted screenshot ~/Desktop/appstore-screenshots/01-home.png
xcrun simctl io booted screenshot ~/Desktop/appstore-screenshots/02-add.png
xcrun simctl io booted screenshot ~/Desktop/appstore-screenshots/03-history.png
01- 02- と番号を付けておくと、並び順がそのまま提出順になるので分かりやすくなります。
サイズを確認する
念のため、撮った画像のサイズを確認しておくと安心です。
sips -g pixelWidth -g pixelHeight ~/Desktop/appstore-screenshots/01-home.png
pixelWidth: 1320
pixelHeight: 2868
この数字が出ていれば、そのまま提出できます。リサイズや加工は不要です。
スクリーンショットを作るときのポイント
撮り方の技術とは別に、「何を撮るか」も大事です。
最初の数枚がいちばん見られます。 App Store の検索結果には先頭の数枚だけが表示されます。いちばん伝えたい画面を1枚目に置いてください。
「使っている状態」を見せます。 空の画面ではなく、薬が登録されていたり、履歴が並んでいたりする状態のほうが、何ができるアプリなのか伝わります。
枚数は 3〜5 枚で十分です。 最大 10 枚まで登録できますが、全部埋める必要はありません。似た画面を並べるより、機能ごとに分けたほうが効果的です。
文字を載せるかは好みです。 「飲み忘れをお知らせ」のような説明文を画像に重ねているアプリも多いですが、必須ではありません。載せる場合は、画面の内容が隠れないように気をつけてください。
個人情報が写り込んでいないか確認します。 テスト用に実名や実際の病名を入れていた場合は、撮り直してください。一度公開すると取り消せません。
つまずいたときの確認ポイント
シミュレーターが一覧に出てこない
Xcode → Settings → Components から、対応する iOS のシミュレーターをダウンロードしてください。
アプリが古いまま表示される
Capacitor の場合、コードを直しただけではシミュレーターに反映されません。npm run build と npx cap sync ios を実行してから、もう一度 ▶︎ を押してください。
status_bar コマンドを実行しても何も起きない
このコマンドは成功時に何も出力しません。シミュレーターの画面上部を直接見て、時刻が変わっているか確認してください。xcrun simctl status_bar booted list でも確認できます。
画像がどこに行ったか分からない
xcrun simctl io を使った場合は、実行時に表示される Wrote screenshot to: の行に保存先が書かれています。⌘ S で撮った場合はデスクトップです。
まとめ
- 機種は画面サイズで選ぶ。 「iPhone 17」ではなく「iPhone 17 Pro Max」(6.9インチ・1320 × 2868)(2026.8.18現在)
- iPad 対応は外しておく。
TARGETED_DEVICE_FAMILY = 1にすれば iPad のスクリーンショットは不要 status_bar overrideは画像を保存しない。 画面表示を整えるだけのコマンド- 保存先は撮り方で違う。
⌘ Sはデスクトップ、xcrun simctl ioは指定したパス - 中身のあるデータで撮る。 空の画面では魅力が伝わらない
シミュレーターで撮れば、サイズを気にせずそのまま提出できます。最初に機種とサイズさえ間違えなければ、あとは難しいところはありません。
この記事のカテゴリー
開発ブログ の記事をもっと見る →