◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-04-24上級

Rork アプリで CarPlay 対応を実装する — 音楽・ナビ・メッセージを車載で動かす設計と App Store 審査の勝ち方

Rork で作ったアプリを CarPlay に対応させるまでの道筋を、エンタイトルメント申請の書き方から CPTemplate API の選び方、UIScene 設定、審査で見られた箇所まで、自分が詰まった順に書き残します。音楽・ナビ・メッセージのカテゴリ別の設計も添えました。

Rork584CarPlayiOS115UISceneCPTemplate車載アプリエンタイトルメント3

✦ プレミアム記事

CarPlay 対応アプリを作りたいと相談を受けるたびに、私はまず「どのカテゴリで申請しますか?」と聞きます。実はここが、多くの個人開発者が最初につまずくポイントなのです。Apple は CarPlay の利用を「音楽・オーディオ」「ナビゲーション」「EV 充電」「駐車場」「食事注文」「メッセージング」「VoIP 通話」「運転タスク」といった限定カテゴリにしか認めていません。どのカテゴリで申請するかを間違えると、エンタイトルメントが下りず、いくら実装しても CarPlay に表示されないという事態になります。

私自身、最初に出した申請が却下されたとき、通知には具体的な理由がほとんど書かれていませんでした。何を直せばよいのかを自分で推測するしかなく、そこで数週間を溶かしています。

以下では、エンタイトルメント申請の書き方から UIScene の設定、CPTemplate API の選び方、iPhone 側とのデータ共有、そして審査で引っかかりやすい箇所までを順に整理しております。運転中という文脈でしか生まれない価値を持つアプリであれば、CarPlay 対応は個人開発でも十分に手が届く範囲です。

なぜ今 CarPlay 対応なのか — 市場の実態と見落とされがちな価値

CarPlay に対応した車種は、レンタカーを借りるたびに増えていると感じます。いっぽうで、実際にヘッドユニットの App Library を開いてみると、そこに並ぶサードパーティ製のアプリは数えるほどしかありません。実装の難しさが理由だと思い込んでいたのですが、周りの個人開発者と話すうちに、多くの方が「CarPlay は大手アプリだけのもの」と初めから見送っているのだと気づきました。

実際に CarPlay のエンタイトルメントは、適切なカテゴリで適切な申請文を書けば、個人開発者でも十分に取得可能です。そして、車内という「他のアプリから完全に切り離された環境」でユーザーを獲得できるのは、モバイルアプリ市場で稀有な優位性になります。特に以下のようなアプリは、CarPlay 対応が収益インパクトに直結します。

  • ポッドキャスト・オーディオブック・音楽配信系(カテゴリ: Audio)
  • オリジナルナビゲーション・ドライブログ系(カテゴリ: Navigation)
  • ドライブスルー注文・コーヒー注文系(カテゴリ: Quick Food Ordering)
  • 電気自動車充電スポット検索系(カテゴリ: EV Charging)

運転中の利用者は、通知に気を取られて別のアプリへ移ることがほとんどありません。再生を始めたら、目的地に着くまで開いたままになります。私が音源アプリの計測を見返していて意外だったのは、車内経由のセッションが長くなったことそのものよりも、その長さが日ごとにほとんどぶれないことでした。通勤という決まった時間に結びついているからかもしれません。

CarPlay 開発の全体像 — Rork アプリを CarPlay 対応にする 4 つのレイヤー

Rork で作ったアプリに CarPlay 対応を追加するには、4 つのレイヤーでの作業が必要です。ここを混同すると、実装の途中で「あれ、iPhone 側のコードとどう連携させるんだっけ?」と迷子になります。

まず 1 つ目が「エンタイトルメント層」です。これは Apple への申請書類で、com.apple.developer.carplay-audio などカテゴリに応じたエンタイトルメントキーを取得する作業です。ここが通らなければ後の工程がすべて無駄になります。2 つ目が「UIScene 設定層」で、Info.plist の UIApplicationSceneManifest に CarPlay 用のシーン設定を追加します。

3 つ目が「CPTemplate 実装層」で、CarPlay の画面は通常の UIKit や SwiftUI ではなく、CPListTemplate、CPGridTemplate、CPNowPlayingTemplate などの専用テンプレート API で構築します。自由にレイアウトを組むことはできず、Apple が提供するテンプレートの組み合わせでしか UI を作れません。4 つ目が「データ同期層」で、iPhone 側のデータと CarPlay 側のデータを同期する仕組みです。

Rork のネイティブ統合機能を活用すれば、React Native で作った iPhone 側のアプリに、Swift で書かれた CarPlay シーンを追加する形になります。つまり CarPlay 部分は必ず Swift/Objective-C で書く必要があり、Rork の AI コード生成だけでは完結しません。ここが多くの方が見落とすポイントです。

✦

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

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦CarPlay エンタイトルメント申請で何度も却下されていた方が、Apple に通る申請書の書き方を手に入れられる
✦CPTemplate API(Audio・Navigation・Communication)の使い分けと、それぞれのカテゴリで必須になる UI 設計パターンを習得できる
✦Rork で作った既存アプリに CarPlay サポートを追加し、運転中ユーザーという新しい市場にリーチできるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

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

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

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

関連記事

⬡ 開発ツール2026-09-21
exit code 0 で止まるビルド — ログを黙らせていた設定と、空ファイルを通した存在チェック
eas build --local が exit code 0 but produced no further output で止まる件と、0 バイトのスタブが埋め込まれず dyld で落ちる件。どちらも原因は出力を減らす設定でした。自分のスクリプトを棚卸しする手順まで書き残します。
⬡ 開発ツール2026-09-05
Widget Extension でも BGTaskScheduler.submit は成功します。走らないのは register が親アプリだけのものだからです
Widget Extension から BGTaskScheduler に依頼を出すとビルドも submit も通るのに、翌朝ウィジェットは変わりません。register がホストアプリ専用である事実から、更新の主語を親アプリへ戻す設計まで、壁紙アプリの運用で詰めた手順を残します。
⬡ 開発ツール2026-07-27
最低サポート iOS をいつ上げるか — 利用率ではなく、コードに残った分岐の数で決める
最低サポート OS の引き上げを利用率で判断すると、毎年同じ結論になって先送りが続きます。OS 分岐に注記を付けて棚卸しし、iOS と Android の引き上げ先ごとに消せる分岐を数えるスクリプトと、引き上げ後に見る指標をまとめました。