AIにソースコードを読ませるのが超快適に!プロジェクトをMarkdown化する自作ライブラリをNuGetで初公開しました

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_modulesbin など、AIに読ませたくない不要なファイルを除外できます。
💡 ポイント:
CLIツールとしてファイルに出力することもできますが、ProjectAnalyzer.Core をDLLとして自作アプリに組み込めば、ファイルI/Oを発生させずに「メモリ上で直接Markdown文字列を受け取る」ことが可能です。自作のAI連携ツールを作る際に非常に便利です!

【体験談】初めてNuGetパッケージを公開してみた!

これまで自分用にツールを作ることはありましたが、せっかくなので誰でも簡単にインストールできるように、今回初めてNuGetギャラリーへのパッケージ公開に挑戦してみました。

「なんだか難しそう…」と勝手に敷居を高く感じていたのですが、やってみると驚くほど簡単でした。

  1. .csproj ファイルに、パッケージID、バージョン、作者名、説明文、ライセンス情報などを追記する。
  2. コマンドプロンプトで dotnet pack -c Release を実行する。
  3. 生成された .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で作成しています。

コメント

このブログの人気の投稿

Power Automateでファイル名から拡張子を取得

PowerAppsで座席表を作成する

Power AutomateでTeamsのキーワードをトリガーにする