Appleは、Macで開発しながらLinuxにデプロイする開発者の課題を解決しようとしています。同社はWWDCにおいて「コンテナマシン」を発表しました。これはWindowsのWSL(Windows Subsystem for Linux)に似た、永続的なLinux仮想マシンですが、macOS専用に設計されています。
開発者が直面する共通の課題
多くの開発者にとって、この問題は馴染み深いものです。ワークステーションはmacOSで動作しているのに、アプリケーションの最終的なデプロイ先はほぼ必ずLinuxサーバーという状況です。この開発環境と本番環境のミスマッチは、余分な設定手順や互換性の問題、想定外のトラブルを引き起こしてきました。macOSとLinuxはどちらもUnixをルーツとしていますが、両者には依然として重要な違いがあります。
Containerプロジェクトの拡張
コンテナマシンは、Appleが前年のWWDCで初めてプレビューした「Containerプロジェクト」の上に構築されています。今年のカンファレンスではバージョン1.0が公開され、コンテナマシンもそれに合わせて登場しました。このプロジェクトはOCI(Open Container Initiative)標準のイメージを採用しており、通常のコンテナと新しいコンテナマシンの両方を軽量仮想マシン内で実行します。その結果、LinuxはmacOSのコアシステムからより強固に分離されます。詳細については、WWDC 2026のContainerプロジェクトセッションでご確認いただけます。
Swiftで構築されたオープンソース実装
AppleはこのプロジェクトをSwiftで開発し、Apache 2.0ライセンスのもとGitHubでソースコードを公開しています。また、「Containerization」と呼ばれるAppleの別のオープンソースパッケージを基盤としています。現時点では、OSに同梱されるのではなくGitHub上で公開されている形態のため、macOSに完全統合されたツールというよりも開発者向けプロジェクトとしての色合いが強い状態です。また、現時点ではmacOS 26のみに対応しています。
コンテナマシンの使い方
インストール後、開発者は container machine run コマンドを実行することで、標準的なLinuxマシン内のターミナルを開くことができます。あるいは container machine run uname -a のように1つのコマンドを指定すれば、macOSのシェルから離れることなく、Linux環境内で直接コマンドを実行することも可能です。
ただし、いくつかの制限があります。container machine create コマンドは、/sbin/init システム初期化プログラムを含むイメージでのみ動作します。多くのコンテナイメージは単一アプリケーション向けに構築されており、このコンポーネントが含まれていないケースが多いです。その場合は、Dockerfileを使ってカスタムイメージを作成する必要があります。Appleのドキュメントにはすでにその方法を示したサンプルが用意されています。
実際の動作検証
元の記事の著者は、このツールを実際に試しています。Ubuntu 24.04をベースにSwiftのフルツールチェーンを含むコンテナマシンを作成し、macOS上のVisual Studio Codeから接続。Linux環境内でプロジェクトをビルドし、Mac側で実行することに成功しました。ただし、Swiftコードのデバッグは完全には機能せず、ブレークポイントが作動しませんでした。一方、.NETプロジェクトは問題なくデバッグできたとのことです。
ファイル共有とセキュリティのトレードオフ
デフォルト設定では、コンテナマシンはmacOSユーザーのホームフォルダを読み書き両方のアクセス権でマウントします。この設定は、両環境からファイルやコードに即座にアクセスできるため、開発者にとって便利です。一方でセキュリティ面では懸念も生じます。Linux環境内にインストールされた悪意のあるパッケージが、.ssh フォルダに保存されたSSHキーなどの機密ファイルに理論上アクセスできてしまう可能性があるためです。この動作は --home-mount パラメーターで変更でき、最も安全な構成はホームフォルダへのアクセスを完全に無効にすることです。
メモリ管理の課題
メモリ割り当てにも独特の挙動があります。デフォルトではシステムの総メモリの半分をコンテナマシンが確保しますが、実際の消費は必要に応じた量に留まります。検証時には32GBが割り当てられましたが、仮想マシンを起動してPostgreSQLを実行した後の実際の使用量は約1GBでした。より大きな問題は別の点にあります。マシンが動作中はmacOSが割り当てたメモリを解放しないのです。メモリを解放するには、仮想マシンを再起動するしかありません。
グラフィカルなLinuxアプリは未対応
グラフィカルなLinuxアプリケーションの実行は、現在このプロジェクトの対象外です。WindowsではWSLがX11やWaylandを通じてGUIアプリを起動できますが、Appleの現時点での案内はXQuartzをインストールし、コンテナとホスト間でネットワーク経由で接続するというものです。組み込みサポートはまだ存在しません。
確立されたエコシステムとの競合
Mac開発者にはすでにLinuxコンテナや仮想マシンを実行するための豊富な選択肢があります。Docker、Podman、Colima、UTM、VirtualBox、OrbStack、そしてSSH経由のリモートLinuxサーバーなどです。そのため、AppleはまだApple製コンテナツールが真の代替手段として通用することを証明する必要があります。とはいえ、初期の印象は有望です。ドキュメント、機能の網羅性、メモリ管理にはまだ改善の余地があるものの、システムは軽快に動作し、軽量な使い心地を実現しています。
翻訳元: https://meterpreter.org/apple-container-machines-linux-mac/