「M1/M2/M3/M4、AI以外で何ができるの?」
その疑問、よく聞く。
MLXでLLMを動かす話、Core MLで推論を高速化する話。Apple SiliconのAI活用については、だいぶ情報が出回ってきた。でも、ちょっと待ってほしい。
君のMac、AI以外の性能をちゃんと使えてる?
生成AIで動画を作ったはいいけど、書き出しに30分かかってない? MacでVulkanゲームを動かしたいけど、どうすればいいかわからない? Electronアプリが重すぎてファンが唸ってない?
このシリーズでは、Apple Siliconの「AIスタックの外側」にある技術を徹底解説する。Media Engine、VideoToolbox、MoltenVK、Tauri。これらを使いこなせば、君のMacは「AI専用機」から「万能マシン」に進化する。
シリーズ記事一覧
メディア処理編:動画エンコードを制覇する
Apple Silicon Macには、CPUやGPUとは別に「Media Engine」という専用ハードウェアが搭載されている。こいつを使いこなすと、動画処理の世界が変わる。
1. M-series Media Engineの知られざる真実
「YouTubeの4K動画を見てるだけなのに、なんかファンが回ってる...」
その原因、VP9コーデックかもしれない。Apple Silicon MacのMedia Engineは、実は全てのコーデックに対応しているわけじゃない。
この記事では、Media Engineの「穴」を正直に解説する。VP9非対応問題、AV1の「デコードだけ対応」問題、世代間格差。不安を煽った後で、「でも実際は大丈夫」という話もちゃんとする。
こんな人向け:4K/8K動画を快適に扱いたい人、Media Engineの仕様を正確に把握したい人
2. VideoToolboxってなんだ!?〜ローカルAI勢の味方〜
Stable Diffusionで画像を生成し、CogVideoXで動画を生成し...。ところで、その生成した連番画像をMP4に書き出すとき、どれくらい時間かかってる?
VideoToolboxを使えば、ハードウェアエンコーダを直接叩ける。CPUが100%張り付く地獄から解放されて、エンコード速度は3〜4倍。消費電力も激減。
FFmpegでの具体的なコマンド例から、HandBrakeでの設定方法まで、実践的に解説する。
こんな人向け:ローカルAIで動画生成してる人、動画エンコードを高速化したい人
クロスプラットフォーム開発編:Macの壁を越える
「Macだから動かない」という時代は終わりつつある。MoltenVKとTauriが、その壁をぶち壊す。
3. Vulkanってなんだ?〜Apple Siliconの救世主か?〜
AppleがOpenGLを非推奨にして、Metalを推進してる。でもそれ、クロスプラットフォーム開発者には困った話なんだよね。
そこで登場するMoltenVK。Vulkan APIをMetalの上に「被せる」ライブラリだ。これを使えば、Vulkanで書かれたゲームやアプリが、macOS/iOSでも動く。
Dota 2、Wine、各種エミュレータ。実績は意外と豊富。MoltenVK 1.4でVulkan 1.4対応も進んでいる。
こんな人向け:MacでVulkanアプリを動かしたい人、クロスプラットフォーム開発に興味がある人
4. Tauri(Rust)ってなんだ?〜Apple Silicon勢の救世主なのか?〜
Slack、Discord、VS Code。全部Electron製。全部メモリ食いすぎ。
Tauriは、その状況を変えるかもしれないフレームワークだ。Rustベースで、バイナリサイズは2.5MB(Electronは85MB)。メモリ消費は30-40MB(Electronは100MB以上)。
しかもApple SiliconではネイティブWebKitを使うから、Rosetta翻訳のオーバーヘッドもなし。2024年10月のv2.0でiOS/Android対応も実現した。
こんな人向け:軽量なデスクトップアプリを作りたい人、Electronの重さにうんざりしてる人
技術スタック全体像
「で、結局どれがどこで動いてるの?」という疑問に答える図を作った。
AIスタック(別シリーズで解説済み)と、今回のメディア/クロスプラットフォームスタックの関係性がわかるはず。
┌─────────────────────────────────────────────────────────────────────────┐
│ アプリケーション層 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ AI/MLアプリ │ │ 動画編集アプリ │ │ ゲーム │ │デスクトップアプリ│ │
│ │ (Stable Diff │ │ (Final Cut │ │ (MoltenVK │ │ (Tauri製) │ │
│ │ 用, LLM等) │ │ Pro等) │ │ 対応ゲーム) │ │ │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
└─────────┼────────────────┼────────────────┼────────────────┼───────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ フレームワーク層 │
│ │
│ ┌─────────────────────┐ ┌─────────────────────────────────────┐ │
│ │ AIフレームワーク │ │ メディア/グラフィックスAPI │ │
│ │ ┌─────┐ ┌─────┐ │ │ ┌───────────┐ ┌─────────────────┐ │ │
│ │ │ MLX │ │ MPS │ │ │ │VideoToolbox│ │ MoltenVK │ │ │
│ │ └──┬──┘ └──┬──┘ │ │ │(HWエンコード)│ │ (Vulkan→Metal) │ │ │
│ │ │ │ │ │ └──────┬────┘ └────────┬────────┘ │ │
│ │ ┌──┴───────┴──┐ │ │ │ │ │ │
│ │ │ Core ML │ │ │ ┌──────┴──────────────┴────────┐ │ │
│ │ └──────┬──────┘ │ │ │ AVFoundation │ │ │
│ │ │ │ │ └──────────────┬────────────────┘ │ │
│ └─────────┼───────────┘ └─────────────────┼─────────────────┘ │
└────────────┼────────────────────────────────────┼────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ ハードウェア抽象化層 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Metal │ │
│ │ (Apple GPU API の統一基盤) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────┐ ┌───────────────────────────────────────┐ │
│ │ Accelerate │ │ WebKit │ │
│ │ (CPU ベクトル演算) │ │ (Tauri が使う OS ネイティブ WebView) │ │
│ └───────────────────────┘ └───────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ ハードウェア層 │
│ ┌─────────┐ ┌─────────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ GPU │ │Media Engine │ │ Neural │ │ CPU │ │ Unified │ │
│ │ │ │(H.264/HEVC/ │ │ Engine │ │(NEON等) │ │ Memory │ │
│ │ │ │ ProRes/AV1) │ │ │ │ │ │ │ │
│ └─────────┘ └─────────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ Apple Silicon (M1/M2/M3/M4) │
└─────────────────────────────────────────────────────────────────────────┘
ポイントは「Media Engine」の存在。こいつはGPUとは別の専用ハードウェアで、動画のエンコード/デコードを担当する。VideoToolbox経由で叩くと、GPUを使わずに動画処理ができる。つまりAI処理と動画書き出しを同時に走らせても、リソースがバッティングしない。
ユースケース別クイックガイド
「で、結局どれ使えばいいの?」
やりたいこと別に整理した。
「AI生成動画を爆速で書き出したい」
使う技術:VideoToolbox(FFmpeg経由)
ffmpeg -framerate 24 -i frame_%04d.png \
-c:v hevc_videotoolbox \
-b:v 10M \
output.mp4
ソフトウェアエンコード(libx265)と比べて3〜4倍速。CPU使用率も100%→20%に激減。
詳細 → VideoToolboxってなんだ!?
「4K/8K動画を省電力で再生したい」
使う技術:Media Engine(自動適用)
Safari、QuickTime、Final Cut Proなどは自動的にMedia Engineを使う。ただし注意点がある。
Chromeで4K YouTubeを見ると、VP9コーデックが使われることがある。VP9はMedia Engine非対応なので、CPUソフトウェアデコードになる。Safariを使えばH.264/HEVCで配信されて、Media Engineが効く。
詳細 → M-series Media Engineの知られざる真実
「MacでVulkan対応ゲームを動かしたい」
使う技術:MoltenVK
多くのゲームやエミュレータはMoltenVK対応済み。Steam経由のゲームや、Wineベースの互換レイヤーもMoltenVKを活用している。
詳細 → Vulkanってなんだ?
「軽量なデスクトップアプリを作りたい」
使う技術:Tauri
npm create tauri-app@latest
cd my-app
npm run tauri dev
バイナリサイズ2.5MB、メモリ30-40MB。Apple SiliconネイティブビルドでRosettaオーバーヘッドもなし。
詳細 → Tauri(Rust)ってなんだ?
「クロスプラットフォームでアプリを配布したい」
使う技術:Tauri + ユニバーサルバイナリ
# Apple Silicon + Intel 両対応のユニバーサルバイナリ
npm run tauri build -- --target universal-apple-darwin
Windows、Linux、macOS(Intel/ARM両対応)、さらにiOS/Androidまで、一つのコードベースで対応できる。
詳細 → Tauri(Rust)ってなんだ?
関連シリーズへのリンク
Apple Silicon技術スタックの全体像を把握したい人は、AIスタック解説シリーズも参照してほしい。
Apple Silicon AI技術スタック 完全解説シリーズ
MPS、MLX、MPSGraph、Metal、vDSP、Core ML。Apple Siliconで機械学習をやるなら、こっちのシリーズが基本になる。
本シリーズ(メディア処理 & クロスプラットフォーム開発)は、AIスタックと並列の関係にある。どちらかを選ぶのではなく、用途に応じて両方使いこなすのが正解だ。
対象読者
このシリーズは、こんな人を想定している。
メインターゲット
ローカルAIで生成した動画を爆速で書き出したい人、MacでWindowsゲームを動かしたい人、Electronの重さに限界を感じている開発者
前提知識
Macの基本操作ができる、ターミナルでコマンドを打てる、プログラミング経験があるとベター(ただし必須ではない)
このシリーズを読むと
Apple Silicon Macの「AI以外の」ハードウェア機能を理解し、実際に活用できるようになる
参考リンク
Apple公式ドキュメント
オープンソースプロジェクト
関連記事
このシリーズは随時更新予定。新しい記事が追加されたらここにリンクを追加します。
質問やリクエストがあればコメント欄でどうぞ。