目次
はじめに
Claude Codeなど有料のAIコーディング支援ツールを使わずに、ブラウザの生成AIを活用しているユーザーにとって、ソースコードを1ファイルずつ貼り付ける手間や、AIにプロジェクト全体の前提を理解してもらえないもどかしさは、よくある悩みではないでしょうか。
ファイル数が増えるほど、この手間はどんどん大きくなっていきます。今回は、そんな悩みを解決してくれるRepomixというCLIツール(コマンドラインで操作するツール)について、備忘録としてまとめます。
Repomixとは
Repomixは、Gitリポジトリ内のソースコードをAI向けにまとめてくれるCLIツールです。
リポジトリ全体を1つのファイルへ整形して出力することで、ChatGPTやClaudeなどの生成AIへまとめて渡せるようになります。
例えば、以下のような構成のプロジェクトがあるとします。
src/
Main.java
User.java
Product.java
README.md
このプロジェクトに対してRepomixを実行すると、以下のようにファイル名付きで1つのファイルへまとめてくれます。
File: README.md
--------------------
(READMEの内容)
File: src/Main.java
--------------------
(Main.javaの内容)
File: src/User.java
--------------------
(User.javaの内容)
File: src/Product.java
--------------------
(Product.javaの内容)
AIはこの形式を見ることで、ファイル構成も含めてプロジェクト全体を理解できるようになります。そのため、コードレビューや設計相談といった、複数ファイルの関係性を踏まえた質問がしやすくなります。
Repomixは特定のAI専用ではなく、出力したファイルを読み込めるAIであれば利用できます。
準備
各ユースケースに入る前に、まずはRepomixを使えるようにするための準備を済ませておきます。
【Node.jsの確認】
RepomixはNode.js上で動作するCLIツールです。そのため、利用するには事前にNode.js(JavaScriptをブラウザ以外の環境でも動かせるようにする実行環境)がインストールされている必要があります。
インストールしていない場合は、Node.js公式サイトからダウンロードするか、以下のコマンドでインストールできます。
Windowsの場合は以下のコマンドを実行します。
winget install OpenJS.NodeJS.LTS
Macの場合は以下のコマンドを実行します。
brew install node
ターミナルで以下を実行して、インストール済みかどうかを確認します。
node -v
バージョンが表示されればインストール済みです。
v22.17.0
npmも合わせて確認しておきます。
npm -v
10.9.2
表示されればnpm(Node.jsのパッケージ管理ツール)も準備完了です。
【インストール方法】
Node.jsが利用できる状態であれば、以下のコマンドでRepomixをグローバルインストールできます。
npm install -g repomix
インストール後は、バージョンを確認して成功しているかチェックします。
repomix --version
1.8.0
一時的に試したいだけの場合は、グローバルインストールをせずにnpx(パッケージをインストールせずその場で実行できるコマンド)で利用する方法もあります。
npx repomix
初めて試す場合や、会社PCなど環境を汚したくない場合には、こちらの方法が向いています。
macOSの場合も流れは同じです。Homebrew(macOS向けのパッケージ管理ツール)を利用している場合は、以下の手順でNode.jsを導入してからRepomixをインストールできます。
brew install node
npm install -g repomix
【基本的な実行方法】
準備ができたら、実際にプロジェクトのルートディレクトリへ移動して実行してみます。
cd sample-project
repomix
実行すると、以下のようなファイルが生成されます。
repomix-output.xml
生成されたファイルの中身は、以下のような形式になっています。
<file path="README.md">
README内容
</file>
<file path="src/Main.java">
public class Main {
}
</file>
repomix単体のコマンドで、プロジェクト全体のファイル名とソースコードが1つのXML(eXtensible Markup Language/エクステンシブル・マークアップ・ランゲージ:データの構造と内容を人間にも機械にも読みやすいタグ形式で記述するためのマークアップ言語)ファイルにまとめられます。これがこの後のすべてのユースケースの土台になります。
コードレビューに使う
【出力形式を選ぶ】
コードレビューを依頼する場合、AIに読み込ませることが目的なので、基本的にはデフォルトのXML形式のままで問題ありません。XMLは構造化されているため、AIが解析しやすい形式です。
repomix
一方で、自分の目でも内容を確認したい場合は、Markdown形式に変更すると読みやすくなります。
repomix --style markdown
出力されるファイル名を変更したい場合は、-oオプションを使います。
repomix -o project-context.xml
2つのオプションを組み合わせれば、1回のコマンドで実行できます。
repomix --style markdown -o project-context.md
【レビュー対象から不要なファイルを除外する】
コードレビューを依頼する前に、レビュー対象に含めたくないファイルを除外しておくことがおすすめです。
Repomixはデフォルトで.gitignoreを考慮する動きになっています。例えば以下のような.gitignoreがあれば、これらのファイルは自動的に対象外になります。
node_modules/
dist/
.env
*.log
ただし、Gitでは管理したいものの、AIには渡したくないファイルというケースもあります。そのような場合は、Repomix専用の除外ファイルである.repomixignoreを利用します。
node_modules/
build/
target/
*.png
*.jpg
.env
.gitignoreと.repomixignoreの違いは、以下のように整理できます。
| 項目 | .gitignore | .repomixignore |
|---|---|---|
| 目的 | Git管理対象外にする | AIへ渡さない |
| 対象 | Git | Repomix |
| 用途 | 開発全般 | AI連携専用 |
一時的に除外したい場合は、コマンドから直接指定することもできます。
repomix --ignore "src/test/**"
コードレビューの対象にAPIキーやパスワードなどの機密情報を含むファイル(application.propertiesやcredentials.jsonなど)が混ざっていないか、除外設定と合わせて必ず確認しておくと安心です。
各ファイル名・拡張子の意味が気になる方はこちら
-
.gitignore: Gitに管理してほしくないファイルを指定するための設定ファイル -
.env: APIキーやパスワードなど、外部に漏らしたくない情報をまとめて書いておくファイル -
*.log: アプリケーションの動作記録が書き込まれるログファイル -
*.png: 画像を保存するための拡張子で、主にイラストやアイコンなどに使われる -
*.jpg: 画像を保存するための拡張子で、写真データによく使われる -
.repomixignore:Repomixにだけ読み込ませたくないファイルを指定するための設定ファイル -
application.properties: Spring Bootなどのアプリケーションで使う設定値をまとめて書いておくファイル -
credentials.json: 認証に使う秘密情報をまとめて保存しておくファイル
【AIへのレビュー依頼の出し方】
出力ファイルをChatGPTやClaudeへアップロードしたら、以下のように依頼内容を具体的に伝えます。
このプロジェクトをコードレビューしてください。
以下の観点で確認してください。
・可読性
・保守性
・設計上の問題
・命名規則
・セキュリティリスク
改善案も提示してください。
単に「見てください」とだけ伝えるよりも、確認してほしい観点を箇条書きで示したほうが、AIはクラス同士の関係も踏まえた具体的な回答を返しやすくなります。
バグ調査に使う
「原因のわからないエラーを調査したい」という場面での使い方です。バグ調査では、コードレビューのとき以上に「AIに渡す情報量」の調整が重要になってきます。
【トークン数を確認する】
AIには、一度に処理できる文章量に上限があります。この上限は、トークン(AIが文章を処理するときの最小単位)という単位で管理されています。例えばHello worldという短い文章でも、AI内部では複数のトークンとして処理されます。
Repomixでは、以下のコマンドで出力全体のトークン数を確認できます。
repomix --token-count
Total tokens: 85000
バグ調査の場合、プロジェクト全体を渡すよりも、エラーに関係しそうな部分に絞ったほうが、AIが本当に必要なコードを見失わずに済みます。
【調査対象を絞り込む】
対象ディレクトリを限定したい場合は、パスを指定して実行します。
repomix src/main/java
例えば、認証まわりのエラーだけを調査したい場合は、以下のように認証関連のディレクトリだけを対象にできます。
repomix src/auth/
【エラー内容を具体的に伝える】
出力ファイルを渡すだけでなく、発生している症状を具体的に伝えることも重要です。
このプロジェクトで発生している問題を調査してください。
症状
〇〇というエラーが発生しています。
原因になりそうな箇所を特定し、
修正方法を説明してください。
「症状」に続けて具体的なエラー内容を書くことで、AIは関連するクラスを横断的に見ながら原因を絞り込みやすくなります。
設計相談・リファクタリングに使う
「設計について相談したい」「コードをリファクタリングしたい」という場面です。この用途では、AIへの伝え方を工夫することで回答の質が大きく変わってきます。
【AIに役割を与える】
AIへ役割を指定すると、回答の方向性を調整しやすくなります。
あなたはシニアエンジニアです。
保守性と拡張性の観点でこのプロジェクトをレビューしてください。
初心者向けの説明を求めたい場合は、以下のように役割を変えると回答のトーンも合わせやすくなります。
あなたはプログラミング講師です。
初心者にも理解できるように説明してください。
【段階的に理解を深めてもらう】
大きなプロジェクトの場合、最初からすべてを質問するよりも、段階的に進めたほうが効果的です。
段階的に理解を深める4ステップ
| No. | ステップ | 目的 |
|---|---|---|
| 1 | 全体把握 | プロジェクトの全体像をつかむ |
| 2 | 構造理解 | 主要クラスの責務を整理する |
| 3 | 詳細確認 | 特定モジュールを深掘りする |
| 4 | 改善提案 | 設計上の問題を洗い出す |
Step 1: 全体像を把握する
まずプロジェクト全体の構造を聞きます。
このプロジェクトの全体像を説明してください。
目的: その後の質問の「地図」を作る。いきなり細部を聞かず、全体を把握しておくことで次のステップがスムーズになります。
Step 2: 構造を理解する
主要なクラスとその責務を整理します。
主要なクラスと責務を説明してください。
目的: 全体像を把握した上で、どのクラスが何を担っているかを整理する。
Step 3: 詳細を確認する
気になるモジュールを深掘りします。
UserServiceの処理を詳しく説明してください。
目的: 全体→構造と把握した後に詳細を聞くことで、文脈のある理解ができる。
Step 4: 改善点を洗い出す
設計上の問題を指摘してもらいます。
改善できる設計上の問題を指摘してください。
目的: 全体を理解した後に改善提案を求めることで、的外れな指摘を防ぐ。
【リファクタリングの依頼例】
具体的な改善を依頼する場合は、以下のように改善してほしい観点を挙げます。
このコードをリファクタリングしたいです。
以下を改善してください。
・責務分割
・重複コード削除
・設計改善
修正版コードも提示してください。
継続的な運用
Repomixは、その場限りの利用だけでなく、継続的にプロジェクトを理解するための運用にも活用できます。
【定期的にAI向けドキュメントを作成する】
生成したファイルを、以下のようにプロジェクト内へ保存しておく運用も可能です。
docs/
└── project-context.xml
こうしておくことで、新しくチームに加わったメンバーへの説明資料や、設計確認の際の参照資料として活用できます。
【プロジェクトの規模に応じて使い分ける】
プロジェクトの規模によって、渡す範囲を調整することもポイントです。
小規模なプロジェクトであれば、プロジェクト全体をそのまま渡します。
repomix
中規模なプロジェクトであれば、機能単位で分割します。
repomix src/user/
大規模なプロジェクトであれば、目的ごとに分けて渡します。
認証機能を調査する場合
repomix auth/
商品機能を調査する場合
repomix product/
プロジェクトが大きくなるほど「全部渡せばいい」とは限らなくなってくるため、目的に応じて対象範囲を調整する習慣をつけておくと、AIとのやり取りがスムーズになっていきます。
まとめ
Repomixは、コードレビューやバグ調査、設計相談といった場面で、プロジェクト全体をAIに理解させるための橋渡しとなるツールです。対象範囲を絞り込み、目的を明確に伝えることを意識すると、AIをより効果的に活用できます。
【オプション一覧】
Repomixにはこの記事で紹介した以外にも、便利なオプションが数多く用意されています。よく使われる代表的なオプションを一覧にまとめました。太字になっている項目は、本記事内ですでに登場したオプションです。
| 項目名 | 用途・役割 | 短縮形 | 説明 |
|---|---|---|---|
--style |
出力形式の指定 | なし | xml、markdown、json、plainから出力形式を選べます |
--output |
出力ファイル名の指定 | -o |
生成されるファイルの名前やパスを指定できます |
--ignore |
除外パターンの指定 | -i |
特定のファイルやディレクトリを一時的に除外できます |
--token-count |
トークン数の表示 | なし | 出力全体のトークン数を確認できます |
--version |
バージョンの確認 | なし | インストールされているRepomixのバージョンを表示します |
--include |
対象ファイルの絞り込み | なし | 指定したパターンに一致するファイルのみを対象にできます |
--compress |
コードの圧縮 | なし | Tree-sitter(構文解析ツール)を使い、実装の詳細を省略して要点のみを抽出します |
--remove-comments |
コメントの削除 | なし | 出力からコードコメントを取り除き、サイズを抑えられます |
--copy |
クリップボードへのコピー | なし | 生成した内容をそのままクリップボードにコピーできます |
--stdout |
標準出力への出力 | なし | ファイルを作らず、結果をそのまま標準出力に流せます |
--remote |
リモートリポジトリの指定 | なし | GitHub上のリポジトリを直接指定して取り込めます |
--init |
設定ファイルの生成 | なし |
repomix.config.jsonのひな形を作成できます |