◉RORK LABEN
●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主
記事一覧/開発ツール
⬡ 開発ツール/2026-07-04上級

Rork Max 生成アプリで端末同士を直接つなぐ — MultipeerConnectivity が無言で失敗する Local Network 権限の罠

Rork Max が生成したネイティブ Swift アプリに、サーバを介さず近くの端末同士をつなぐ共有機能を組み込む方法です。シミュレータでは動くのに実機でピアが見つからない——その多くは Local Network 権限まわりの無言の失敗が原因でした。

Rork Max235MultipeerConnectivityLocal NetworkSwift48iOS114オフライン共有

✦ プレミアム記事

近くにいる相手とアプリ内のデータを、サーバもアカウントも通さずにその場で渡したい——たとえば作った壁紙プリセットを目の前の友人の端末にそのまま送る、といった機能を Rork Max で作ろうとしたときのことです。生成された Swift はシミュレータでは何の問題もなく動き、ピア一覧にモックが並びました。ところが実機二台で試すと、片方の端末にもう片方が一向に現れません。エラーも出ず、ただ静かに何も起きない。原因を追ったところ、MCSession の使い方ではなく、その手前の Local Network 権限で無言のまま弾かれていました。

この「無言の失敗」は MultipeerConnectivity で近接通信を組むときに最初にぶつかる壁です。個人開発でアプリを作り続けている中でも、権限まわりの取りこぼしは実機でしか露見しないため厄介でした。ここでは、Rork Max が生成したネイティブアプリに端末直結の共有機能を最小差分で乗せる前提に立ち、権限の罠の切り分け方と、そのまま使えるラッパー実装を順にまとめていきます。

なぜサーバを介さず端末を直接つなぐのか

近接共有をバックエンド経由にすると、たとえ相手が目の前にいても「アップロード → サーバ経由 → ダウンロード」という遠回りになります。オフラインの場所では動かず、サーバ費用もかかり、一時的なデータのためにアカウント連携を要求することにもなります。

MultipeerConnectivity は Wi-Fi と Bluetooth を自動で束ねて、同じ Wi-Fi 下でもオフラインのピアツーピアでも、近くの端末を発見して直接データを流せる Apple 純正のフレームワークです。壁紙やプリセットのような「その場で渡せれば十分」なデータには、サーバを持たない選択がむしろ素直だと私は考えています。Dolice Labs で運用しているような小さなアプリでは、機能ひとつのためにバックエンドを増やさない判断が運用コストにも効いてきます。

一方で、恒久的な端末間同期が目的なら CloudKit で端末間データ同期を組む設計 の方が向いています。近接共有は「いま・ここ」で完結する用途に絞るのが要点です。

MultipeerConnectivity の3つの役割を分けて捉える

このフレームワークは登場人物を3つに分けて考えると一気に見通しが良くなります。

  1. Advertiser(広告側): 「ここに居ますよ」と自分の存在を周囲に知らせる役。MCNearbyServiceAdvertiser を使います。
  2. Browser(探索側): 周囲の Advertiser を探し、見つけたら招待を送る役。MCNearbyServiceBrowser を使います。
  3. Session(セッション): 招待が受理されたあと、実際のデータをやり取りする土管。MCSession が担います。

同じアプリが Advertiser と Browser の両方を同時に担うと、どちらの端末からでも相手を見つけて誘えます。この「双方向で名乗り、双方向で探す」構成が、近接共有ではもっとも扱いやすいと感じています。

serviceType はこの3者をひも付ける合言葉です。ここには後述する厳格な命名規則があり、規則を外れると advertiser も browser も静かに動かなくなります。

✦

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

この記事の続きを読む

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

この記事で得られること
✦実機でピアが一向に見つからず「なぜか動かない」で止まっていた人が、Local Network 権限とBonjourサービスタイプのどこでつまずいているかをlog から切り分けられるようになる
✦招待から MCSession 確立、切断からの復帰までの状態遷移を、そのまま組み込める薄いラッパーとして手に入れられる
✦Rork Max の生成コードに最小差分で近接共有を足すときに、AIが書ききれない権限・Info.plist・バックグラウンド制約をどこで自分の手で補うかがわかる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-04-05
Rork Max × WidgetKit・ライブアクティビティ実装ガイド 2026 — Dynamic Island 対応まで
Rork Max で iOS Widget・ロック画面ウィジェット・Dynamic Island 対応のライブアクティビティを実装した記録。Timeline の焼き込み設計、APNs のヘッダーと優先度、push-to-start、stale-date の扱いまで実運用の判断を残します。
⬡ 開発ツール2026-05-16
Rork Max 製 iOS アプリの Firebase CocoaPods を Swift Package Manager へ移行した実録——2026年10月の廃止前に対応した手順と3つの落とし穴
Firebase Apple SDK の CocoaPods 配信が2026年10月に停止します。Rork Max 製 iOS アプリ4本を Swift Package Manager へ移行した実体験をもとに、手順・落とし穴・Dropbox競合コピー問題の解決策を詳細に解説します。
⬡ 開発ツール2026-05-01
Rork アプリに Notification Service Extension を後付けする — 画像付き通知・暗号化ペイロード復号・動的書き換えの実装メモ
Rork で作った iOS アプリに Notification Service Extension を後付けし、画像付き通知・E2E暗号化ペイロードの復号・APNs ペイロードの動的書き換えを本番品質で動かすまでの設計と、実際に踏んだ落とし穴を、動作する Swift コードとともにまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます