git diffをAIで解析するCLIを、Rustでバイブコーディングしてみよう!
先日、ついに腱鞘炎と診断されました。
4年ほど前からじんわり痛いという状況で、周りの人からは病院に行けと言われるけれどそのまま放置していたのですが、とうとう私の我慢メーターの閾値を超えて明確に痛みが出たため病院に行きました。季節の変わり目は、体に負荷がかかりやすく、体の違和感が不調にかわりやすい季節だとのことでした。
その病院には、そんなに大きくはないもののリハビリテーションの施設も併設されており、右手に電流を流されながら先生に「姿勢に注意しろ」とか「ストレッチしろ」とかご鞭撻いただいているとき、私はこんなことを考えていました。
自前でCLIを作りてぇ!!!
そう、待合室で読んでいたZennの記事に触発されて、完全に上の空でした。(先生すみません)
というわけで、今回の記事はこちら!
git diffをAIで解析するCLIを、Rustでバイブコーディングしてみよう!
初Rustでございます。言語として結構特徴的で面白かったのですが、詳しい話はまた別の機会に。
目次
- 作ったもの:ai-diff とは
- なぜ Rust で作ったか
- バイブコーディングとは
- Rust とバイブコーディングの相性が良い理由
- まとめ
作ったもの:ai-diff とは
作ったものの自慢コーナーなので、興味のある方だけ見ていただけたらと思います。
git diff の出力をAI API(GeminiまたはClaude)に送信して、変更内容の要約・影響範囲・リスク評価を自動生成するCLIツール「ai-diff」を作りました。
使い方はシンプルで、こんな感じです。
# 基本的な使い方(Gemini を使用)
git diff | ai-diff
# Claude に切り替えて high リスクモードで分析
git diff | ai-diff --provider claude --risk-level high
git diff の結果をパイプで渡すだけで、AIが「どこを変えたか」「影響範囲はどこか」「リスクはあるか」を分析してくれます!コードレビューの補助として使える感じのツールです。
主なオプションはこちらです。
| オプション | 説明 | デフォルト |
|---|---|---|
--provider |
AIプロバイダー(claude / gemini) | gemini |
--risk-level |
注意深さ(low / medium / high) | medium |
--lang |
出力言語 | ja(日本語) |
--format |
出力形式(markdown / plain) | markdown |
--dry-run |
APIを呼ばずプロンプトを確認 | false |
GitHubにも公開していますので、興味がある方はぜひご覧ください。
→ ikeikejunjun/ai-diff
なぜ Rust で作ったか
最近、ちょこちょこRustの名前を見かけまして。「安全で高速」という話を見聞きして気になっていたのと、Rustで作られたデスクトップアプリフレームワーク「Tauri」の存在を知って、ちょっといじってみたいなと思って触ってみました。
よく入門に使われるというThe Bookの日本語訳に取り組みましたが、所有権やトレイトなど特徴的な仕様がいくつかあって、かなり面白かったです。
バイブコーディングとは
バイブコーディング(Vibe Coding)、ご存知でしょうか。
ご存じの方は、飛ばしてください。
ざっくり言うと、AIにコードを生成させながら、細かい実装の詳細はAIに任せてしまうコーディングスタイルのことです。自分がやりたいことのイメージ(バイブ)を伝えて、AIにどんどんコードを書かせていく感じですね。
「それって、自分でコード書いてないけど、大丈夫なの?」と思われるかもしれませんが、ポイントは設計や要件の整理は人間がしっかりやるところにあります。何を作りたいか、どういうアーキテクチャにするか、どんな制約があるか----そこを曖昧にしたままAIに丸投げしても、思い通りのものはなかなかできません。
今回の進め方はこんな感じです。
- 設計書を作成(
docs/ai-diff-design.md)- ClaudeやGitHub Copilotと複数回壁打ちして、OS間の差異・セキュリティの懸念・コストなどを確認しながらブラッシュアップ
- 今回はこの設計フェーズに約2週間かけました
- 設計書を元にClaudeにコード生成させる
- 設計書を渡して「これを実装して」と伝えるだけ
- コーディング自体は約3日で完了
- 設計通りに作らせるので1日(多分バイブコーディングに慣れるともっと早くなる)
- 細かい修正や機能の追加などを2日ほど
設計に2週間、コーディングに3日というのが、バイブコーディングの特徴をよく表していると思います。時間のかけどころが従来の開発から変わります。
Rust とバイブコーディングの相性が良い理由
私は、Rustとバイブコーディングはめちゃくちゃ相性が良いと感じました。
Rustは型安全性やエラーハンドリングの厳格さから、そもそもコードの品質が担保されやすい言語です。さらに、コンパイル時にさまざまなエラーを検知して、その内容を詳しく出力してくれます。
バイブコーディングとの組み合わせが強いのは、この「コンパイルエラーの詳細な出力」がAIに実装させるときに、自走する材料になることです。
コード生成 → cargo build → エラー出力 → Claudeが読み込んで修正 → 再ビルド → ...
こちらがいちいち手動でデバッグしなくても、Claudeがコンパイルエラーを読み込んで自律的に修正してくれるサイクルが回ります。こちらがビルドをしなくても、実行時にエラーが発生しないところまでコードを作り込みが進んでいきます。
実際、今回ほとんど実行時エラーは発生しませんでした。詰まったのはWindowsでのAPIキーの設定パスくらいで(~/.config ではなく %APPDATA% を使う必要があった)、それ以外はほぼすんなり動きました。
まとめ
今回は、RustでCLIツールを作りながらバイブコーディングを実践してみました。
弊社ではclaude codeなどの導入を進めておりまして、Skillsを使えば実は似たようなことを実現できてしまうのですが、現在のトレンドとしてAIが使うCLIを作る場合などもあるようなので、そのあたりに経験を活かしていけたらいいなと思います。
Rustに興味があってCLIを作ってみたい方や、バイブコーディングを試してみたい方の参考になれば嬉しいです。
最後に
弊社では、Webアプリ・業務システムなど、幅広いシステム開発を行っております。
今回ご紹介したようなAI活用は簡単なツール制作にとどまらず、開発プロセスにも取り入れております。コードレビューへのAI活用など、品質向上のための取り組みを日々続けています。
PowerAppsなどのローコード開発から、バックエンド・フロントエンドのフルスクラッチ開発まで、お客様の要件に合わせて柔軟にご対応いたします。開発でお困りの際には、ぜひ弊社にお声がけいただけたらと思います。
フォローしませんか?
お気軽にご依頼・ご相談ください


