| name | ios-screenshot |
| description | App Store用のスクリーンショットを生成・管理します。Use when ユーザーが「スクリーンショット撮って」「App Storeのスクショ更新して」「snapshotして」と言ったとき。 |
iOS Screenshot
App Store 用のスクリーンショットを生成・管理するスキルです。fastlane snapshot を使った自動生成、または手動撮影したスクリーンショットの管理をサポートします。
ワークフロー概要
方法1: 手動でスクリーンショット撮影
1. シミュレーターでアプリ起動
2. Cmd+S でスクリーンショット撮影
3. fastlane/screenshots/ に配置
4. fastlane deliver でアップロード
方法2: fastlane snapshot で自動生成
1. UI Test でスクリーンショット撮影ロジック作成
2. Snapfile で設定
3. fastlane snapshot 実行
4. 自動で fastlane/screenshots/ に保存
指示
Step 1: スクリーンショット要件の確認
App Store で必要なスクリーンショットサイズを確認:
iPhone (必須):
- 6.9" (iPhone 16 Pro Max): 1320 x 2868 px
- 6.7" (iPhone 15 Plus/Pro Max): 1290 x 2796 px
- 5.5" (iPhone 8 Plus): 1242 x 2208 px
iPad (必須、ユニバーサルアプリの場合):
- 13" (iPad Pro 13"): 2048 x 2732 px
- 12.9" (iPad Pro 12.9"): 2048 x 2732 px
必要枚数: 各サイズで 1〜10 枚(推奨: 3〜5枚)
Step 2: 手動でスクリーンショットを撮影
2a. シミュレーターの準備
xcrun simctl list devices | grep "iPhone\|iPad"
open -a Simulator --args -CurrentDeviceUDID <UDID>
2b. スクリーンショットの撮影
- シミュレーターでアプリを起動
- 撮影したい画面に遷移
- Cmd + S でスクリーンショット保存
- 保存先: デスクトップ
- ファイル名:
Simulator Screenshot - iPhone 16 Pro Max - 2026-02-08 at 15.30.42.png
2c. ファイル名のリネーム
App Store の命名規則に従ってリネーム:
mkdir -p fastlane/screenshots/ja-JP
mkdir -p fastlane/screenshots/en-US
命名規則:
- 数字のプレフィックス(01, 02, 03...)で表示順を制御
- 分かりやすい名前をつける
- 言語ごとにディレクトリを分ける
Step 3: fastlane snapshot で自動生成(オプション)
3a. snapshot の初期化
fastlane snapshot init
生成されるファイル:
fastlane/Snapfile - デバイス設定
SnapshotHelper.swift - UI Test用ヘルパー
3b. Snapfile の設定
devices([
"iPhone 16 Pro Max",
"iPhone 15 Plus",
"iPhone 8 Plus",
"iPad Pro (13-inch) (M4)"
])
languages([
"ja-JP",
"en-US"
])
scheme("speedmeter")
output_directory("./fastlane/screenshots")
clear_previous_screenshots(true)
3c. UI Test の作成
UI Test ターゲットにスクリーンショット撮影ロジックを追加:
import XCTest
class ScreenshotTests: XCTestCase {
override func setUpWithError() throws {
continueAfterFailure = false
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
}
func testTakeScreenshots() throws {
let app = XCUIApplication()
snapshot("01-speed-view")
sleep(2)
app.tabBars.buttons.element(boundBy: 1).tap()
sleep(2)
snapshot("02-map-view")
app.buttons["settingsButton"].tap()
sleep(2)
snapshot("03-settings")
}
}
3d. snapshot の実行
fastlane snapshot
fastlane snapshot --devices "iPhone 16 Pro Max"
期待される結果:
fastlane/screenshots/
├── ja-JP/
│ ├── 01-speed-view.png (iPhone 16 Pro Max)
│ ├── 02-map-view.png
│ └── ...
├── en-US/
│ ├── 01-speed-view.png
│ └── ...
└── screenshots.html # プレビュー用HTML
Step 4: スクリーンショットの確認
open fastlane/screenshots/screenshots.html
ls -lh fastlane/screenshots/ja-JP/
確認事項:
- ✅ 各デバイスサイズで撮影されているか
- ✅ 画像が鮮明か(ぼやけていないか)
- ✅ UI要素が正しく表示されているか
- ✅ ステータスバーの時刻が綺麗か(9:41推奨)
- ✅ テキストが読みやすいか
Step 5: App Store Connect へのアップロード
5a. メタデータと一緒にアップロード
fastlane deliver
fastlane deliver --skip_binary_upload --skip_metadata
5b. 特定の言語のみアップロード
fastlane deliver \
--skip_binary_upload \
--languages "ja-JP"
5c. 強制上書き
fastlane deliver \
--skip_binary_upload \
--overwrite_screenshots
Step 6: App Store Connect で確認
open "https://appstoreconnect.apple.com/"
確認事項:
- App Store タブを開く
- 「スクリーンショット」セクションを確認
- 各デバイスサイズで表示されているか確認
- 順序が正しいか確認
使用例
例 1: 手動でスクリーンショットを撮影してアップロード
ユーザーが言うこと: "App Store用のスクリーンショット撮って"
実行されること:
- シミュレーターで iPhone 16 Pro Max を起動
- アプリを起動して各画面でCmd+Sで撮影
- ファイルを
fastlane/screenshots/ja-JP/ にリネームして配置
fastlane deliver --skip_binary_upload でアップロード
結果: 新しいスクリーンショットが App Store Connect に反映される
例 2: fastlane snapshot で自動生成
ユーザーが言うこと: "snapshotで自動的にスクリーンショット生成して"
実行されること:
- UI Test に撮影ロジックを追加
- Snapfile でデバイスと言語を設定
fastlane snapshot を実行
- 全デバイス・全言語で自動生成
fastlane deliver --skip_binary_upload でアップロード
結果:
✅ 生成完了:
- iPhone 16 Pro Max: 3枚
- iPhone 15 Plus: 3枚
- iPhone 8 Plus: 3枚
- iPad Pro 13": 3枚
📁 fastlane/screenshots/screenshots.html で確認
例 3: 既存のスクリーンショットをダウンロード
ユーザーが言うこと: "App Store Connectのスクリーンショットをダウンロードして"
実行されること:
fastlane deliver --download_screenshots
結果: 現在の App Store のスクリーンショットがローカルに保存される
例 4: プレビュー動画の追加
ユーザーが言うこと: "App Previewも追加したい"
実行されること:
- App Preview 動画を作成(最大30秒、.mov または .mp4)
fastlane/screenshots/ja-JP/ に配置
- ファイル名:
iPhoneProMax-01.mp4
fastlane deliver --skip_binary_upload でアップロード
結果: スクリーンショットと動画が一緒にアップロードされる
トラブルシューティング
エラー: No screenshots found
原因: fastlane/screenshots/ ディレクトリが空またはファイル名が不正
解決方法:
ls -R fastlane/screenshots/
エラー: snapshot 実行時に UI Test target not found
原因: UI Test ターゲットが存在しないか、スキーム設定が間違っている
解決方法:
- Xcode で UI Test ターゲットを作成
- Snapfile の
scheme を正しい UI Test スキームに設定
- スキームの Test アクションに UI Test が含まれているか確認
問題: スクリーンショットがぼやけている
原因: シミュレーターの解像度設定
解決方法:
- シミュレーター > Window > Physical Size を選択
- または、実機でスクリーンショットを撮影
- snapshot 使用時は自動的に正しい解像度で撮影される
問題: ステータスバーに不要な情報が表示される
原因: シミュレーターのステータスバーがそのまま表示されている
解決方法:
方法1: SimulatorStatusMagic(Xcode 12以前)
brew install SimulatorStatusMagic
xcrun simctl status_bar booted override \
--time "9:41" \
--batteryLevel 100 \
--cellularMode active
方法2: snapshot の機能を使う
override_status_bar(true)
status_bar_override({
time: "9:41 AM",
battery: 100,
carrier: "Carrier"
})
問題: App Preview 動画のフォーマットエラー
原因: ファイル形式またはサイズが App Store の要件に合っていない
解決方法:
- 形式: H.264 または HEVC コーデックの .mp4 または .mov
- 長さ: 15秒〜30秒
- 解像度: デバイスのネイティブ解像度
- ファイルサイズ: 500MB以下
変換コマンド:
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium output.mp4
参考資料
注意事項
スクリーンショット要件
- 最小枚数: 各デバイスサイズで最低1枚
- 推奨枚数: 3〜5枚(ユーザーに主要機能を伝える)
- 最大枚数: 10枚
- ファイル形式: PNG または JPG(PNG推奨)
- カラープロファイル: sRGB または Display P3
ベストプラクティス
- ✅ 最初のスクリーンショットが最も重要(検索結果で表示される)
- ✅ アプリの主要機能を順番に見せる
- ✅ テキストオーバーレイは控えめに(Apple の審査ガイドライン)
- ✅ 実際のアプリ画面を使用(モックアップは避ける)
- ✅ ステータスバーを綺麗に(9:41、フル充電、Wi-Fi接続)
多言語対応
- 各言語で別々のスクリーンショットを用意
- 翻訳だけでなく、文化的な配慮も必要
- 最低限、英語と日本語を用意(日本市場向けの場合)
App Preview 動画
- スクリーンショットの前に再生される
- 音声なしでも内容が分かるようにする
- 最初の3秒が最も重要
- 各デバイスサイズで個別に用意する必要がある
更新頻度
- アプリのUIが大きく変わったら必ず更新
- 新機能追加時に更新を検討
- 競合アプリと比較して見劣りしないか定期的にチェック