RORK LABEN
SDK58 — Expo SDK 58 のベータが始まりました。React Native 0.88 の RC を同梱し、ベータ期間は3〜4週間と公式に書かれています11/01 — Google Play の対象 API レベル、延長を申請した場合の配信期限は11月1日です。残り44日ですEASENV — ローカルビルドに渡したはずの秘密が、中身ではなく変数名の文字列のまま届く、という報告が長く開いたままですNEW — 推奨された移行先が、すでに停止していました。廃止表を74行突き合わせた記録ですUISCENE — iOS 27 では新しい画面ライフサイクルが必須です。SDK 57 では自分で有効にする設定で、既定になるのは 58 からですCREDIT — 「AI のエラーには消費しない」がどこまでを指すのかは、同じ修正を何度か頼んだ日の記録を取ると見えてきますSDK58 — Expo SDK 58 のベータが始まりました。React Native 0.88 の RC を同梱し、ベータ期間は3〜4週間と公式に書かれています11/01 — Google Play の対象 API レベル、延長を申請した場合の配信期限は11月1日です。残り44日ですEASENV — ローカルビルドに渡したはずの秘密が、中身ではなく変数名の文字列のまま届く、という報告が長く開いたままですNEW — 推奨された移行先が、すでに停止していました。廃止表を74行突き合わせた記録ですUISCENE — iOS 27 では新しい画面ライフサイクルが必須です。SDK 57 では自分で有効にする設定で、既定になるのは 58 からですCREDIT — 「AI のエラーには消費しない」がどこまでを指すのかは、同じ修正を何度か頼んだ日の記録を取ると見えてきます
記事一覧/開発ツール
開発ツール/2026-06-21中級

Xcode を介さない公開で抜け落ちる事前確認を、自分で取り戻す

Rork Max の2クリック公開は Xcode の Organizer を通らないぶん、用途文言・バージョン・Bundle ID の取りこぼしに気づきにくくなります。提出前に自分でできる自己点検の手順を、生成物の読み方つきで具体的に整理しました。

Rork569Rork Max234Info.plist6個人開発212リリース11

Rork Max の2クリック公開を初めて使ったとき、便利さと同時に少し落ち着かない気持ちもありました。これまで Xcode の Organizer でアーカイブを開き、提出前に中身を一度目で確かめていた工程が、まるごと省かれるからです。送信は速くなりましたが、その分「何を送ったのか」を自分で確認する機会も消えています。

省かれた確認の多くは、不具合ではなく取りこぼしを防ぐためのものでした。用途の説明文言が一つ欠けている、バージョンを上げ忘れている、Bundle ID が前のアプリのまま残っている。こうした小さなズレは、Xcode 時代なら提出前にふと目に入りました。2クリックではそこを通らないので、自己点検を自分の手順として持ち直す必要があります。今回は、提出前に短時間でできる自己点検を、生成物のどこを見るかとあわせて整理します。

なぜ提出後に気づくと高くつくのか

取りこぼしの怖いところは、ビルドが成功してしまう点です。コンパイルは通り、2クリックで送信も完了し、見た目には何も問題がありません。引っかかるのは数時間後の審査か、最悪は公開後のユーザー報告です。提出から発覚までの距離が長いほど、修正の往復コストが膨らみます。

私の感覚では、提出前の自己点検に数分かけるのは、審査差し戻しの待ち時間を一度でも防げれば十分に元が取れます。とくに用途文言の欠落は審査で弾かれやすく、しかも提出前に機械的に検出できる種類のミスです。直前の数分を惜しまない、という割り切りが効きます。

用途の説明文言が全部そろっているか

iOS は、カメラや位置情報など端末機能を使うとき、その理由を説明する文言(Purpose String)を要求します。Rork が生成する設定にこの文言が欠けたまま機能だけ実装されていると、実行時にクラッシュするか、審査で指摘されます。

提出前に、使っている機能と説明文言が一対一で揃っているかを点検します。Expo 系の Rork なら設定ファイルから、Swift ネイティブの Rork Max なら Info.plist から確認できます。

# Rork(Expo) の生成設定から、用途文言キーを一覧する
# app.json / app.config.* のどちらでも拾えるように両方見る
grep -REo 'NS[A-Za-z]+UsageDescription' app.json app.config.* ios/ 2>/dev/null | sort -u
 
