机の引き出しに、もう使っていないiPhoneが眠っている。壁際には、代替わりして電源を入れなくなった古いMacノートもある。サブモニターがもう1枚あれば作業がはかどりそうだが、新しく買うほどの出費は惜しい。そんな状況に、無料のオープンソースアプリ「OpenDisplay」が答える。Macに接続するだけで、iPhoneや古いMac、iPadを拡張ディスプレイにできるアプリだ。サブスクリプションもドングルも要らず、接続する端末がMacとは別のApple IDでもかまわない。
気になるのは、具体的に何ができるのかと、Apple純正のSidecarや有料アプリと何が違うのかだ。そして、無料でここまでできるアプリが、なぜApp Storeに並んでいないのかも気になる。
画面を増やすと何ができるのか
まず気になるのは、OpenDisplayが見せる画面がミラーなのか、それとも独立した画面なのかだ。公式サイトは「画面の複製ではなく、独立した拡張ディスプレイ」だと説明している(OpenDisplay公式サイト)。Macのデスクトップを文字どおり広げる使い方になり、iPhone側にはMac側とは別のウインドウを表示できる。
できることを公式の記載から拾うと、次のようになる。
- タップでクリック、ドラッグ、2本指スクロールなど、タッチ操作に対応する
- 端末を縦向きに回転させると、縦長の画面として使える
- USB接続中は、端末を充電しながら使える
- Mac本体だけでなく、古いMac(macOS 12以降)も受信側にでき、退役したノートを外部ディスプレイとして再利用できる
- 1台のMacに最大3台まで同時接続でき、iPadとiPhoneを混ぜて使うこともできる
(いずれもOpenDisplay公式サイトとGitHubのREADMEに基づく)
古いMacも受信側になる、という点は意外だった。自分は「iPhoneを画面にする」ところまでは想像していたが、使わなくなったMac自体を外部ディスプレイとして延命させる発想までは考えていなかった。
次に気になるのは、これがAppleの標準機能であるSidecarと何が違うのか、という点だ。
Sidecarと何が違うのか
Macには、2018年のmacOS Mojave以来、iPadを拡張ディスプレイにするSidecarという標準機能がある。すでにSidecarを使っている読者なら、「それなら今のままでいいのでは」と思うかもしれない。
ところがSidecarには、2つの制約がある。使える端末はiPadに限られ、iPhoneは対象外になる。さらに、MacとiPadが同じApple IDにサインインしている必要がある(OpenDisplay公式サイトの比較表)。
OpenDisplayはこの両方を外している。iPhoneも拡張ディスプレイにでき、Macと接続する端末が別のApple IDでもつながる。家族や同僚のiPhoneを一時的に借りて画面を増やす、支給されたMacと個人のiPhoneを組み合わせる、といった使い方もできる計算になる。
Sidecarより自由度が高いことは分かったが、同じようにiPhoneを画面にできる有料アプリ、Duet DisplayやLuna Displayとは何が違うのか。
有料アプリとの違いは
iPhoneを外部ディスプレイにするアプリ自体は、OpenDisplayが最初ではない。Duet Displayはサブスクリプション課金で以前から同じことができ、Luna Displayは専用のドングルを使う。公式サイトの比較表は、次のように整理している(OpenDisplay公式サイト)。
| 項目 | OpenDisplay | Sidecar | Duet Display | Luna Display |
|---|---|---|---|---|
| 価格 | 無料・オープンソース | 無料 | サブスクリプション | 有料+専用ドングル |
| iPhoneを画面にできる | ○ | × | ○ | × |
| 異なるApple IDでも接続 | ○ | × | ○ | ○ |
| アカウント登録 | 不要 | Apple ID必須 | 必要 | 公式サイトに記載なし |
表の差で一番はっきりしているのは、価格の立て方だ。Duet DisplayとLuna Displayは、画面を増やす体験そのものに課金するか、専用ハードウェアを売る設計になっている。OpenDisplayは、ソースコードを公開した上で無料で配っている。
開発しているのは、ドイツ在住の個人開発者1人だ。開発費用は、Apple Developer会員費とドメイン代で年間約110ドルになる。これをKo-fiでの寄付でまかなっていると公式サイトに書かれている(OpenDisplay公式サイト)。寄付は任意なので、使う側が費用を払わなくても機能は制限されない。
無料でここまで機能を揃えられるなら、Mac App Storeに並んでいてもよさそうなものだ。ところがOpenDisplayのMac側アプリは、App Storeでは配布されていない。
App Storeに無い理由
OpenDisplayのMac送信側アプリは、Homebrewか、署名・公証済みのDMGファイルでしか配布されていない。App Store経由のインストールは用意されていない。
理由は、画面を仮想的に作り出す仕組みにある。GitHubのREADMEは、CGVirtualDisplayという非公開(プライベート)APIを使っていると明記している(GitHubのREADME)。CGVirtualDisplayはmacOSの内部で使われているAPIで、Appleが外部の開発者向けに公式サポートしているものではない。Appleの審査基準では、こうした非公開APIを使うアプリはMac App Storeで配布できない。
つまり、OpenDisplayが無料でSidecar以上の自由度を持てているのは、Appleの正規の仕組みを使っているからではない。macOSの内部機構を直接使っているからだ。配布経路が制限されているのも、同じ理由から来ている(GitHubのREADME)。
この便利さは、将来のmacOSアップデートで崩れる可能性と表裏一体だ。Appleがこの非公開APIの挙動を変えれば、アプリ側の対応が追いつくまで、画面が映らなくなることもありうる(GitHubのREADME)。
自分はここで引っかかった。「無料で高機能」と「App Storeにない」は、別々の事情のように見えて、実は同じ1つの設計判断から出ている。Appleの正式な手順では作れない機能を、非公式な手段で実現した代わりに、配布経路も非公式なものに限られた。
何ができて、なぜ無料で配られているかは分かった。残るのは、実際に使ったときの速さだ。
実際の速さはどれくらいか
画面を広げても、動きがもたつくようでは使う気になれない。公式のREADMEには実測値が載っている(GitHubのREADME)。M5 Pro搭載のMacBook Proから、2017年製5K iMacへケーブル接続で映像を送った計測だ。送信側の画質設定には3段階あり、設定によってフレームレートが変わる。
このグラフから分かるのは、画質と速さがトレードオフの関係にあることだ。Best設定はiMacのパネルが持つ5120×2880ドットをそのまま1:1で送るため、約30fps・遅延約30msにとどまる。画質を落とすFast設定では、送る映像をiMacの表示解像度(2560×1440)まで小さくする。その代わりに、約58fps・遅延約12msまで上がる(GitHubのREADME)。
文字を読んだりウインドウを並べたりする作業なら、Fast設定の約58fpsで体感は十分そうだ。動画編集のプレビューや高精細な画像を扱う作業では、Best設定で解像度を優先したほうが実用的になる。画面に映すものが文字中心か映像中心かで、選ぶ設定を変えるとよい。
対応コーデックにも上限があり、HEVCでは最大5120×2880、より互換性の高いH.264では最大4096×2304にとどまる(GitHubのREADME)。5K表示のiMacを1:1で使うには、送信側がApple Siliconで、受信側もHEVCに対応している必要がある。
まとめ
OpenDisplayを使うと、引き出しに眠っていたiPhoneや、退役した古いMacが、無料でMacの拡張ディスプレイになる。Sidecarと違ってiPhoneを使え、Macと端末のApple IDが違っていても接続できる。Duet DisplayやLuna Displayのような課金やドングルも要らない。
Mac側はHomebrew(brew install --cask opendisplay)か、GitHub ReleasesのDMGからインストールできる。iPhone・iPad側はApp Storeから入れられる。古いMacを受信側にする場合は、opendisplay-receiverを使う(GitHubのREADME)。
導入前に知っておきたいのは、音声には対応しておらず、受信側Macのキーボード・マウス操作もまだ使えないことだ。そして、この便利さを支えているCGVirtualDisplayは非公開APIだ。将来のmacOSアップデートで挙動が変わり、アプリが動かなくなる可能性も抱えている。それでも無料で試すぶんには惜しくない話なので、サブ画面が欲しいと思ったときにまず試す選択肢として悪くない。
コメント
気づきや感想をどうぞ記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。
投稿にはGoogleログインが必要です。
Googleでログイン投稿にはGoogleアカウントの表示名が公開されます。メールアドレスは取得・公開しません。
コメントを読み込んでいます…