ROS2 HumbleをMac(Apple Silicon)にインストールする方法【2025年版】


ROS2をMac(Apple Silicon)にインストールしようとして詰まった経験がある方は多いはずです。公式ドキュメントはUbuntu中心で、Mac向けの情報が少ないです。この記事では実際に動作確認した手順をまとめます。

結論:Dockerを使うのが最速

ネイティブインストールは依存関係の問題で詰まりやすいです。Dockerを使う方法が一番ストレスなく動きます。

方法の比較から先に示します。

方法 メリット デメリット おすすめ度
Docker 安定・環境汚染なし・再現性高い GUI設定がやや面倒 ★★★★★
Homebrew ネイティブで動く 依存関係で詰まりやすい ★★★☆☆
Lima + QEMU Ubuntu環境をまるごと動かせる 遅い・設定が複雑 ★★☆☆☆

方法1:Docker(推奨)

前提条件

  • Docker Desktop for Mac がインストール済み(公式サイト
  • Apple Silicon(M1/M2/M3)または Intel Mac

ステップ1:ROS2 Humbleイメージの取得

docker pull osrf/ros:humble-desktop

humble-desktop はRViz2などのGUIツールも含んだフルイメージです。軽量版は humble-ros-base

ステップ2:コンテナ起動(CUIのみ)

docker run -it --rm \
  --name ros2_humble \
  -v ~/ros2_ws:/ros2_ws \
  osrf/ros:humble-desktop \
  bash
  • -v ~/ros2_ws:/ros2_ws:ホストのフォルダをコンテナ内にマウント(コードはホスト側で書ける)
  • --rm:コンテナ終了時に自動削除

コンテナ内で動作確認:

source /opt/ros/humble/setup.bash
ros2 --version
# ros2 1.3.x が表示されれば成功

ステップ3:RViz2などGUIを使う場合

まずXQuartzをインストールします。

brew install --cask xquartz

XQuartzを起動してから(Applications > XQuartz)、環境設定 > セキュリティ > 「ネットワーク・クライアントからの接続を許可」にチェックを入れます。

その後、ターミナルで:

xhost +localhost

Dockerコンテナ起動時に DISPLAY を渡します:

docker run -it --rm \
  --name ros2_gui \
  -e DISPLAY=host.docker.internal:0 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/ros2_ws:/ros2_ws \
  osrf/ros:humble-desktop \
  bash

コンテナ内でRViz2を起動:

source /opt/ros/humble/setup.bash
rviz2

ウィンドウが表示されれば成功です。

docker-compose.yml(毎回コマンドを打つのが面倒な場合)

services:
  ros2:
    image: osrf/ros:humble-desktop
    environment:
      - DISPLAY=host.docker.internal:0
      - ROS_DOMAIN_ID=0
    volumes:
      - ~/ros2_ws:/ros2_ws
      - /tmp/.X11-unix:/tmp/.X11-unix
    network_mode: host
    stdin_open: true
    tty: true
    command: bash -c "source /opt/ros/humble/setup.bash && bash"
# 起動
docker compose up -d

# コンテナに入る
docker compose exec ros2 bash

方法2:Homebrew(ネイティブ)

有志が管理しているHomebrewのROS2フォーミュラを使います。公式サポートではないため壊れることがありますが、Dockerが使えない場面では有効です。

インストール

# Homebrewが入っていない場合
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# ros/ros2 タップを追加
brew tap ros/ros2

# ROS2 Humble(ベース)をインストール
brew install ros-humble-ros-base

フルインストール(RViz2等含む)は時間がかかります(1〜2時間):

brew install ros-humble-desktop

セットアップ

# ~/.zshrc に追加
echo "source /opt/homebrew/opt/ros-humble/setup.zsh" >> ~/.zshrc
source ~/.zshrc

# 動作確認
ros2 --version

よくある依存関係エラーへの対処

# Python バージョンの競合
brew install python@3.11
export PATH="/opt/homebrew/opt/python@3.11/bin:$PATH"

# OpenSSL 関連のエラー
brew install openssl
export OPENSSL_ROOT_DIR=$(brew --prefix openssl)

開発ワークフローの推奨構成

個人的には以下の構成が一番快適でした:

ホスト(Mac):VSCodeでコードを書く
     ↕ ボリュームマウント
Dockerコンテナ:ROS2の実行・ビルド・テスト

VSCodeの「Dev Containers」拡張機能を使うと、コンテナ内に入った状態でVSCodeが動くのでさらに快適です。

.devcontainer/devcontainer.json:

{
  "name": "ROS2 Humble",
  "image": "osrf/ros:humble-desktop",
  "postCreateCommand": "echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc",
  "extensions": [
    "ms-python.python",
    "ms-iot.vscode-ros"
  ]
}

まとめ

  • すぐ試したい → Dockerで docker run -it osrf/ros:humble-desktop bash
  • GUIも使いたい → XQuartz + Docker
  • ネイティブにこだわる → Homebrew(詰まる覚悟で)
  • 本格的に開発 → docker-compose + VSCode Dev Containers

次回はROS2の基本概念(ノード・トピック・サービス)を解説します。