AIにソースコードを読ませるのが超快適に!プロジェクトをMarkdown化する自作ライブラリをNuGetで初公開しました
最近、ChatGPTやClaude、NotebookLMなどのAIツールに、自分が書いているソースコードを読み込ませて「このバグの原因は?」「この機能をリファクタリングして」とお願いすることが増えましたよね。
でも、複数のファイルにまたがるプロジェクトをAIに渡すとき、「一つ一つのファイルを開いてコピペする」のが地味に面倒ではありませんか?
さらに、AIにシステム全体の文脈を理解してもらうには、「ファイルの中身」だけでなく「フォルダ構成(ディレクトリツリー)」も一緒に教えたいところです。
そんな手間を自動化して、プロジェクト全体をAIが読みやすい「1つのMarkdown形式」にシュッとまとめてくれるC#ライブラリ、「Project Analyzer」を自作しました!
さらに今回は、このライブラリを自身初のNuGetパッケージとして一般公開してみたので、その機能と公開してみた感想をご紹介します。
Project Analyzer とは?
Project Analyzer は、指定されたプロジェクトフォルダやGitHubリポジトリの構造と内容を分析し、AI (LLM) のコンテキストとして利用しやすいようにMarkdownとして出力・取得できる.NET製のライブラリです。
主な機能
- 📁 フォルダツリーの生成: プロジェクトの階層構造をツリー形式のテキストで出力します。
- 📄 統合されたコンテキストの生成: プロジェクト内の全ソースファイルを、シンタックスハイライトや相対パス付きのMarkdownに集約します。
- 🐙 GitHubリポジトリの直接分析: ローカルフォルダだけでなく、GitHubのリポジトリURLを指定するだけで、自動でクローンして分析してくれます。
- ⚙️ 柔軟な除外設定:
.projectanalyzerignoreファイルを置くことで、node_modulesやbinなど、AIに読ませたくない不要なファイルを除外できます。
CLIツールとしてファイルに出力することもできますが、
ProjectAnalyzer.Core をDLLとして自作アプリに組み込めば、ファイルI/Oを発生させずに「メモリ上で直接Markdown文字列を受け取る」ことが可能です。自作のAI連携ツールを作る際に非常に便利です!
【体験談】初めてNuGetパッケージを公開してみた!
これまで自分用にツールを作ることはありましたが、せっかくなので誰でも簡単にインストールできるように、今回初めてNuGetギャラリーへのパッケージ公開に挑戦してみました。
「なんだか難しそう…」と勝手に敷居を高く感じていたのですが、やってみると驚くほど簡単でした。
.csprojファイルに、パッケージID、バージョン、作者名、説明文、ライセンス情報などを追記する。- コマンドプロンプトで
dotnet pack -c Releaseを実行する。 - 生成された
.nupkgファイルを、NuGetのサイトにログインしてアップロードするだけ!
たったこれだけの手順で、世界中の.NET開発者が dotnet add package で私の作ったライブラリを使えるようになるのは、とても感動的でした。自分のコードが広く使われる可能性が広がるので、自作ライブラリがある方はぜひ一度NuGet公開にチャレンジしてみることをおすすめします!
▼ 公開したNuGetのページはこちら
https://www.nuget.org/packages/ProjectAnalyzer.Core
▼ ソースコード(GitHubリポジトリ)はこちら
https://github.com/flying-YT/ProjectAnalyzer
使い方(C#コードからの呼び出し)
それでは、実際に自作の.NETプロジェクトに組み込んで使う方法をご紹介します。
まずはNuGetからパッケージをインストールします。
dotnet add package ProjectAnalyzer.Core
インストールできたら、以下のように数行のコードを書くだけで分析が実行できます。
ここでは、結果をファイルに出力せず、プログラム内で文字列として取得する例を紹介します。
using ProjectAnalyzer.Core;
using ProjectAnalyzer.Core.Utils;
// 1. 設定の読み込み
var settings = SettingsLoader.Load(
projectPath: "C:\\path\\to\\your\\project", // ※ここにGitHubのURLを指定しても動きます!
outputPath: "",
outputToFile: false, // falseにするとファイル出力せずメモリに保持します
omitCodeBlockTicks: false
);
// 2. 分析処理の実行
using var analyzer = new Analyzer(settings);
AnalyzerResult result = analyzer.Analyze();
// --- 結果の利用 ---
// プロジェクトのフォルダ構造ツリー
Console.WriteLine(result.ProjectTree);
// 各ファイルの内容をまとめたMarkdownテキスト
foreach (var context in result.ProjectContexts)
{
Console.WriteLine(context);
}
たったこれだけで、対象プロジェクトの全コードが綺麗にフォーマットされたMarkdownとして result の中に格納されます。
あとはこの文字列を、OpenAIのAPIに投げたり、クリップボードにコピーしたりと、自由にお使いいただけます。
さいごに
今回は、AIへのコンテキスト渡しを爆速にするライブラリ「Project Analyzer」の紹介と、初めてのNuGetパッケージ公開の体験談をお届けしました。
私自身、このツールを使ってNotebookLMなどのAIツールにプロジェクトを丸ごと読み込ませるようになってから、開発の壁打ちやコードの解読が圧倒的に楽になりました。
特に、GitHubのURLを直接渡せる機能は、OSSのコードリーディングをする際にも重宝しています。
もし「AIにコードを読ませる作業を効率化したい」「自作のAIエージェントにプロジェクト読み込み機能をつけたい」という方がいらっしゃいましたら、ぜひ ProjectAnalyzer.Core を試してみてください!
今回はこの辺で、ではまた!
※この記事はAIで作成しています。
コメント
コメントを投稿