見出し画像

【興味本位】iPhoneとMacの連携はどこまで出来るのかって最前線を知りたい

Opus5やGPT6Sol&Lunaが出てて、むっちゃ朝から開発しまくっています。
ココに関しては、色々精査して明日色んな情報をまとめて開発内容もまとめた感じのを出そうかと思ってます。

そんな中で、昨日から己の興味のままに生きているんですが。
iPhoneとMacで分散処理すると効率上がるのか、っていう疑問に触れたので調べると面白くって。時間が溶けました。

初めに

素人が興味本位で調べている内容です。悪しからず。
iPhoneの進化もMacの開発環境の良さも、改めてすっごいレベルになってきた。中古買うだけじゃ参戦難しいんかな?

色々、興味を持ったのと面白そうなので調べてみました。因みにどっちも持っていないので、情報を集めてニヤニヤするだけです。

リクエストの一部なんですけど、むっちゃ興味があって。調べてOSS掘り返してってやってるのが楽しいが過ぎる。

友人がU世代のサッカー観ようぜって誘ってくれたの、断るレベルで夢中だったのでめっちゃ心配されました。(普段は絶対に行く)


先に基本的な情報から。

iPhoneとは、Appleが開発・販売しているスマホの製品シリーズ。

iPhoneの基本と特徴

  • 独自OS「iOS」:Appleが作った専用の基本ソフトを積んでいます。動作が安定しており、セキュリティも高いのが特徴。覚えるのはiosという言葉だけでもいいです。

  • 直感的な操作:ボタンが少なく、画面を指でタッチして簡単に動かせます。初心者でもすぐ使えます。後はカメラ綺麗。

  • Apple製品との連携:MacやiPad、Apple Watchなどとデータを簡単に共有できます。 

MacとはAppleが開発・販売しているパソコンの製品シリーズ。

Macの特徴

  • macOSの搭載: Appleが作る専用の基本ソフト「macOS」で動きます。

  • 高い一体感: 本体とソフトを同じAppleが作っているため、動作がスムーズでデザインも洗練されています。

  • Apple製品との連携: iPhoneやiPadと簡単に写真やデータを共有したり、電話に出たりできます。

んで、この2つは上手いこと連携してくれるのかい?それは何処まで連携できるんじゃい?ってのが今回のお話。

ファイルをやり取り→出来る
音楽データを共有→出来る

では、開発は一緒に出来るの?
もっと細かく考えると、計算や演算処理とかをスマホと連動してできるの?

メモリの共有は?
メインAgentをMacでやっていたらサブエージェントはiPhoneで出来るの?

どんどん突き詰めると、どこが今の壁なんだろって疑問を解決したくなりました。Linuxの癖に、なんですけれども。

いいじゃないですか。いつかLinuxだってAndroidというLinux派生のOSと連携しまくる未来があるはずなんです。


というわけで、れっつごー。


結論

  1. Appleの「計算処理を iPhone↔Mac で分散する」公式APIはまだ存在しない。現行の連携は セッション/入出力の分担(Continuity)と Mac同士のクラスタ(RDMA over Thunderbolt 5)の2層に分かれる。

  2. アプリ開発者にいま確立しているのはHandoff で状態を移し、重い処理は Mac 側、入力・センサ・モバイルUIは iPhone 側という非対称分担設計。

  3. 将来的な対称型 P2E(peer-to-peer heterogeneous offload)は特許で研究段階。バッテリ・電力・離脱を前提にした「割り切れる」分散が本質的なベストプラクティス。

いきなり、なんやねんとなったらごめんなさい。
一旦、順序を追って見てほしいです。


アーキテクチャ全景 — 「連携」は3種類に分かれる

「iPhoneとMacの分散処理」と一括りに呼ばれるんですが、Apple製品で処理を分散しようとすると性質の違う3つの段階に分かれるみたいで。

これを混同して設計すると、ちゃんと失敗するらしい。

Layer A: セッション連携(Continuity / 公式・完成形)

これは今すぐにでも出来ちゃう連携。作業引き継ぎや、iPhoneを端末として使ってリモート操作するのもここらへん。

処理そのものは「片方のデバイス単体」で完結。
やりたいのは「作業の移動」「入出力の相互利用」

Handoff(作業引き継ぎ)Universal ClipboardContinuity Camera / 独立カメラiPhone MirroringSidecar / AirDropiCloud 同期

