思いつきで作ったAIツールが5000スターを獲得した話
とにかくケチりたい、そんな気持ちで作ったツールの話です。
元々開発にCline(Claude Dev)やAiderなどの開発ツールを駆使していました。
ただ、APIの料金が常に心配で、できる限り安く済ませたい気持ちもあり、Claude Proを契約してWeb版にファイルを1つ1つアップロードする日々を過ごしていました。
ある日それが面倒になってきて「全部1ファイルにしたらいい感じに読み込んでくれるのでは?」と思い、作ってみたら思いのほかうまくいったので公開しました。
百聞は一見にしかずということで、
こちらのデモにお気に入りのGitHubリポジトリ(例: honojs/hono
)を入力してみてください。
Claudeが得意とするXMLっぽいフォーマットで出力し、そのままClaudeにアップロードすることができます。
完全にAIバブルの波に乗ったとも言えるのですが、多くの競合がいる中でスター数が増えたのは、CLIの使い心地の良さとRedditでの地道な活動が効いたのではないかなと思っています。
自分で使っている感想
下記コマンドでできたファイルをClaudeにアップロードし、リファクタなり実装なりを依頼できます。小さめのプロジェクトであればかなりワークします。
npx repomix
大規模なプロジェクトだと100万トークンは余裕で超えるので、焦点を絞らないと使えないことのほうが多いですね。
ただ、inputを選ばないので、定額のAIサービスで使えるという意味ではかなりコスパがいいツールだと思います。
まだまだ日本のユーザーはかなり少なそうですが、使っていただいている方もちらほらいるので開発のモチベになっています。
別のツールですが、コピペなどが面倒でぱっと聞きたい時はこちらもおすすめです。
モデルごとの比較
Gemini 2.0 Flash Experimental
や ChatGPT o1
を使ってみましたが、現状は Claude 3.5 Sonnet
が一番良いという印象です。
特に複雑な実装の依頼に強みを発揮します。ただし、扱える範囲は4~5モジュールぐらいが限界でしょうか。
なお、Claudeはレート制限が厳しいので、雑なタスクは Gemini 2.0 Flash Experimental
に任せています。Geminiは100万トークンという圧倒的なコンテキスト長を活かして、リリースノートの作成やIssue対応、Discordでのやりとりのサポート、その他翻訳作業など重宝していますね。
DeepSeekもたまに使っていて、Claudeが使えないときの補助として頼りになります。
Repomix の道のり
最初は本当に単純な発想でした。
「コードベースを1つのファイルにまとめたら、いい感じに読んでくれたりしないか?」と。
そして作ってみると驚くほどうまくいきました。
これは早く皆に共有せねばと思い、勢いでGitHubへの公開とQiitaにも記事を書きましたが、初日のいいねは3つでした。
公開してから気づいたのですが、既に似たようなツールが多数存在しています。
- https://github.com/mufeedvh/code2prompt
- https://github.com/simonw/files-to-prompt
- https://github.com/jimmc414/1filellm
- ...
ただ、これらのツールは開発が活発ではなく、また自分の理想とする使い心地でもなかったので「ただ自分が最も使いやすい形にしよう」と開発を続けました。
Redditでの活動
ツールの良さが伝わらない中、「自分と同じように困っている人に直接おすすめしてファンを増やそう」と考え、Redditで困っている人にコメントを始めました。
ほぼほぼスパムのような行為ですが、気にしたら負けなので積極的にコメントを続けたところ、予想以上に反応が良くGitHubのスター数が徐々に伸び始めたのです。
そして、改名
元々このツールは「Repopack」という名前でした。
GitHubのスターが1000を超えた頃、突如海外から商標の問題を指摘され、弁理士と相談した結果「Repomix」に改名することになりました。
OSSプロジェクトとして許してほしい気持ちもありましたが、相手もソフトウェア関連の商標でかつ紳士的な対応だったことから、紛争は避けることにしました。
日本弁理士会で無料で相談できるので、何かあった時はおすすめです。
技術面
CLI実装
正直ファイルをまとめるだけのそれ以上でもそれ以下でもないツールで、他の競合とそんなに差異はありません。
違いがあるとすれば下記の点でしょう。
- secretlintを使って予期せず機密情報が流出するのを多少防いでいる
- configファイルで細かく設定できる
- CLIの出力が少しフレンドリー?
secretlint
をライブラリとして使ったのは初めてでしたが、その手軽さに感動しました。さすがazuさん。
あとは repomix --init
に @clack/prompts
を使っていて、単純に見た目が気に入っています。
ウェブサイト
長らくウェブサイトがなかったのですが、年末年始で暇だったこともありオンラインデモサイトを作ることにしました。
フロントエンド
フロントエンドは Vitepress + Cloudflare Pages
を採用しました。
以下の点が良いなと思っています。
- Cloudflare Pagesは無料プランでも十分な機能を提供
- デプロイが早く、開発効率が良い
- GitHubのPRにプレビューURLを自動生成してくれる
特にPRへのプレビューURL自動生成は最高です。
RspressやDocusaurusも検討しましたが、デザインと触り心地が一番好みだったのでVitepressを選択しました。VueかReactかは今回はシンプルな構成なのでそこまでこだわっていません。
バックエンド
APIは Cloud Run + Hono.js
で、Cloud Buildでビルドとデプロイを行っています。CloudflareのDNSでオリジンの保護。
前からHonoを使ってみたかったので、今回のシンプルな用途にはちょうど良い機会だと思い採用しました。
中規模レベル以上になると設計者の腕が試されそうだなと感じつつも、さくっと開発できるところはとても気に入っています。(そして名前がいい!)
日本人発のフレームワークとして応援していきたいです。
今回はgitコマンドの実行が必要だったのでCloud Runを選択しましたが、もし他のAPIを作る際はCloudflare Workersを使ってみたいと思っています。
これから
現状のRepomixは個人開発や小規模プロジェクトでは十分な機能を提供できていますが、中規模以上のプロジェクトではほぼ使い物にならないので、今後はそちらに注力していこうと思っています。
ぜひ使っていただいて、フィードバックなどいただけると励みになります。
Discussion