【iOSアプリ】シミュレーターで App Store 用のスクリーンショットを作る

App Store にアプリを出すには、ストアに載せるスクリーンショットが必要です。

私は今までWebのデベロッパーモードを使ってスクリーンショットを撮っていました。

メープルの初めてのパソコン
App Store用スクリーンショットの作り方|FigmaでiPhoneフレーム付き画像を作成する方法App Storeへアプリを公開する際、スクリーンショットは決められたサイズで用意する必要があります。「iPhoneの実機を持っていない」…

今回は、シミュレーターを使う方法について説明します。

シュミレーターを使うと必要なサイズがぴったり出せるので、こちらのほうが確実です。

ただ、機種の選び方を間違えると App Store Connect に受け付けてもらえません。(画像自体の大きさ。画像の中にスマホのモックアップを入れる場合は自由)

実際に測ってみたら、思っていたのとは違う結果になりました。この記事では、その落とし穴と、撮影までの具体的な手順をまとめます。

いちばんの落とし穴:機種選びを間違えるとサイズが合いません

Xcode の上部にあるデバイス選択メニューから、実機とシミュレーターを切り替えられます。ここで「新しい機種を選べばいいだろう」と考えて iPhone 17 を選ぶと、実は失敗します。

シミュレーターで実際にスクリーンショットを撮って、ピクセル数を測ってみました。

(2026.8.18現在)

機種撮れる画像サイズApp Store 提出
iPhone 171206 × 2622❌ 規格外のサイズ
iPhone 17 Pro Max1320 × 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. 実機のデータを持ち込む

アプリにバックアップ機能があるなら、そちらのほうが確実です。

  1. 実機でバックアップファイル(JSON など)を書き出し、Mac に送る
  2. シミュレーターでアプリを開き、復元機能を使う
  3. ファイルピッカーが開くので、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 は指定したパス
  • 中身のあるデータで撮る。 空の画面では魅力が伝わらない

シミュレーターで撮れば、サイズを気にせずそのまま提出できます。最初に機種とサイズさえ間違えなければ、あとは難しいところはありません。

タイトルとURLをコピーしました