Layer B: Mac クラスタ分散(macOS 26.2+ / RDMA over Thunderbolt 5)

Mac環境で本当に、計算処理を分散できるシステム。
中身を共有して、演算処理なんかも協力するシステム。

ただし参加資格は Apple Silicon + Thunderbolt 5 の Mac のみ — 現状のiPhone は参加不可 くそう。

Thunderbolt 5 (80Gb/s) RDMA over TB5 (5–9µs) JACCL 集合通信MLX / MLX LM  分散推論・学習mlx.launch 起動EXO などサードパーティ

Layer C: 異種デバイス P2P オフロード(特許段階・2020/2024)

これは特許を申請して開発を進めている段階。

iPhone ↔ Mac ↔ iPad ↔ Vision Pro を電力・残量・在席状況に応じて動的に負荷配分する構想だそうです。

公式製品化は未だに実現できてないんだそうな。

電力/バッテリ感知スケジューリング離脱→中断→復帰→再開の設計非均一ノードの性能差吸収オンデバイスAIの相互補完状態の受け渡し近い将来の統合候補(未実装)

この3つが「iPhone×Mac 分散処理」を捉える3レイヤー。

レイヤーと説明されるんですが、層なのか?と疑問にも思っちゃう。段階の方が正しいような。一応、海外の開発者コミュニティでレイヤーと言ってたのでココでもレイヤー表記にしておきます。

簡単に言えば今できるのは A、本格的な計算分散は B(Mac専用)が必要、iPhone が計算ノード化するのは Cだけど未来の構想レベル。

はよきて欲しいCの未来。


要点: iPhone を「計算ノード」として参加させる分散処理は、現時点で公式には存在しなかったです。 野良のOSSを掘り返そうとしても無かったです。現状ベストプラクティスは、A層を最大化しつつ、重い計算はB層(Mac側)へ寄せる設計思想が一番近そう。

例:リモート操作端末としてiPhoneを使いながら、iPhoneの中にも軽いSLMで処理できる問題を解決させることでA層の問題を最適化。其の上で繋いだMac側で27Bとかの重ためな処理をさせる。

Qwen4-27Bの噂も聞くので、ココらへん来たら可能性の塊になりそう


3つの連携レイヤーの比較

見づらいので、画像で出します。

こんな感じです。

んー、こう見ると確かにBへ処理をどういう風に流すか、Aで出来る処理を何処までにするのかは本当に大事っぽいです。

iPhone側が起点・終点になるなら遅延も2倍になっちゃうしなぁ。


ココまでの動きでのベストプラクティス10選をまずは並べよう。

一応の連結しないといけないところや、できない処理のライン引きはなんとなく。参考にLinuxでもノートPCとメインPCでクラスタ組みたいなぁ。電気使いすぎると電子レンジでブレーカー落ちるんだよなぁ。

ベストプラクティスを調べて、省電力化もできないのか探ろう。

①設計処理の非対称分担を基本にする

これは役割分担を明確にって話ですね。
iPhone = 入力・センサ(カメラ/位置/IMU)・軽量UI・常時待機。
Mac = バッチ処理・レンダリング・推論・長時間ジョブ。

これは基本っぽいですね。あたりまえ体操。
対称型(両方 equally に計算を割る)は電源・散熱・OS制約で破綻しやすいみたいです。

②設計Handoff は「状態の移動」、ドキュメントは iCloud

HandoffはiPhoneやiPad、MacなどのApple製デバイス間で「やりかけの作業」をシームレスに引き継ぐことができる便利な機能。初めて知った

NSUserActivity には文書本体を入れない(Apple公式)。
再現に必要な最小メタデータだけ載せ、 実データは iCloud Drive / CloudKit で同期しなさいよってことらしいです。

Handoff は即座に開く導線、データは別系統。

③設計切断前提で書く(partition tolerant)

常時繋がってる前提はあかんぜよ、って話らしい。

Apple特許も明記: 「デバイスが領域外へ出ると通信が切れる」「電池は切れる」。 ジョブは冪等・単位が細かい・チェックポイント付きにし、離脱→復帰→再開(rejoin & resume)を正常系として扱う。

④設計ノード非均一を前提にスケジュール

くそう。一箇所もボトルネック作るなよってことらしいです。
中古は厳しそうな前提だなぁ。