# Rork Max(Swift) の場合は Info.plist を直接見る
plutil -p ios/*/Info.plist 2>/dev/null | grep -i "UsageDescription"

出てきたキーの一覧と、アプリが実際に使う機能を突き合わせます。たとえば写真保存があるのに NSPhotoLibraryAddUsageDescription が無ければ、そこが穴です。私は機能を一つ足すたびに、対応する文言を同時に入れる癖をつけていますが、それでも公開直前にこの一覧を一度出して目視するようにしています。実装と設定は別ファイルなので、片方だけ進むことがどうしても起きるからです。

バージョンと Bundle ID の取り違え

二本目以降のアプリを出すときに増えるのが、バージョンの据え置きと Bundle ID の使い回しです。Xcode の Organizer なら提出画面にバージョンが大きく出るので気づけましたが、2クリックでは流れの中で見落としがちです。

確認すべきは二つです。表示バージョン(ユーザーに見える番号)と、ビルド番号(同一バージョン内で増やす内部番号)。App Store Connect は、同じビルド番号の再提出を受け付けません。

# 表示バージョンとビルド番号を一度に確認する
# Expo: app.json の version と ios.buildNumber
grep -E '"version"|"buildNumber"' app.json
 
# Swift ネイティブ: Info.plist の CFBundleShortVersionString と CFBundleVersion
plutil -p ios/*/Info.plist 2>/dev/null | grep -E "CFBundleShortVersionString|CFBundleVersion|CFBundleIdentifier"

Bundle ID は、テンプレートや過去プロジェクトを下敷きにすると前のアプリの値が残りやすい箇所です。私自身、個人開発で似た構成のアプリを続けて作ったとき、Bundle ID が一本前のままで、App Store Connect 側の登録と食い違って提出が止まったことがあります。提出前に、ここがこのアプリ固有の値になっているかを必ず一度見ます。

自己点検を一つのコマンドにまとめる

毎回これらを手で打つと、忙しいときほど省略してしまいます。私は提出前点検を一つのスクリプトにまとめて、公開ボタンを押す前に必ず走らせるようにしています。

#!/usr/bin/env bash
# presubmit-check.sh — 公開前に最低限を機械点検する
set -euo pipefail
 
echo "== 用途文言 =="
grep -REo 'NS[A-Za-z]+UsageDescription' app.json app.config.* ios/ 2>/dev/null | sort -u \
  || echo "(設定が見つかりません。パスを確認してください)"
 
echo "== バージョン / Bundle ID =="
grep -E '"version"|"buildNumber"' app.json 2>/dev/null || true
plutil -p ios/*/Info.plist 2>/dev/null \
  | grep -E "CFBundleShortVersionString|CFBundleVersion|CFBundleIdentifier" || true
 
echo "== 確認事項 =="
echo "[ ] 使う機能ぶんの用途文言がそろっているか"
echo "[ ] 表示バージョンを前回から上げたか"
echo "[ ] Bundle ID がこのアプリ固有か"

スクリプトにする利点は、点検が「やる/やらない」の判断から外れることです。公開フローの一部に組み込んでしまえば、急いでいても抜けません。Dolice Labs で複数アプリを並行で出していても、この一本を全アプリで共有しているので、新しいアプリでも点検の質が一定に保てます。

2クリック公開が省いてくれたのは手間であって、確認の必要性そのものではありません。省かれた目視を、機械的な自己点検として自分の側に持ち直す。次に Rork Max で公開する前に、まず用途文言の一覧を一度出力してみてください。穴がないと分かるだけで、公開ボタンを押す手が軽くなるはずです。

シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-07-10
クラッシュとして記録されない強制終了 — Rork アプリの JetsamEvent を読む
Crashlytics には何も出ていないのにレビューで「勝手に閉じる」と書かれる。その多くはメモリ超過による OS からの強制終了です。JetsamEvent レポートの読み方と、画像中心アプリのメモリ上限を実測から設計する手順をまとめます。
開発ツール2026-09-19
Rork が書き換えた箇所だけを読む — 再エクスポートのたびに回している差分確認の手順
再エクスポートしたコードを前回との差分として読むための手順です。追跡ファイルを一度消してから重ねる、雑音を外して数える、合流の前に一度止める——この3つで上書き事故を止めています。
開発ツール2026-09-03
リンクを押してもアプリが開かないとき、疑うのは assetlinks.json の置き場所より先に署名鍵です
Android App Links が検証されずブラウザに吸われる原因の多くは指紋の食い違いです。keytool の実出力と、手元で照合できる小さな検査スクリプトの実行結果を添えて整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます