RORK LABEN
ACQUISITION — Rorkが初の買収を実施。macOSでネイティブSwiftアプリを生成するPaperlineを取得しましたFUNDING — Left Lane Capital主導の$15Mシードは、AI時代のモバイルアプリの作り方と収益化の再定義に充てられますGROWTH — Rork Maxはローンチから3日でARR $1.5Mに到達し、2週間で年間売上を倍増させたとされますENGINE — Rork MaxはClaude Code+Claude Opus 4.6駆動。Web初のSwiftビルダーとしてXcodeを置き換えますSPLIT — 通常RorkはReact Native(Expo)、Rork MaxはネイティブSwiftでAppleエコシステム全域が対象ですPRICING — 無料で開始でき、有料は月25ドル〜、Rork Maxは月200ドルですACQUISITION — Rorkが初の買収を実施。macOSでネイティブSwiftアプリを生成するPaperlineを取得しましたFUNDING — Left Lane Capital主導の$15Mシードは、AI時代のモバイルアプリの作り方と収益化の再定義に充てられますGROWTH — Rork Maxはローンチから3日でARR $1.5Mに到達し、2週間で年間売上を倍増させたとされますENGINE — Rork MaxはClaude Code+Claude Opus 4.6駆動。Web初のSwiftビルダーとしてXcodeを置き換えますSPLIT — 通常RorkはReact Native(Expo)、Rork MaxはネイティブSwiftでAppleエコシステム全域が対象ですPRICING — 無料で開始でき、有料は月25ドル〜、Rork Maxは月200ドルです
記事一覧/開発ツール
開発ツール/2026-06-26上級

Rorkのアプリで音をバックグラウンド再生し、ロック画面から操作できるようにする

Rorkが生成したExpoアプリで音楽やヒーリング音をバックグラウンド再生し、ロック画面・コントロールセンターから操作できるようにするまでを、expo-audioの実装コードと落とし穴つきでまとめます。

Rork452Expo106expo-audio2React Native183バックグラウンド再生3

プレミアム記事

癒し系のアプリを作っていて最初に裏切られるのは、「プレビューでは完璧に鳴っていた音が、ホームに戻った瞬間や画面ロックで止まる」場面です。私自身、個人開発で長く運営している Relaxing Healing という睡眠・瞑想向けの音アプリを Rork で作り直してみたとき、生成直後のコードはフォアグラウンドでしか鳴りませんでした。就寝前に使うアプリで画面を消した瞬間に無音になるのは、用途として致命的です。

Rork が出力するのは React Native(Expo)のコードなので、この問題は Rork 固有ではなく Expo の音声まわりの設定で解けます。ただし公式の最小サンプルをそのまま貼っても、ロック画面の再生ボタンは出てきませんし、Android では数分で勝手に止まります。ここでは expo-audio(Expo SDK 54 系)を使って、バックグラウンド再生とロック画面操作の両方を成立させるまでの実装を、つまずいた順に並べます。

なぜ生成直後のコードでは背景で止まるのか

audio を「ただ再生する」のと「アプリが背景にいても鳴らし続ける」のは、OS から見ると別の許可が要る行為です。前者は音声セッションの初期状態でも動きますが、後者には次の3つが揃って初めて成立します。

OSごとに要る「3つの許可」

まず iOS では、バックグラウンド実行モードに audio を申告していないと、背景に回った瞬間に音声セッションが停止されます。次に、音声セッション自体を「背景でも鳴らす」モードに切り替える必要があります。そして Android では、ロック画面の通知(メディア通知)を能動的に出さないと、OS が約3分でプロセスの音声を止めます。生成直後のコードはこの3つのうち、たいてい1つも満たしていません。

1. expo-audio を入れて、背景モードを申告する

Rork からエクスポートしたプロジェクトに expo-audio を追加し、app.json(または app.config.js)のプラグイン設定で iOS のバックグラウンド音声を有効にします。プラグイン経由で書くと、ネイティブの Info.plist に手を入れずに UIBackgroundModes が設定されます。

{
  "expo": {
    "plugins": [
      [
        "expo-audio",
        {
          "microphonePermission": false
        }
      ]
    ],
    "ios": {
      "infoPlist": {
        "UIBackgroundModes": ["audio"]
      }
    },
    "android": {
      "permissions": ["android.permission.FOREGROUND_SERVICE", "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"]
    }
  }
}

ここを入れずに開発ビルドを作ると、iOS シミュレータでは一見動くのに実機で背景に回した途端に止まる、という再現性の低いバグに変わります。私はこの差で半日溶かしたので、最初に申告しておくことを強く推奨します。設定変更後は npx expo prebuild と再ビルドが必要です(Expo Go では UIBackgroundModes は反映されません)。

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

この記事の続きを読む

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

この記事で得られること
画面ロックで音が止まってしまう癒し系・音楽アプリを、ロック画面操作つきの安定再生に作り替えられる
expo-audioのsetAudioModeAsyncとsetActiveForLockScreenの正しい組み合わせを、動くコードで手に入れられる
iOSとAndroidで挙動が分かれる箇所(3分で止まる問題・割り込み復帰)を、事前に潰した状態でリリースできる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-24
EAS Update を入れたのに『直したはずのバグ』が消えないとき — OTA が静かに届かない原因と運用メモ
EAS Update を導入しても OTA が一部のユーザーに届かないことがあります。runtimeVersion のドリフト、配信したのに採用されない更新、安全なロールバックの選び方を、Rork アプリの運用で実際に効いた計装とともに整理します。
開発ツール2026-06-23
アプリスイッチャーに個人的な画面が残る——背景へ回した瞬間のスナップショットを隠す設計
Rork が生成した React Native アプリをホームに戻すと、iOS はその瞬間の画面をアプリスイッチャー用に撮影してディスクに保存します。手記や個人的な入力画面はそこに残り、第三者の目に触れます。iOS の目隠しオーバーレイ(inactive で出す理由)、Android の FLAG_SECURE、機密画面だけに絞る方法、スクショ検知までを動くコードで示します。
開発ツール2026-06-22
壊れたキャッシュで毎回起動時に落ちるアプリ——ユーザーが自力で抜け出せる「セーフモード起動」を設計する
永続化したキャッシュが壊れて起動のたびに同じ場所で落ちると、ユーザーには再インストールしか残りません。アプリ自身が早期クラッシュの連続を数え、対話可能になって初めて起動を確定し、危険な状態だけを段階的にリセットするセーフモードを、Expo(React Native)の実装で設計します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →