🎾

複数のリポジトリを跨いでAIに作業させる方法

に公開1

困りごと

マイクロサービスアーキテクチャや、フロントエンド・バックエンド・インフラなど複数のリポジトリに分かれたプロジェクトで開発していると、以下のような場面に遭遇します:

  • バックエンドのAPI仕様を見ながらフロントエンドのコードを書きたい
  • 共通ライブラリの実装を参照しながら別プロジェクトを開発したい
  • 複数のマイクロサービス間でインターフェースを確認しながら統合コードを書きたい
  • ドキュメントリポジトリを参照しながら実装を進めたい

例えば、個人開発プロジェクトでは以下のような構成になっています:

~/git/github.com/
├── op-tennis/
│   ├── Backend/                 # APIサーバー
│   ├── Frontend/                # フロントエンド
│   └── wiki/                    # ドキュメント
└── storybookjs/
    ├── storybook/               # Storybook本体
    └── mcp/                     # MCPサーバー

このような環境で、AIコーディングアシスタント(Claude Code、Cursor、GitHub Copilotなど)を使う場合、1つのリポジトリしかコンテキストに含められないという制約がありました。

具体的な課題

  1. コンテキストの分断

    • リポジトリAで作業中にリポジトリBの実装を参照したい
    • AIに「あのリポジトリのコードを見て」と指示できない
    • いちいちファイルをコピペして共有する必要がある
  2. 作業の非効率性

    • リポジトリを切り替えるたびにAIコーディングアシスタントのセッションが分断される
    • 同じ説明を何度も繰り返す必要がある
    • 複数リポジトリ間の整合性を保つのが困難
  3. ナレッジの散在

    • API仕様はBackendリポジトリにある
    • フロントエンドの実装はFrontendリポジトリにある
    • ドキュメントはwikiリポジトリにある
    • これらを統合してAIに理解させるのが大変

解決策の概要

この問題を解決するために、以下の3つのツールを組み合わせた環境を構築しました:

  1. ghq: 全リポジトリを統一的に管理
  2. VSCode マルチワークスペース: 複数リポジトリを1つのウィンドウで開く
  3. AIコーディングアシスタント(Claude Code、Cursorなど): 親ディレクトリを開いて複数リポジトリを同時にコンテキスト化

解決方法の詳細

1. ghqによるリポジトリ管理

ghqは、Gitリポジトリをホスト名・組織名・リポジトリ名の階層構造で統一的に管理するツールです。通常のgit cloneだと保存場所がバラバラになりますが、ghqなら~/git配下に統一されるため、複数リポジトリを跨いだ作業がしやすくなります。

インストール

brew install ghq

設定

# リポジトリの保存先を設定
git config --global ghq.root ~/git

使い方

# リポジトリのクローン
ghq get git@github.com:op-tennis/Backend.git
# → ~/git/github.com/op-tennis/Backend にクローンされる

ghq get git@github.com:storybookjs/storybook.git
# → ~/git/github.com/storybookjs/storybook にクローンされる

# リポジトリ一覧
ghq list

# リポジトリのパスを取得
ghq list -p | grep op-tennis

ディレクトリ構造

ghqを使うと、全てのリポジトリが~/git配下に統一的に配置されます。ghqではホスト名/組織名/リポジトリ名の階層構造で管理されます。

~/git/
└── github.com/
    ├── op-tennis/
    │   ├── Backend/
    │   ├── Frontend/
    │   └── wiki/
    ├── storybookjs/
    │   ├── storybook/
    │   └── mcp/
    └── other-user/
        └── some-project/

参考記事

2. VSCode マルチワークスペースの活用

VSCodeは、1つのウィンドウ内で複数のフォルダ(リポジトリ)を同時に開くことができます。

方法1: コマンドパレットから追加

  1. VSCodeでリポジトリAを開く
  2. Cmd+Shift+P → "Workspace: Add Folder to Workspace"
  3. リポジトリBを選択
  4. 同じウィンドウ内に複数のリポジトリが表示される

方法2: 親ディレクトリを開く

より簡単な方法は、複数のリポジトリを含む親ディレクトリを開くことです。

# 例:op-tennisプロジェクトの全リポジトリを開く
code ~/git/github.com/op-tennis

# 例:GitHub上の全プロジェクトを開く
code ~/git/github.com

この方法であれば、サブディレクトリとして全てのリポジトリが表示され、ファイル検索や参照が容易になります。

参考記事

3. AIコーディングアシスタントでの活用方法

Claude CodeやCursorなど、開いているディレクトリ配下の全ファイルをコンテキストとして扱えるAIコーディングアシスタントでは、以下のように活用できます。本記事ではClaude Codeを例に説明します。

