はじめに
生成 AI にソースコードを解析させる際、プロジェクトが多数のファイルに分かれていると、ファイル数制限やコンテキスト分断が問題になります。AiSm は、プロジェクトを構成する複数のソースファイルを一つのテキストへ統合し、生成 AI へコンテキストを一括で渡すために開発したツールです。本記事では、学習・検証用として作成した Minimum 版を紹介します。
本ツールは Windows 環境で動作し、ドラッグ&ドロップのみで複数のテキストファイルを生成 AI に渡しやすい形式へ統合できます。また、ロジックの大部分を単一のヘッダーファイルへ集約しており、構造の分かりやすさと拡張性を重視しています。
開発の動機
生成 AI を利用する際、一度に送信できるファイル数やファイルサイズには制限があります。私は日常的にコードを生成 AI に提示して解析や修正を依頼していますが、毎回ファイル数やサイズの制限を気にしながら分割して送る必要があり、非常に手間でした。
そこで、ドラッグ&ドロップで複数のファイルを一括結合し、生成 AI へ送信しやすい形式に変換するツール「AiSm」を自作しました。このツールは、生成 AI との対話をより円滑に進め、私の「生成 AI との共同作業」の効率を最大化するために生まれたものです。
実装のポイント
1. ロジックをヘッダーに集約
処理の実体となる AS_Fnc_M.inc に、ドラッグ&ドロップの処理やファイル結合ロジックを集約させました。これにより、メインダイアログのコードがすっきりとしています。
2. 安全なバイナリ判定
テキスト結合ツールであるため、バイナリファイルが混入した際に誤動作しないよう、読み込み時にヌル文字をチェックしてスキップするようにしています。
// AS_Fnc_M.inc より抜粋
inline bool AS_IsBinaryFile(LPCTSTR pathName)
{
// 先頭 1024 バイトにヌル文字が含まれるか判定
// ...
}
3. 日時付きのユニークなファイル名生成
結合結果は %TMP%\AiSm_M\ に出力されます。ファイル名には現在日時を付与することで、何度もマージを行っても上書きミスが起きないようにしました。
4. 拡張性を考慮した設計方針
AiSm は、AppWizard が生成する標準的な MFC コードを一切改変せずに、機能の切り替えが可能な「非侵襲的(Non-intrusive)」な設計を採用しています。以下のようにヘッダーを条件分岐で差し替えるだけで、最小構成から Full 版へとシームレスに機能拡張できる構成にしています。
#ifdef AISM_MIN
#include "AS_Fnc_M.inc" // 最小構成のロジック
#else
#include "AS_Fnc_F.hxx" // 拡張版のロジック
#endif
このように、既存のプロジェクト構成を崩さずに機能のアップデートが可能です。この設計は、長期的なメンテナンスを考慮した MFC 開発における私のベストプラクティスです。
使い方
- アプリを起動
- 結合したいファイルをリストへドラッグ&ドロップ
-
[マージ]ボタンを押す - 自動的にエクスプローラーが開き、結合されたファイルを確認できます
ソースコードと配布
本ツールのプロジェクト一式および、各ソースファイルの構成内容は以下より確認・ダウンロード可能です。
- プロジェクト一式: AiSm0608.zip のダウンロード
- プロジェクト構成ファイル: AiSm_20260608.txt
※ビルドには Visual Studio または Visual C++ 環境が必要です。
生成 AI に読み込ませるための活用ステップ
本ツールで結合したファイルは、生成 AI との対話においてプロジェクト全体のコンテキストを一度に伝えることを目的としています。複数のソースファイルを単一のテキストへ統合することで、ファイル単位でアップロードする手間を削減できます。
配布しているプロジェクト構成ファイル AiSm_20260608.txt と、主要コードのみを結合した AiSm_20260609.txt は、実際にツールで結合した出力サンプルになります。
以下の手順で、AI との連携を試してみてください。
-
結合サンプルの確認: 配布している AiSm_20260611.txt 等をブラウザで開きます
-
内容のコピー: ブラウザ上で表示されたテキスト全体をコピーします
-
AI プロンプトへの貼り付け: 使用している生成 AI の入力欄にそのまま貼り付け、以下のように指示を出します
「このコード一式を解析し、機能拡張の提案をしてほしい」
「この MFC アプリのドラッグ&ドロップ処理を解説してほしい」
これだけで、AI はプロジェクトの全体構造を瞬時に理解し、的確な回答を返してくれます。ファイルごとにアップロードする手間が省けるため、コーディングの試行錯誤が格段にスムーズになります。
Full 版の公開と配布について
本ツールには学習・検証用の「Minimum 版」に加え、実用性を重視した「Full 版」を開発いたしました。Full 版は Shift-JIS および UTF-8 に対応した実行ファイル形式で提供しております。
- Full 版の配布先: AiSm (Full 版) 配布ページ
ぜひ用途に合わせて使い分けてください。
免責事項
本ツールおよび公開しているソースコードの使用により生じたいかなる損害についても、著作者は一切の責任を負いません。ご利用の際は、配布パッケージに同梱の LICENSE.txt を参照し、ご自身の責任において利用してください。引用・改変時は https://mish.work/ を明記してください。
(C) 2026 Iwao. All Rights Reserved.
※ 本記事の構成および文章の作成には、生成 AI を利用しています。
