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

irie - Git Worktree + Docker 並行開発ツール

Avatar for ode ode
February 20, 2026

irie - Git Worktree + Docker 並行開発ツール

Git WorktreeとDockerを組み合わせた並行開発環境ツール「irie」の紹介。
割り込みタスク時のstash地獄を解消し、Traefikによるホスト名ベースルーティング、共有DB管理、ワンコマンドでのworktree環境構築を実現。
Claude Code連携によるAI支援開発フローもサポート。

Avatar for ode

ode

February 20, 2026
Tweet

Other Decks in Programming

Transcript

  1. 現状の課題 - 割り込みタスクの悪夢 作業A 機能開発 → git stash 作業B レビュー指摘

    ⬇ 割り込み 修正対応中... 開発中にレビュー指摘や緊急対応が飛んでくる日常 開発中...
  2. 現状の課題 - 割り込みタスクの悪夢 作業A 機能開発 → git stash 作業B レビュー指摘

    ⬇ 割り込み → git stash 作業C 緊急バグ修正 ⬇ さらに割り込み! 緊急対応中... 開発中にレビュー指摘や緊急対応が飛んでくる日常 開発中... 修正対応中...
  3. 現状の課題 - 割り込みタスクの悪夢 作業A 機能開発 git stash pop 作業B レビュー指摘

    ⬇ 割り込み → git stash 作業C 緊急バグ修正 ⬇ さらに割り込み! 緊急対応中... stash地獄 stashが溜まりどれがどれか不明。pop間違いでコン フリクト発生。 コンテキストの消失 「どこまでやったっけ?」stash前の作業状態を思い 出せない。 やらかし事故 間違ったブランチでstash apply。作業Aの変更が作 業Bに混入。 開発中にレビュー指摘や緊急対応が飛んでくる日常 ...?? どのstash? 修正対応中...
  4. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 …でもDockerと組み合わせると my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  5. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ …でもDockerと組み合わせると my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  6. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ どの作業もいつでもすぐ再開できる …でもDockerと組み合わせると my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  7. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ どの作業もいつでもすぐ再開できる …でもDockerと組み合わせると ✖ ポート番号の衝突 全worktreeが <80 />, <3000 /> を取り合う my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  8. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ どの作業もいつでもすぐ再開できる …でもDockerと組み合わせると ✖ ポート番号の衝突 全worktreeが <80 />, <3000 /> を取り合う ✖ DBコンテナの増殖 worktreeごとにDBが起動し、メモリ圧迫 my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  9. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ どの作業もいつでもすぐ再開できる …でもDockerと組み合わせると ✖ ポート番号の衝突 全worktreeが <80 />, <3000 /> を取り合う ✖ DBコンテナの増殖 worktreeごとにDBが起動し、メモリ圧迫 ✖ 環境構築の繰り返し .env編集、override.yml作成、migration… my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  10. Git Worktreeで解決? …しかしDockerとの壁 Git Worktreeなら 作業ごとに独立したディレクトリ ブランチ切り替え不要・stash不要 作業A / B

    / C が常に並行して存在 コンテキスト切り替えは cd するだけ どの作業もいつでもすぐ再開できる …でもDockerと組み合わせると ✖ ポート番号の衝突 全worktreeが <80 />, <3000 /> を取り合う ✖ DBコンテナの増殖 worktreeごとにDBが起動し、メモリ圧迫 ✖ 環境構築の繰り返し .env編集、override.yml作成、migration… ✖ 認証情報が使い回せない localhost:3000 と <3001 /> は別サイト扱い my-project/ main/ ← 安定版 feat-a/ ← 作業A fix-bug/ ← 作業B review-fix/ ← 作業C
  11. irieが解決すること 🌐 ホスト名ベースのルーティング Traefikリバースプロキシにより、すべてポート80で統一。 feat-xxx.my-project.localhost で自動ルーティング 。 💾 共有DB +

    柔軟な分離 DBコンテナを1つに集約。通常はmainのDBを共有、 スキーマ変更時は --separate-db で個別DB自動作成。 ⚡ ワンコマンドで環境構築 irie add 1つで、worktree作成・Docker設定生成・ DB初期化・マイグレーションまで全自動。 🔑 認証情報の共有 *.my-project.localhost は同じルートドメイン。 パスワードマネージャーがworktree間で使い回し可能。
  12. アーキテクチャ 🌐 ブラウザ main.my- project.localhost 🌐 ブラウザ feat-a.my- project.localhost 🌐

    ブラウザ feat-b.my- project.localhost ⬇ 🛠 Traefik (リバースプロキシ) ホスト名でルーティング / ポート80で統一 ⬇ 📦 main docker compose 📦 feat-a docker compose 📦 feat-b docker compose ⬇ 🗄 共有 PostgreSQL / MySQL コンテナ1つ / DB名で分離
  13. 主要な機能 📁 Bare構造 親ディレクトリでの誤コミットを防止。すべての worktreeが対等な関係。 🤖 Claude Code連携 irie init

    でプロジェクトのDocker構成をAI が自動解析・テンプレート生成。 🎯 start-task チケットURLやタスク説明からworktree作成 + Claude Code起動を1コマンドで。 📝 エディタ連携 VS Code, Cursor, JetBrains, Vim... irie open で好みのエディタで即座に。 🔄 irie cd Shell連携でworktree間を瞬時に移動。Tab補 完・fzf連携もサポート。 🛡 安全な削除 irie remove でworktree・Docker・DB・ Traefik設定を確認付きで一括クリーンアップ。
  14. 基本ワークフロー 📦 初回セットアップ(リポジトリごとに1回) 01 irie clone <repo-url> Bare構造でリポジトリをクローン 02 irie

    init Claude Codeが Docker設定テンプレートを自動生成 生成ファイル: docker-compose.override.traefik-example.yml / post-setup.sh / post-cleanup.sh ⚠ AIが生成するためプロジェクト固有の調整が必要な場合あり → リポジトリにcommitすればチーム全員で共有。以後は不要 🔄 日常の開発フロー 01 irie add feat/new-feature worktree作成 + Docker環境の自動セットアップ 03 irie open worktreeをエディタ / IDEで開く VS Code, Cursor, JetBrains, Vim等に対応 (WSL2環境でもWindows側のIDEを直接起動可能) 04 irie remove feat/new-feature 完了後、環境ごとクリーンアップ 02 irie cd feat/new-feature worktreeに移動 (シェル統合時は add で自動cd)
  15. irie add の実行結果 ✔ セットアップ完了 アクセスURL: http://new-feature.my-project.localhost/ プロジェクト固有URL: 管理画面: http://new-feature.my-project.localhost/admin

    クライアント(Vite SPA): http://new-feature.client.my- project.localhost/ Mailpit: http://new-feature.mailpit.my-project.localhost/ Traefikダッシュボード: http://traefik.localhost/ ターミナルからアクセス URLクリックでブラウザが開く あとから確認 irie info で再表示 プロジェクト固有URL post-setup.sh の irie_info() で定義 セットアップ完了後、アクセスURLが表示される
  16. Before / After Before (手動管理) git worktree add で作成 .env

    をコピーしてDB接続情報を書き換え docker-compose.override.yml を手書き ポート変更・Compose name指定... DBを手動で作成 マイグレーション実行 ブラウザの認証情報を再入力 ➡ After (irie) irie add feat/xxx ... 全自動 ... ブラウザで feat-xxx.my-project.localhost にアクセ ス 完了! 💡 Worktree + Docker共通の注意点: build: のみのサービスは worktree ごとに毎回ビルドが走る → override で image: を指定してイメージを共有( irie init で 設定)
  17. irie start-task - Claude Code連携 タスク説明を渡すだけで、ブランチ命名 → worktree作成 → Claude

    Code起動まで一発 従来のClaude Code開発フロー ① ブランチ名を自分で考える or Claudeに命名してもらう(タスク説明が必要)← おすすめ ② irie add feat/xxx でworktree作成 ③ cd で移動 ④ claude を起動してタスクをまた伝える 手順が多い / タスク説明を二度入力 irie start-task なら $ irie start-task "フッターにirie demoという文言を記載" ブランチ名を決定中... → feat/add-irie-demo-footer-text worktreeを作成中... ✔ セットアップ完了 Claude Codeを起動中... (タスク情報付きでClaudeが作業開始) ✔ Claudeがブランチ名を自動命名 ✔ worktree作成 + Docker環境構築 ✔ タスク情報を引き継いでClaude Code起動 ✔ チケットURLにも対応 — MCPでチケット内容を取得し命名・作業に反映
  18. 他ツールとの比較 (2026年2月時点) 機能 irie gtr wtp gwq phantom Docker +

    Traefik連携 ✅ - - - - 共有DB管理 ✅ - - - - Bare構造 clone/convert ✅ - - - - AI連携 (Claude Code) ✅ ✅ - ✅ ✅(MCP) fzf / peco対応 ✅ - - ✅ ✅ エディタ連携 ✅ ✅ - - ✅ post-setup フック ✅ ✅ ✅ - -
  19. Get Started $ git clone [email protected]:ode1022/irie.git ~/.irie # .bashrc や

    .zshrc に追加 export PATH="$HOME/.irie/bin:$PATH" eval "$(irie shell-init)" # 補完をインストール(オプション) irie completion install GitHub: github.com/ode1022/irie Demo: github.com/ode1022/irie-demo-laravel (irie設定済みLaravelアプリ / すぐに試せます) インストール & セットアップ