🎰

Claude Codeを使ったVibe Codingで一括でコマンドを実行してくれるCLIツールを作った

に公開

はじめに

最近、仕事でちょっとしたデータ処理をする機会があって、CSV ファイルの各行に対して何かしらのコマンドを実行したいというニーズがあった。具体的には、CSV ファイルにユーザー情報が入っていて、各ユーザーに対して API 呼び出しを行いたい、みたいなケース。

手作業でやるのは面倒だし、shell で for 文を書くのも微妙だなと思って、「こういうのを簡単にやってくれる CLI ツールがあったらいいな」と思ったのがきっかけで作り始めた。

そして今回は、最近話題の AI コーディング(いわゆる Vibe Coding)で全部作ってみることにした。具体的には Claude Code を使って、ほぼ全て AI に書かせてみた。

作ったもの

xrunという CLI ツールを作った。

https://github.com/myuon/xrun

CSV、JSON、JSONL ファイルを読み込んで、各行・各レコードに対して Go のテンプレート記法を使ってコマンドを生成し、実行してくれるツール。

例えば、こんな CSV ファイルがあったとして:

name,age,email
Alice,30,alice@example.com
Bob,25,bob@example.com

こんな感じで実行すると:

xrun -d users.csv -e "curl -X POST https://api.example.com/users -d '{\"name\":\"{{.name}}\",\"age\":{{.age}},\"email\":\"{{.email}}\"}'"

各行について、テンプレートの{{.name}}{{.age}}{{.email}}がそれぞれの値で置換されて、コマンドが実行される。

なぜ AI で作ったのか

これまで、ファイルがあって curl を連続的に叩きたいみたいなケースでは、ChatGPT で Python スクリプトを書かせていた。データがあって一括で更新などをしたい時に重宝していたんだけど、毎回同じようなことばっかり頼んでいるなと思っていたし、割と面倒でもあった。

それで「CLI ツールがあったらいいんじゃないか」と思ったのと、ちょうど Claude 4 と Claude Code Actions が出たと聞いたので試したかったのが大きい。Claude Code は少し前から使ってたんだけど、割と使用感はいい感じだったので、本格的に何か Vibe Coding してみたかったのもある。

あと、bash あんまり得意じゃないのと、毎回 Python で書くのもめんどうだなあと思ってたから、というのもある。

開発体験

Claude Code Actions を使って開発してみた感想としては、思っていた以上にスムーズだった。

ワークフロー

基本的には以下の繰り返しだった:

  1. 機能単位で issue を立てる(普通に issue を切る感覚とあんまり変わらない)
  2. issue のコメントで@claudeでよろしくって頼む
  3. Claude Code が作業を進めてくれる
  4. 終わったら issue のコメントを更新してメンションをくれる
  5. 「Create a PR」ボタンを押して PR を作ってもらう

このサイクルを 10 回くらい繰り返して、1000 行くらいのコードを書いてくれた感じ。

issue の description は当たり前だけど少し丁寧目に書いてる。逆に AI が普通になったらドキュメントは重要になるので、ちゃんと書く癖がついていいかもと思った。

良かった点

要件定義から実装まで一気通貫
「CSV の各行に対してコマンドを実行したい」という曖昧な要求から、具体的な設計・実装まで一気にやってくれた。途中で細かい仕様を聞かれることもあったけど、大部分は適切に推測して実装してくれた。

テストも含めて全部書いてくれる
単体テストも最初から書いてくれるし、エッジケースもそれなりに考慮されている。自分で書くと、最初はテストを後回しにしがちなので、これは良かった。

リファクタリングも得意
途中で「この部分の設計をもう少し綺麗にしたい」と言うと、適切にリファクタリングしてくれる。特に、最初は複数の関数に分散していた処理を、Config構造体を中心とした設計に統一してくれたのは良かった。

微妙だった点

Claude Code Actions は多少ポンコツ
自分が github actions の上で動いている自覚がないケースがある。CI のファイルを編集させた時に、「編集できました!」と言ってローカルで作業して push しなかったことがあって困った。結局そこだけどうにもできなくて手元で Claude Code 動かした気がする。

細かい調整は結構大変
大枠の実装は早いけど、細かい挙動の調整(エラーハンドリングの詳細とか、ログの出力形式とか)は、結構やり取りが必要だった。

ドメイン知識は必要
やっぱり Go の知識とか CLI ツールの設計についての知識は必要。AI が書いたコードを読んで、「これで良いのか」を判断するのは人間の仕事。

時間とコスト

トータルで 1 時間半くらい。自分で書くとすると半日はかかると思うので、かなり時短になった。
また、金額にしても$5 くらい?だった気がする。

実際に使ってみた感想

作ったツールは、実際に仕事で数回使ってみた。

データベースから出力した CSV ファイルに対して、各行の ID を使って API を叩く、みたいな用途で使ったんだけど、普通に便利だった。shell の for 文を書くより楽だし、進捗表示もあるので安心感がある。

ドライランモードもあるので、実際に実行する前にどんなコマンドが実行されるかを確認できるのも良い。

xrun -d data.csv -e "echo Processing {{.id}}" --dry-run

おわりに

今回の Vibe Coding の体験を通して、AI コーディングの現在地がよく分かった。

AI が得意なこと:

  • 0→1 の開発
  • 定型的なツールの開発
  • テストコードの生成
  • リファクタリング

人間がやるべきこと:

  • 要件の整理
  • 設計の方向性の判断
  • コードレビュー
  • 細かい調整

完全に AI に任せるというよりは、AI を強力な開発パートナーとして使う、という感じが今のところのベストプラクティスかなと思っている。

特に、今回みたいな小規模な CLI ツールの開発なら、AI を使うことで開発効率を大幅に向上させることができる。一方で、大規模な既存コードベースの改修とか、複雑な要件定義が必要なプロジェクトについては、まだまだ人間の仕事が多いんだろうなと思う。

でも、確実に AI の能力は上がってきているので、今後はもっと複雑なタスクも AI にお任せできるようになるんだろうな。楽しみ。

おわりに (人間より)

この記事はClaude Codeにより執筆されました。

Discussion