Xgrid の教訓: 1台の遅いノードが全体を止める。残バッテリ・画面状態・SoC世代・発熱をスコア化し、 分割単位は「最弱ノードでも終わるサイズ」に。iPhone が高負荷アプリ使用中なら配分から外す。

⑤実装Swift Distributed Actors で RPC 面を薄く

これは理解らなかったので調べました。
どうやらネットワークを介した通信を行っていることを開発者に意識させず、通常のローカル関数を呼び出す感覚で分散システムを実装できるようにしなさいよってことらしい。

distributed actor + DistributedActorSystem(iOS 16+/macOS 13+)で シリアライズ/ネットワークを言語層に預ける。

ローカル/リモートを意識しないlocation transparency が最大の利点。

⑥実装リモートAPIは「呼び出し回数を減らす」

ううーん。無茶を言いなさる。減らせるなら、そりゃあ減らしますよ。往復だもんね、そうだよなぁ。

属性3つなら個別getterではなく1回の fetchProfile()。
ネットワーク往復が分散RPCの最大のコスト。
引数・戻り値はすべて Codable で、
巨大ペイロードは共有ストレージ経由に。

⑦実装発見は Bonjour / MultipeerConnectivity、データ面は Network.framework

ここはちょっと未来の環境。OSSで解決できるようにならんか海外コミュニティ覗いてますけども、技術者が介入しないと絶対にむずい領域。

自前P2Pを作るなら: 近接発見に Multipeer( BLE+AWDL )、信頼できる常時接続には NWConnection + TLS。TLSは自己署名ではなくService Identity / App Attest でピアを検証。

⑧運用Mac クラスタは「1台で入らなければ」

ええ?……初手クラスタはいかんのですか、そうですよね。

分散で上手くいく要因は 容量であって速度ではない。
1台に収まるモデルは1台で。 原則2台以上に跨ぐのは「1台では物理的にロードできない場合」のみ。TB5帯域はオンチップメモリの約1/100。

100倍帯域狭いので結果、遅くなるんですね…悔しいなぁ。

⑨運用RDMA は Recovery で有効化・再起動必須

RDMA(Remote Direct Memory Access)とは、ネットワークで繋がった別のコンピュータのメインメモリへ、CPUやOSを介さずに直接アクセスしてデータを転送する技術。
ローマ字4文字並ぶと本当に判らなくなるから、すぐにググる。

macOS 26.2+: システム設定で RDMA を有効化(JACCL は Recovery で rdma_ctl enable / bputil -a rdma)。 クラスタ運用時は Idle Sleep 無効化・Ethernet/TB5のみ・Wi-Fi は起動用コントロールプレーンに。

⑩運用電力予算とプライバシー境界を先に決める

耳が痛いなぁ。クラスタは電気喰いすぎる。
電子レンジと湯沸かしポットが使えんくなるー。

分散オフロードで省電力できないケース(短いジョブ・転送が支配的)は単体実行に戻す。 また処理データが機密なら「クラスタ外に出さない」制約(Apple Intelligence のオンデバイス思想と同じ)を設計書に明記。

注意(よくある失敗): AirDrop / Universal Clipboard / Handoff を「分散処理フレームワーク」として使おうとしないこと。 これらはユーザーが明示的に操作する転送機能であり、バックグラウンドでの継続的な計算負荷分散は提供されていない。

最初調べたら、Handoffで分散処理できるんじゃないの?って思ったけど、調べると結構難しいんですねぇ。

トポロジとネットワーク(Layer B の実地知識)

ネットワークトポロジーとは、コンピューターや周辺機器などのデバイス(ノード)がネットワーク上でどのように接続されているか、その「形」や「配置構造」のことです。

ネットワークの設計図や見取り図のようなもの。
わたしは超苦手です。ノードがなんでか頭に描けないし絵で出されても理解できないんです。学習障害なのかな?と不安になるレベルで無理で、ComfyUIがこの理由で使いこなせないんです。

で、Mac同士の本気分散では、ケーブル結線が性能を決めるらしいです。
WWDC26 (Session 233) と TN3205 が示す原則:

原則こうしなさいよって図です。

6. 技術選定の意思決定ツリー

最近、こういう決定木をむっちゃ作ってる気がする。
決定木だと指で辿れるから安心して使えるのに、ノードが無理なのは自分でもわからないんですが。