基本的な使い方

# 方法1: 親ディレクトリを開く
cd ~/git/github.com
code .

# VSCodeでClaude Codeを起動
# → github.com配下の全リポジトリがコンテキストに含められる
# 方法2: 特定のプロジェクトグループのみを開く
cd ~/git/github.com/op-tennis
code .

# → op-tennis配下のリポジトリのみがコンテキストに

AIへの指示例

親ディレクトリを開いている状態では、以下のような指示が可能になります:

「op-tennis/Backend のAPI仕様を見て、
 op-tennis/Frontend のAPIクライアントを実装して」

「storybookjs/storybook の実装パターンを参考に、
 op-tennis/Frontend のStorybookセットアップを修正して」

「op-tennis/wiki のAPI仕様書と、
 op-tennis/Backend の実装が整合しているか確認して」

Claude Codeは指定されたパスのファイルを自動的に読み取り、複数リポジトリを跨いだコード生成・修正を行えます。

作業環境の例

実際の作業では、以下のようにディレクトリ構造を活用します。

作業パターン1: プロジェクト単位で開く

op-tennisプロジェクトのように、関連するリポジトリがサブディレクトリとしてまとまっている場合:

cd ~/git/github.com/op-tennis
code .

VSCodeでは以下のように表示されます:

op-tennis/
├── Backend/           ← バックエンドAPI
├── Frontend/          ← フロントエンド
└── wiki/              ← ドキュメント

Claude Codeで「Frontendのコンポーネントを、BackendのAPIに合わせて修正して」と指示すれば、両方のリポジトリを参照して作業してくれます。

作業パターン2: 複数プロジェクトを開く

複数のプロジェクトを跨いで作業する場合:

cd ~/git/github.com
code .

VSCodeでは以下のように表示されます:

Claude Codeには以下のように指示できます:

実践例

例1: APIとフロントエンドの統合開発

シナリオ: バックエンドのAPI仕様に合わせてフロントエンドのフックを実装する

# 1. プロジェクトルートを開く
cd ~/git/github.com/op-tennis
code .

# 2. Claude Codeで指示

Claude Codeへの指示:

Backend/api/user.go のAPIエンドポイントを見て、
Frontend/src/hooks/useUser.ts を
そのエンドポイントに合わせて実装してください。

結果: Claude Codeがバックエンドのコードを読み取り、フロントエンドのフックを適切に実装してくれます。

例2: 外部ライブラリの実装パターンを参考にする

シナリオ: 有名OSSのStorybookリポジトリの実装パターンを参考に、自プロジェクトをセットアップする

# 1. GitHub全体を開く
cd ~/git/github.com
code .

# 2. Claude Codeで指示

Claude Codeへの指示:

storybookjs/storybook のテストセットアップと設定ファイルを参考に、
op-tennis/Frontend に同様のテスト環境を構築してください。

結果: 複数のリポジトリを跨いで実装パターンを参考にできます。

例3: ドキュメントを参照しながらコード実装

シナリオ: API仕様書を見ながら新しいエンドポイントを実装

cd ~/git/github.com/op-tennis
code .

Claude Codeへの指示:

wiki/api-reference/user-api.md のユーザー作成APIの仕様を見て、
Backend/handler/user.go に
その仕様に従ったハンドラーを実装してください。

結果: ドキュメントに従った正確な実装が可能になります。

まとめ

ghq + VSCode(Cursor) マルチワークスペース + AIコーディングアシスタントの組み合わせにより、複数のリポジトリを跨いだAI支援開発が可能になりました。

解決のポイント:

  1. ghqで全リポジトリを~/git配下に統一的に管理
  2. VSCode(Cursor)で親ディレクトリまたは複数フォルダを同時に開く
  3. AIコーディングアシスタント(Claude Code、Cursorなど)が開いているディレクトリ配下の全リポジトリをコンテキストとして扱う

この方法により、マイクロサービスやモノレポ以外の複数リポジトリ構成でも、AIコーディングアシスタントを最大限に活用できるようになります。

参考

Discussion

shiro_kuma_sanshiro_kuma_san

私の周りのエンジニアに紹介したところ、下記のフィードバックが返ってきました

  • 複数リポジトリで最新の状態にしたい場合は、 gitbatchとかmulti-gitter でdefaultのブランチの最新を取得するようにできる
  • Claude Codeを使っている場合はワーキングディレクトリ(参考にしたいディレクトリ)を追加できる /add-dir というコマンドを使う
  • 個々のリポジトリをサブモジュールにしたリポジトリを1つ作ってそこで作業する