Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Colcon Worktree Manager〜AI 時代の並行開発が、ようやく ROS 2 ...

Avatar for HansRobo HansRobo
August 05, 2026
41

Colcon Worktree Manager〜AI 時代の並行開発が、ようやく ROS 2 に来た!〜

Avatar for HansRobo

HansRobo

August 05, 2026

Transcript

  1. git worktree Colcon Worktree Manager AI 時代の並行開発が、ようやく ROS 2 に来た!

    git worktree知ってる? git worktree使ったことがある? git worktreeをROS開発で使ったことがある? 吉本幸太郎 @hans_ojisan
  2. git worktree 1つのリポジトリで複数の作業ディレクトリを同時に運用するgitの標準機能 $ git worktree add <path> <branch> ※<path>

    に <branch>の内容で作業ディレクトリ(worktree)を作成する 例:機能Aの開発途中に突然の緊急対応! worktreeなし: 変更の退避(stash)・緊急対応のブランチで作業 worktreeあり:緊急対応用の作業ディレクトリを新規作成(機能Aはそのまま)
  3. なぜ今 git worktree なのか?(2/2) • コーディングエージェントを使った並列開発の広まり • コード隔離手段としてのgit worktree ◦

    それぞれのエージェントの変更が干渉しない • 主要コーディングエージェントにおける標準サポート ◦ claude code / codex… 1 agent 1 worktreeでの開発 エージェントA:worktree A で機能Aの開発 エージェントB:worktree B で緊急対応 エージェントC:worktree C で機能Bの開発
  4. なぜ今 ROSでは git worktree ではないのか?(1/2) やってみた $ colcon build …

    ERROR:colcon:colcon build: Duplicate package names not supported: - my_robot: - src/feature-a/my_robot - src/feature-b/my_robot ⇒同名パッケージを複数ヶ所に作るな!と怒られる。 ワークスペースでパッケージは単一である必要がある
  5. なぜ今 ROSでは git worktree ではないのか?(2/2) 整理すると、、、、 • git worktree ◦

    リポジトリ単位で独立した作業ディレクトリを作る ◦ ⇒ワークスペースに対応(大抵の場合これでOK) • ROS ◦ 多くの場合、リポジトリとワークスペースは別の単位 ◦ 単一ワークスペースでの同名パッケージは許容されない ⇒git worktreeの想定と ROSワークスペースには構造的な違いが存在する
  6. そこで!! Colcon Worktree Manager AI 時代の並行開発が、ようやく ROS 2 に来た! colcon

    workspace/git worktree のライフサイクルの融合! 吉本幸太郎 @hans_ojisan
  7. worktreeのためにROSワークスペースを作る 新しいワークスペースを作成 $ mkdir -p -./-./feature_ws/src 新しいワークスペースにworktreeを作成 $ git worktree

    add -./-./feature_ws/src/my_robot -b feature 開発・ビルド・etc… $ cd -./-./feature_ws -& colcon build • 非常に面倒(作業場所作るだけでこれ) • 考えること・覚えないといけないことが多い ⇒素手でやると大変
  8. Colcon Worktree Manager cwm worktree add 新しいワークスペースを作成 $ mkdir -p

    -./-./feature_ws/src 新しいワークスペースにworktreeを作成 $ git worktree add -./-./feature_ws/src/my_robot -b feature $ cwm worktree add feature リポジトリ単位の worktree操作とROSのワークスペース操作を 1コマンドで!
  9. cwm worktreeサブコマンド:作成・削除など $ cwm worktree --help Usage: cwm worktree [OPTIONS]

    COMMAND [ARGS]--. Manage worktree overlay workspaces. Options: --help Show this message and exit. Commands: add Create a new overlay worktree for BRANCH. remove Remove the overlay worktree for BRANCH. list List all managed worktrees. prune Remove metadata for worktrees whose workspace directory no--. git worktreeコマンドの流儀で ROSワークスペースのライフサイクルを管理する
  10. cwm activate/deactivate 環境変数の切り替え(ディレクトリ移動はしない) $ cwm activate <worktree名> 環境変数のアンロード [cwm-<worktree名-] $

    cwm deactivate ⚠思想ポイント • ROSワークスペースって仮想環境!! ◦ 普段はワークスペース1つなのであまり意識しないですよね、、、 ◦ でも、sourceして読み込むあたりとか、仮想環境っぽい • Pythonの仮想環境と挙動を合わせています ◦ なのでディレクトリ移動はセットではない ディレクトリ移動は 次ページ
  11. cwm ws:colconの薄いラッパー ビルド $ cwm ws build オプションはそのままcolconへ流される $ cwm

    ws build --cmake-args -DCMAKE_BUILD_TYPE=Release 他にも、test/test-resultなどもある 普通に使う分には、cwm activate & cwm cdして、colcon buildで事足りる、、、 なぜ、、、、
  12. cwm ws buildの工夫 派生ワークスペースでのビルドは最小限にしたい • worktreeのノリでワークスペースを乱立させるとディスク容量を食う • ワークスペースごとにクリーンビルドすると大変 必要なものだけをビルド •

    変更しないパッケージはベースのワークスペースのものを再利用 • 変更したパッケージだけを対象に自動でビルド ◦ git diffでベースと比較 gitを管理下に収めた colcon worktree managerの特権
  13. エージェント向け 非インタラクティブ化機能 activateせずに仮想環境内の操作を利用 $ cwm ws build -w <worktree名> 人間向けのインタラクティブ機能はエージェントからは使いにくい

    オプションでワークスペースを指定して、activateなしで仮想環境を利用 worktree並行開発の最後のピースがハマったか、、、?
  14. Colcon Worktree Manager AI 時代の並行開発が、ようやく ROS 2 に来た! • git

    worktree操作とROSワークスペース操作の融合 • ROSワークスペースを仮想環境に見立てた環境変数管理 • gitと連携して変更分だけの最小限のビルドを実現 Let's star!!☆