この決定ツリーに従って動けば、まず間違いなさそう。
操作や視界はiPhone、作業の引き継ぎに関してはHandoff、重い処理はクラスタで対応って感じ。

7. 技術の歩み(なぜ今このような状態か)

なんで、こんなに面倒なくらい連携が難しいのかって流れも調べてみました。始まりと途中を知ると、ちょびっと納得。


まとめ

iOSは常駐プロセス・GPU共有の制約が強く、本格的な推論サーバー化は非現実的。くそう、難しいかぁ。Cの状態であればなぁ、できそうなのに。

iPhoneはクライアント端末としてMac上で動くモデルへのアクセス、音声入力などの用途として使うのが現実解。このOSSはありそう。


iPhoneからMacを「遠隔操作」するOSS(リモートデスクトップ)

iPhoneをクライアント端末として、Macの画面を操作・制御するVNC/SSHベースのOSS。ううーん。見つけたけど信頼性は最低点、誰も使ってない。

  • MacRemote

    • 概要: ローカルネットワーク経由でiPhoneからMacを操作できるOSSクライアント。

    • 特徴: iPhoneの画面をトラックパッドやキーボードとして使えるだけでなく、H.264ストリーミングによるMacの画面共有(ミラーリング表示)、アプリの起動、音量や画面輝度の調整が可能。

  • Control

    • 概要: iPhoneからMac上のメディアアプリなどを操作するためのOSS。

    • 特徴: Mac側に専用ソフトをインストールする必要がなく、macOS標準のSSHとAppleScriptを利用してセキュアに通信

この使われなさは理解らないけど、ClaudeCodeやSkalesとかのリモート機能でなんとか出来るし、そんなに重要でもないかぁ。

わたしはお気に入りのSkalesがあるので、スマホ-メインPC&9B帯のモデルでリモートするには十分ではあります。
リモートはセキュリティもあるから、人それぞれの環境なんだろうなぁ。


MLX(Apple最速の推論フレームワーク)はApple Silicon専用でIntel Macでは動かない。

ここが悔しいなぁ。結構intelMacが中古にあるというのに。

Intel MacはCPU推論(llama.cpp)となり、台数を増やしてもネットワーク同期オーバーヘッドで1台のM1に負けることが多い。
悔しいなぁ。MLXの速さに複数台でも負けるのかぁ。むー。


MLX系ならば

MLX+量子化(4bit)で7B級以上のLLMなら実用十分。分散より先にモデル選定・量子化・コンテキスト長調整のほうが効果大という海外コミュニティの結論があるみたいです。
要は「無理にでかいの入れないで、入るモデルで工夫したほうが何倍も成果が良かったぜHAHAHA」と言う感じです。ぐぅの音もでん。

M系が2台以上になった場合、exolabs/exo 等のLAN分散推論が選択肢。役割分担(下記)の方が運用しやすい。

推奨:分散より「役割分担」
複数台があるなら、モデルを分割して同時並行で走らせるほうが確実だっていうのが海外コミュニティの結論っぽかったです。
分散処理もロマンあるんだけどなぁ。従うかぁ。

  • M1 MacBook:執筆補助・軽い推論(SLM)

  • Intel iMac:Gazebo/STLの後処理・図表生成・軽量埋め込み(BERT系はCPUでも可)

  • MacBook Pro:メインの処理、 backups / 別セッションの下書き生成

結果はGit・iCloud・Syncthingで同期。「1モデルを複数台に割る」より「タスクを複数台に割る」。


流れ(優先順)

  1. M1で Ollama または MLX を導入し、SLMを最適化(現状の拡張)

  2. Intel Mac側は llama.cpp のCPUビルドで軽量モデル(埋め込み・要約用)を配置(今ならJev関連ツール)

  3. メイン処理はメイン機で。全台がApple Siliconになったら exo でLAN分散を検討し始める感じ。


うーん、面白い勉強になりました。


参考文献

Apple 公式

WWDC / フレームワーク

報道・実践

今回は勉強した後に、それをまとめる感じにしておきました。
殆ど内容おんなじですが、良ければ。


いいなと思ったら応援しよう!

ゆいまる‐IT界隈以外でAIを使いまくる2005年生まれ よろしければ応援お願いします♡ いただいたチップはクリエイターとしての活動費に使わせていただきます!