DockerでmacOSを動かす!?ソフトウェアエンジニアが知るべき「dockur/macos」の活用法
「dockur/macos」について、ソフトウェアエンジニアの視点から、楽しく、そしてコントのように信じる派と信じない派の議論を交えながら解説していきますね。
まず、この「dockur/macos」というものですが、Dockerコンテナの中でmacOSを動かすという、ちょっと聞いただけでは「え?どういうこと?」となる、ユニークなプロジェクトです。
普通、DockerはLinuxをベースにして、アプリケーションとその依存関係をまとめて動かすための仮想化技術ですよね。それをmacOSでやろう、というのがこのプロジェクトの目的です。
信じる派と信じない派のコント風に見ていきましょう!
(信じる派のエンジニア
熱血漢、新しいもの好き)
「信じてくれよ!この『dockur/macos』は、まさに未来だよ!特に僕たちmacOSアプリ開発者にとっては、革命的なんだ!」
(信じない派のエンジニア
ベテラン、保守的)
「革命?大げさだよ。Mac上でMacを動かして、一体何が面白いんだい?VMwareやParallelsで十分だろう。手間が増えるだけじゃないか。」
(信じる派)
「そこが違うんだ!VMwareはOS全体を管理しなきゃいけない。でもDockerなら、コンテナとして簡単に起動・停止・破棄ができる! CI/CDに組み込むことを考えてみてくれよ。CI環境でmacOSのテストを自動で実行できるんだ!しかも、環境をクリーンな状態に保てるから、『僕の環境では動くのに…』っていう悲劇がなくなるんだよ!」
(信じない派)
「ふむ...それは一理あるな。クリーンな環境は魅力的だ。でも、Dockerはあくまでコンテナ技術だ。GUIアプリケーションを動かすのは、X11やVNCで画面を転送する必要がある。遅くて重くて、まともに使えるもんじゃないだろ?」
(信じる派)
「それが進化しているんだ!『dockur/macos』はVNCサーバーを内蔵しているから、特別な設定なしにブラウザから画面を操作できる。もちろん、ネイティブなパフォーマンスとはいかないけど、テスト用途には十分すぎる! Xcodeのテストも自動化できるし、App Storeの審査に提出する前の最終チェックだって自動化できるかもしれない!」
(信じない派)
「まあ、テスト自動化は確かに便利そうだ。だが、それだけか?開発環境を丸ごとコンテナ化するなんて、現実的じゃない。IDEも重いし、ビルド時間もかかる。本物のMacで開発したほうが圧倒的に効率的だろう。」
(信じる派)
「もちろん、日常の開発は本物のMacでやるさ!これは開発の『補助ツール』なんだ。例えば、異なるバージョンのmacOSでアプリの互換性をテストしたいとき。Macを何台も用意するなんて無理だろ?でも、Dockerならコンテナを複数起動して、簡単にテストできる!macOSの『テスト環境の民主化』なんだよ!」
(信じない派)
「ふむ...『テスト環境の民主化』か...。たしかに、様々なバージョンのmacOSやXcodeでテストするのは手間だった。それを自動化できるなら、開発効率は格段に上がるかもしれないな...。少し、信じてみようか...。」
まとめると、以下のようなメリットがあります。
テスト環境の自動化
CI/CDパイプラインに組み込み、macOSアプリの自動テストを簡単に実行できる。
異なるバージョンのmacOS環境
複数のmacOS環境を手軽に用意し、互換性テストを効率的に行える。
クリーンな開発・テスト環境
新しいコンテナを立ち上げるだけで、常にクリーンな環境で作業を開始できる。
環境構築の簡素化
必要な依存関係がすべて揃った環境を、Dockerイメージとして共有できる。
実際に使ってみましょう!導入方法はとっても簡単です。
Dockerがインストールされていること。
まずは、docker pullコマンドで、イメージをローカルにダウンロードします。
docker pull dockur/macos
次に、docker runコマンドでコンテナを起動します。
docker run -p 5092:5092 -v /dev/kvm:/dev/kvm --privileged dockur/macos
-p 5092:5092
ホストのポート5092とコンテナのポート5092を紐付けています。このポート経由でVNC接続を行います。
-v /dev/kvm:/dev/kvm
KVM(Kernel-based Virtual Machine)を利用するためのオプションです。高速化のために必要です。
--privileged
特権モードでコンテナを起動します。これもパフォーマンス向上のためです。
コンテナが起動したら、Webブラウザで以下のURLにアクセスしてください。
http://localhost:5092
すると、ブラウザ上でmacOSのデスクトップ画面が表示され、操作できるようになります!
(信じる派)
「どうだい、簡単だろ?あとは、このコンテナの中にXcodeを入れて、テストスクリプトを実行するだけさ!」
(信じない派)
「...たしかに、想像していたよりずっと簡単だ。VNCの遅延もそこまでひどくない。しかし、もしVNCを使いたくない場合はどうするんだい?」
(信じる派)
「もちろん、コマンドラインだけでも使えるさ!例えば、SSHでコンテナに接続して、CLIツールを実行することもできる。テストスクリプトを自動実行するだけなら、画面は必要ないだろう?」
(信じない派)
「なるほど...。それは便利そうだ。この技術、意外と使えるかもしれない...。」
このように、「dockur/macos」は、macOS開発におけるテストやCI/CDの自動化に、大きな可能性を秘めたツールです。