Note ! 本記事は公開から1年以上経過しています。 ChatGPT のモデル名・添付ファイル可否・コンテキスト上限は記事執筆(o1 / o1 Pro 言及)以降も変わっています。同じワークフローがそのまま使えない場合があります。

  • gpt-text-read 自体は GitHub の README とリリースで最新の挙動を確認してください(UI や設定ファイル形式が更新されている可能性)。
  • 秘密情報を JSON に含めない注意は不変ですが、クラウド AI への貼り付けは組織ポリシーで禁止されていることが多いです。
  • Copilot・エージェント型ツールの普及で、「リポジトリ全体を読ませる」手段も増えており、記事の前提は古く見える場合があります。

最近はGPTでコードを書くのが当たり前になり、プログラマーでも自力でコードを書かない人が増えてきました。

プログラムができなくてもGPTのおかげでそれなりに形にできる時代です。

O1などのAIはどんどん進化していますが、O1など最新のバージョンはファイルをアップできなかったり、Web情報を直接読み込めなかったりと制限もあります(いずれ解消されるはずです)。

このまま進めば1~2年で、人間が関わらなくてもAIだけで解決できる課題が増えていくでしょう。私もRustで色々とアプリを作りますが、Cargo.tomlとmain.rsの概念しか知らない程度です。 問題は、生成してもらったプログラムが大きくなると、ChatGPT o1やo1 Proへ上手く伝えられなくなる点ですが、これも近々解消されると思います。プログラムができる人はGitHub Copilotなどのツールで、こうした初心者的な悩みもないでしょう。 そういったプログラムをChatGPT o1やo1 Proへ上手く伝えるためのツールを作りました。生成系AIしか使えない「ニセ自称プログラマー」向けに作ったのが「gpt-text-read」です。 フォルダ内のテキストファイルを正規表現でまとめてGUIに表示し、JSON形式でコピーや保存でき、そのままChatGPT o1やo1 Proへ貼り付けるとプロジェクト全体の情報をGPTへ伝えることができます。生成系AIしか使えない「ニセ自称プログラマー」には、とても便利です。 「gpt-text-read」はgitでもコードを公開しています。 (実はgitの使い方もよくわかっていないのは内緒です。) https://github.com/riragon/gpt-text-read

gpt-text-readを実際に使ってみよう

例えばこのような感じでプログラムをAIで開発しているとします。 プログラムも大きくなり分割して複数ファイルで構成されているとします。 アプリを起動します。 インターフェースが開きます。 プロジェクトがあるフォルダートップを選択します。 読み込むファイルを追加してゆきます。 読み込まないフォルダー(実行ファイルなどやログなど、プログラムと関係のない大量のファイルを含むものなど)を追加します。 読み込み実行をするとファイルを読み込みGPTが読みやすいjsonファイルに変換してくれます。あとはコピーして貼り付けるだけです。ツリー表示にチェックを入れると、フォルダー構成も出力してくれます。 GPTに聞くとファイル情報がしっかり読めたと回答がありました。これでプロジェクト全体を伝えやすくなりました。地味に便利です。 秘密の鍵や、外部に漏れるとよろしくない情報がある場合は、よく注意して対象ファイルを選択してください。

gpt-text-readはgitでもコードを公開しています。 https://github.com/riragon/gpt-text-read

プロジェクト概要

このプロジェクト「gpt-text-read」は、フォルダ内のテキストファイルを収集し、 その内容をJSON形式で表示・コピー・テキスト出力できるGUIツールです。 ユーザーは正規表現パターンを使って対象ファイルや除外ファイルを柔軟に指定できます。 また、GUI上でフォルダを選択・ファイルを追加・フォルダ除外などを行うことで、 簡単にパターンの編集を行うことができます。

主な機能

  • プロジェクトディレクトリの選択:プロジェクト選択」ボタンを使ってフォルダを選ぶと、 指定フォルダ内にtext-read-settings.txtがない場合は初期設定ファイルを自動生成します。 存在する場合は、その内容(ファイルマッチパターンや出力先パスなど)を読み込みます。
  • ファイル追加ボタン:ファイル追加」ボタンで実際のファイルを選択すると、 そのファイル名にマッチする正規表現パターン(^ファイル名$)が text-read-settings.txtのIncludeパターンへ追記されます。
  • フォルダ除外ボタン:フォルダ除外」ボタンを押すと、フォルダ名に対する除外パターン(^FolderName/.*$)を text-read-settings.txtのExcludeパターンへ追記できます。 デフォルトでは.gittargetが自動的に除外パターンに含まれます。
  • ツリー表示チェック:ツリー表示」チェックボックスを有効にすると、 フォルダの階層構造をテキストツリーとして取得できます。
  • 設定保存ボタン:設定保存」ボタンにより、現在GUIで編集したパターン内容をtext-read-settings.txtへ書き戻します。 また、テキスト出力した際も、出力先フォルダがOUTPUT_PATHとして保存されます。
  • 読み込み実行ボタン:読み込み実行」ボタンで、現在のパターンにマッチするファイルを再帰的に探索し、 対象ファイルの内容をJSON形式でウィンドウ上に表示します。 (ツリー表示がONならディレクトリ構造も表示します)
  • コピー機能:コピー」ボタンで、表示されたJSONテキストをクリップボードへコピーできます。
  • テキスト出力:テキスト出力」ボタンで、表示中のJSONテキストを任意のパスに出力できます。 出力先フォルダがtext-read-settings.txtOUTPUT_PATHに自動保存され、 次回以降の保存先の初期値として利用されます。

利用手順

  1. プロジェクトフォルダを選択する:プロジェクト選択」ボタンを押し、対象とするフォルダをダイアログから選びます。 初回はtext-read-settings.txtが自動作成され、初期除外パターンやコメントが含まれます。
  2. ファイル追加・フォルダ除外・パターン編集を行う:ファイル追加」や「フォルダ除外」ボタンで実際のファイル・フォルダを追加/除外すると、 そのパターンがpattern_input(GUIエリア)に自動的に追加されます。 また、GUI上でパターンを手動編集することもできます。
  3. 設定を保存する:設定保存」ボタンで現在のパターンをtext-read-settings.txtへ保存します。
  4. 読み込みを実行する:読み込み実行」ボタンでパターンにマッチしたファイルを読み込み、 JSON形式で結果を表示します。 また、ツリー表示チェックがONの場合はディレクトリ構造が合わせて表示されます。
  5. コピーまたはテキスト出力: JSONをコピーしたい場合は「コピー」ボタンを押します。 テキストファイルとして出力したい場合は「テキスト出力」ボタンを押し、 出力先フォルダを指定します。その後の出力先は設定ファイルOUTPUT_PATHへ保存されます。

依存関係・ビルド

このプロジェクトはRustで開発されており、Cargo.tomlの例は以下の通りです:

[package]
name = "gpt-text-read"
version = "0.1.0"
edition = "2021"

[dependencies]
walkdir = "2"
regex = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
rfd = "0.8"
fltk = { version = "1", features = ["fltk-bundled"] }
chrono = "0.4"

cargo buildcargo runでビルド・実行できます。

コード構成

main.rsにGUIの初期化、ボタンコールバック、ファイルパターンの読み込み・保存、 およびファイル収集処理が記述されています。 text-read-settings.txtにはIncludeパターンとExcludeパターン、そしてOUTPUT_PATHが含まれ、 GUIからの編集によって内容が更新されます。 fileops.rsには、指定フォルダを再帰的に探索してマッチするファイルを集める機能や、 ディレクトリツリーを構築する機能が定義されています。 settings.rsには、text-read-settings.txtの読み書きロジックがあり、 Includeパターン・Excludeパターン・出力先パス(OUTPUT_PATH)を管理します。

関連記事