Aiderを使ってみた話

## はじめに
先日はVue Fes Japan 2024に参加し、いろいろいい話を聞いてきました。

スポンサーLTの中で、Vue2からVue3に移行する時、Aiderというツールを使ったという話がありました。
結局人が確認しないといけないというネックはあるとの結論でしたが、7割ほどのコードが有効活用できたとのことでしたので使えそうだなと思いました。

https://speakerdeck.com/lmi/vue-fes-japan-2024-link-and-motivation

聞いた感じすごく興味が湧いてきたため、使ってみて思ったことを書いていきたいと思います！

## Aiderとは？
> Aider lets you pair program with LLMs, to edit code in your local git repository.

要するに、ローカルのgit環境と言語モデルをつなげてくれるんですね。

https://aider.chat/

ターミナル上でローカルのレポジトリを読み取って、コミットやPR作成までやってくれる点が特徴です。

Aiderの素晴らしい点は、このサービス自体は無料ということです。もちろん生成AIのAPIの使用料はかかりますが、ソフト自体は課金が必要ないので手軽に試すことができます。

## 使い方
ものすごくシンプルです。

以下のコードを実行することで簡単にインストールできます。
（環境によってコマンドが変わります、私の実行環境は`M3 Macbook Air`です！）
``` zsh
$ python3 -m pip install -U aider-chat
```

https://aider.chat/docs/install/install.html

私はClaude信者ですので、言語モデルはClaude-3.5-sonnetにしたいと思います。

ユーザー登録の過程は飛ばし、Anthropic ConsoleからAPIキーを取得しましょう。

https://console.anthropic.com/dashboard

1.「Get API Keys」をクリック。
![スクリーンショット 2024-10-27 9.08.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/e361facf-c9df-709e-b858-047e98f57512.png)

2.「Create Key」からキーを取得します。

これ以降このキーを見ることはできないので、どこかに控えておきましょう。

![スクリーンショット 2024-10-27 9.09.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/58a2e9b0-df35-73a4-0511-61356a5d8f21.png)

３. keyをターミナルで読み込ませる

Claudeを使っている場合は以下のコマンドを実行します。

``` zsh
$ export ANTHROPIC_API_KEY=取得したキー
```

４.実行 

環境によっては`aider`と入力するだけで実行できるらしいですが、私は以下のコマンドで実行しています。

``` zsh
$ python3 -m aider
```

:::note warn
注意
実行後、以下のような文言に今回選んだモデルが設定されているか確認してください。
:::


![スクリーンショット 2024-10-27 16.42.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/63c2b123-0f8f-e684-378e-332d8cae742a.png)


## できること

### 生成AIに聞く
あとは、ターミナルで直接生成AIに質問することができます。

私は以下のようにプロジェクトの中で最適化できそうな箇所を探してほしいと言ってみました。

今回は英語で書いているのですが、Cluadeは日本語もできるので日本語で聞いても問題ありません。（ターミナル上だと全角のリアルタイムな入力が見られないのは少し残念...）

![スクリーンショット 2024-10-27 16.46.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/be7f7ce2-1799-426c-af30-ace6ca168a8c.png)

すると、初めての質問ではAiderがレポジトリの中身を読み取る作業が始まります。
小さな個人プロジェクトだと数秒で終わりますが、大きなプロジェクトは10分ほどかかったりもします。

レポジトリの読み取りが終わると、自動的に質問に対して生成AIが答え始めます。

以下のようにどのファイルを直せばいいか教えてくれます。普段使っている生成AIでは想像できないことですね。自動的にレポジトリの中を読み取ってくれるので、すごく便利です。

![スクリーンショット 2024-10-27 16.51.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/c546d3e3-8606-a409-0bed-8ac4b84595b3.png)

### コスト確認も可能
返答のあとは、今回かかったトークンとコストも教えてくれます。
使用回数によっては月額で生成AIを契約することより安く使える可能性もありますね。

Claudeのログを見てみると処理によって軽いモデルに任せることもあるので裏でコストが最適化できるように動いてくれていることもわかります。

![スクリーンショット 2024-10-27 17.16.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/710da678-0cad-e801-886d-03f733a69dab.png)

プロンプトのキャッシュもサポートしているため、コスト最適化もできそうです。

https://aider.chat/docs/usage/caching.html

また、最後の緑色の文字のところですが、実際に生成AIに参照させるファイルを追加することができます。変更しても問題ないものであったため、エンターキー連打しました。

### コード生成

それからは以下画像のように生成AIがコードを書き換え始めます。

![スクリーンショット 2024-10-27 16.56.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/6db1e4c0-9578-f741-d5f0-3dd7a25dbde8.png)

### コミット

最後には、コストの確認とともに、コミットまでしてくれていることがわかります。
コミット名まで勝手につけてくれる...！

![スクリーンショット 2024-10-27 16.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/990fb3f1-e3a4-a101-cafc-e4e03aefbcbc.png)

実際にコミットがされていることも確認できます。コミットした人の名前の後ろに`(aider)`が付くんですね。

![スクリーンショット 2024-10-27 17.00.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/29c3e145-bc68-1a3e-b7ac-66a3980f2c01.png)

### PR作成
次はPR作成まで頼んでみましょう。

![スクリーンショット 2024-10-27 17.03.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/0ac1a500-34bb-50c3-ef12-05ec31a8051e.png)

賢いAIくんはまずブランチから切ってくれました。

![スクリーンショット 2024-10-27 17.04.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/7860e642-73d8-6acd-ffe3-b44834ec2d90.png)

次はpushを行ってくれます。

![スクリーンショット 2024-10-27 17.04.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3754242/ae534883-d551-9ccc-08fa-3ed01b497f22.png)

次はエンターを連打することでPRまで作ってくれます！

## おまけ
Aiderは他にも色々機能がついています。

ボイスモードを使って声で質問することもできます。

https://aider.chat/docs/usage/voice.html

また、AiderはE2EテストのツールであるPlaywrightを使うこともでき、ネットから情報をスクレイピングすることもできます。そのため、GitHubのPRやissueを貼って質問することもできます。

他にも面白い機能がいっぱいあるのでぜひ公式ドキュメントを読んでみてください！

## おわりに
普段は生成AIに何かを聞くときにいちいちコードを貼る作業が必要でした。

しかし、レポジトリを読み取ってくれることでその必要はなくなり、RAGのように動いてくれて自分でも知らなかったことについて気づくこともできます。

最近Claudeが強くなったことで、Aiderとともに使ったら生産性爆上がりの予感がしますね！
それでは良い生成AIライフを！