😺
Web版の生成AIに複数ファイルをファイル名付きで渡す小技
生成AIにコードレビューを依頼したり、複数のソースコードをまとめて処理させたい場面が増えています。IDE組み込みの生成AI環境を使っている人も多いと思いますが、契約の都合でWeb版しか使えない人がいるかもしれません。
Web版の生成AIにファイルを渡す場合、単にファイル内容を連結して渡すだけでなく、どのファイルの内容なのかをAIに明示することで、より的確なフィードバックや処理結果が期待できます。
実は、OSの標準コマンドを少し工夫するだけで、複数のファイルの内容を「ファイル名ヘッダー付き」でクリップボードにまとめてコピーできます。これにより、手作業でのファイル名追記の手間を省きつつ、AIの回答精度向上を図ることが可能です。
Macの場合:tail + pbcopy
tail
コマンドは、複数のファイルを引数に指定すると、各ファイルの内容の前に ==> ファイル名 <==
という形式でファイル名ヘッダーを自動的に挿入してくれます。これを利用します。
tail -v -n +1 -- src/*.js | pbcopy
-
コマンド解説:
-
tail -v -n +1 -- src/*.js
:src
ディレクトリ内の全ての.js
ファイルについて、1行目から最後まで(つまり全内容)を出力します。この際、各ファイルの内容の前にファイル名ヘッダーが付与されます。 -
pbcopy
: 標準入力をクリップボードにコピーするMac専用のコマンドです。
-
実行後、クリップボードには以下のような形式でコピーされます(ファイルが a.js
と b.js
の場合)。
==> src/a.js <==
// a.js の内容
...
==> src/b.js <==
// b.js の内容
...
他環境ではクリップボードへのコピーコマンドを適切に変更してください。
シェル関数を実装する
上のコマンドを毎回打つのはダルいので、同名のシェル関数を作ってみました。
pbcopy () {
if [ -z "$1" ]
then
command pbcopy
else
tail -v -n +1 -- "$@" | command pbcopy
fi
}
git diff | pbcopy
のように無引数で起動した場合は従来通り使えます。
pbcopy *.yaml
のようにファイルを引数に取った場合、指定された全ファイルの中身をファイル名つきでクリップボードにコピーします。
Discussion