はじめに
私が開発したMacOS用ツール「MergeClip」を紹介します。複数のテキストファイルをAIチャットで効率的に分析したい!でも、一つずつコピペするのは面倒...そんな悩みを解決するツールです。
MergeClipとは?
MergeClipは、複数のテキストファイルを素早く結合し、Macのクリップボードにコピーするツールです。特にAIチャットボットとのファイル共有を効率化することを目的としています。
主な特徴
- 複数のテキストファイルを効率的に結合
- ファイル名を保持したまま処理が可能
- バイナリファイルを自動的に除外
- 多言語対応(ファイル拡張子に基づく)
- クイックアクションまたはコマンドラインから使用可能
- 処理したファイル数を通知
なぜMergeClipを開発したのか?
最近、ChatGPTやGitHub Copilotなどのツールの登場でAIの活用が日常的になってきました。しかし、複数のファイルを同時に分析してもらいたい場合、一つずつコピペするのは非効率だし大変です。またファイルをアップロードできるインターフェイスがあっても特定の拡張子(phpなど)が禁じられて使えないこともあります。
なにか問題を分析してもらう時に該当ファイルだけでなく、その関連のファイルも必要になることも多いです。例えばソースファイルが必要としているヘッダーファイルも必要などなど。AIに関連するなるべく多くのコンテキストを与えると回答の質があがっていくことを実感していましたが、いまのチャットボットのUIは複数ファイルを効率的に伝えることが難しいと感じていました。
そこで、この作業を自動化するMergeClipを開発しました。
MergeClipの使い方
インストール方法
- MergeClipをダウンロード
- ダウンロードしたファイルを解凍して開く
- インストールガイドに従って設定を完了させてください。
~/Library/Services/
にファイルが格納されます。
基本的な使用方法
- Finderでファイルまたはフォルダを選択
- 右クリックして「クイックアクション > MergeClip」を選択
- MergeClipがコンテンツをクリップボードにコピー
- 処理されたファイル数がダイアログで通知されます
MergeClipの出力フォーマット
MergeClipは以下のようなフォーマットで出力します:
ファイル名1.ext
```ext
ファイル1の内容
```
ファイル名2.py
```py
ファイル2の内容
```
このフォーマットにより、AIが各ファイルの内容と言語を容易に識別できます。ちなみに現在ChatGPTよりClaude 3.5の方がより大きなサイズの入力を受け付けます。
MergeClipの活用例
たとえば以下のような活用はどうでしょうか?
1. プロジェクト全体へのコメント付与
複数のソースファイルを一度にAIに提供し、一括でコメントを付与してもらいます。ファイル名が保持されているので、AIからの提案を元のファイルに簡単に反映できます。
3. 国際化・ローカライゼーションの効率化
例えばオープンソースで英語のマニュアルしか用意されていないときにMDファイルが入ったフォルダでmergeして一括でAIに提供し、翻訳や一貫性チェックを依頼できます。たとえばClaude 3.5 sonnetならそれぞれのファイルがアーティファクトとして生成されるのでダウンロードも容易です。ファイル名を伝えてる事も便利に働きます。
2. 複数ファイルの一括リファクタリング
関連するソースファイルをまとめてAIに提供し、リファクタリングの提案を受けられます。ファイル間の関係性を考慮した提案が得られるのが特徴です。
4. APIドキュメントの自動生成・更新
APIの実装ファイルとAPI仕様ファイルを一緒にAIに提供し、実装とAPIの仕様の整合性をチェックしてもらう。
5. プロジェクト構造の分析と最適化
プロジェクト全体のディレクトリ構造とファイル内容をMergeClipで結合し、AIに分析を依頼。プロジェクト構造の問題点や最適化案を効率的に得られます。
まとめ
MergeClipを使うことで、AIとの対話をより効率的に、そして文脈に即したものにできます。複数ファイルの同時分析や、プロジェクト全体の最適化など、幅広い開発タスクで活用できるツールです。
同様のことは専用のエディタやAPIの利用でも実現できますが、高度なAIモデルのAPI料金は高額な事があります。チャットではリミットの制限はありますが、定額の安心感もあります。AIとのコミニケーションの幅を増やすという意味でも一度試してみてください。MergeClipがAIとの対話に役立てば嬉しいです。
リンク
最後に、このツールを使って皆さんがどんなことを実現したのか、ぜひコメント欄で教えてください!新しい使い方や改善点のアイデアもお待ちしています。😊