Ubuntu Weekly Recipe

第862回「Aider」で⁠いつものターミナルからAIアシスタントを利用する

ここ最近の技術トレンドと言えば、なんといってもAIでしょう。その中でもエンジニアにとって興味深いのは、AIによるプログラミングの支援ではないでしょうか。AIを使ったプログラミング支援ツールも、急速に普及しています。ソースコードホスティングサイトであるGitHubには、GitHub Copilotが用意されていますし、VS Codeの拡張機能であるClineや、VS Codeのフォークであり、AIによるコーディングを前提としたテキストエディタCursorも人気を集めています。本連載でも第860回で、Visual Studio CodeからローカルLLMを使用する方法を紹介しました。

しかし多くの人にとって必要なのは「AIによる支援」であって、⁠AI機能を搭載したツール」ではないでしょう。VS Codeがどれだけ優れているエディタであっても、AI機能を利用するためだけに、馴染みのあるツールそのものを乗り換えるというのは、なかなか受け入れ難いはずです。やはり手に馴染んでいるターミナルとEmacsから、AIの機能を呼び出せるに越したことはありません。

そこでおすすめしたいのが、ターミナル上で動作するAIコーディングアシスタントであるAiderです。

Aiderとは

Aiderは、ターミナル上で動作するオープンソースのAIペアプログラミングツールです。OpenAIのGPT-4oや、AnthropicのClaude 3.7をはじめとする様々なLLMに接続し、コードの作成、修正、リファクタリングなどを支援します。Aiderの主な特徴は以下の通りです。

  1. ローカルモデルを含む、多数のLLMに対応。
  2. Gitリポジトリとシームレスに連携し、AIによる変更を直接コミット。
  3. Python、JavaScript、Rust、Ruby、Goをはじめとする、多数のプログラミング言語に対応。
  4. コマンドラインから直接利用できる、ターミナルネイティブな実装。

あえてAiderを使う理由は、おもに4番目に集約されています。Aiderはターミナル上で直接利用できるため、AIを利用するためだけに、専用のテキストエディタをインストールする必要がありません。例えばターミナルの画面を分割し、片方でAiderを起動すれば、普段のワークフローを維持したまま、AIによる支援を受けることが可能です。またシェルを実行可能なエディタであれば、拡張機能などを必要とせず、エディタ上からAiderを利用できます。

Aiderをインストールする

Aiderは通常、Gitのリポジトリ内で使用することが想定されています。デスクトップ版のUbuntuには、デフォルトでgitがインストールされていないため、以下のコマンドでgitパッケージをあらかじめインストールしておくとよいでしょう。

$ sudo apt install -U -y git

Aiderでは、ワンライナーでインストールできるスクリプトを提供しています。ターミナルから以下のコマンドを実行してください[1]

$ wget -qO- https://aider.chat/install.sh | sh

Aiderは、ホームディレクトリ以下の「.local/bin/aider」にインストールされます。デフォルトではこのディレクトリにパスが通っていないため、以下のコマンドを実行してから、シェルを再起動してください。

$ echo 'export PATH="~/.local/bin:$PATH"' >> ~/.bashrc

APIキーの設定

Aiderを使用するには、接続するLLMのAPIキーが必要です。ここではコーディング支援用途に向いていると思われる(個人の感想です)AnthropicのClaude 3.7 Sonnetを利用する例を紹介します[2]

まずAnthropicのコンソールにアクセスし、アカウントを用意してください。

図1 console.anthropic.comの画面。ここにメールアドレスを入力すると、そのアドレス宛てに確認用のコードが送信されるので、コードを入力すればよい
図1

コンソールにログインできたら、Settings → API keysを開き、APIキーを発行します。

図2 Create Keyをクリックする
図2
図3 キーを作成するワークスペース(最初はDefaultのみが存在する)を選択して、キーに名前をつける
図3

APIキーが作成され、表示されます。このウィンドウを閉じると、キーは二度と表示できないため、忘れずに安全な場所へ控えておいてください。

図4 作成されたキー
図4

作成されたAPIキーをAiderに渡す方法は、大きく4種類あります。

  • コマンドラインオプションとして指定する
  • 環境変数にセットする
  • .envファイルに記述する
  • .aider.conf.ymlファイルに記述する

とりあえず動作を確認したいだけであれば、コマンドラインオプションとして渡すのが一番簡単でしょう。ですがコマンド履歴にAPIキーが残ってしまうのは好ましくありません。そこでここでは4番目の、YAMLファイルに記述する方法を採用します。

Aiderは.aider.conf.ymlファイルを以下の3箇所から探します。

  • ホームディレクトリ
  • Gitリポジトリのルートディレクトリ
  • カレントディレクトリ

ここでは個人用のグローバル設定として、ホームディレクトリへ配置することとしました。サンプルのYAMLファイルを、以下のコマンドでホームディレクトリへダウンロードします。

$ wget -q -O ~/.aider.conf.yml https://raw.githubusercontent.com/Aider-AI/aider/refs/heads/main/aider/website/assets/sample.aider.conf.yml

テキストエディタでこのファイルを以下のように変更します。anthropic-api-key行のコメントアウトを解除し、先ほど控えたキーを記述してください。

## Specify the Anthropic API key
#anthropic-api-key: xxx



## Specify the Anthropic API key
anthropic-api-key: (控えたAPIキーを記述する)

また利用するモデルも指定しておきましょう。model行のコメントアウトを解除し、⁠anthropic/claude-3-7-sonnet-latest」を指定します。

## Specify the model to use for the main chat
#model: xxx



## Specify the model to use for the main chat
model: anthropic/claude-3-7-sonnet-latest

Aiderの使い方

Aiderの基本的な使い方を紹介します。

Aiderの起動

Aiderは通常、Gitリポジトリ内で使用します。カレントディレクトリを既存のリポジトリに移動してから、aiderコマンドを実行してください。

$ cd (Gitリポジトリのパス)
$ aider

また新しいプロジェクトを始める場合は、作成したディレクトリ内でgit initを実行してから、aiderコマンドを実行してください。Aiderが起動し、チャットインターフェイスが表示されます。

$ mkdir new_repo
$ cd new_repo
$ git init
$ aider

そのリポジトリではじめてAiderを起動した時は、以下のように「Add .aider* to .gitignore (recommended)?」と質問されます。Aiderはカレントディレクトリ内に、⁠.aider*」というファイル名でチャットの履歴などを残すのですが、これはGitリポジトリにコミットしたくないでしょう。また都度Gitの変更点として上がってくるのも面倒です。そこでAider関連のファイルを、.gitignoreファイルに追記し、変更を無視する設定を加えるか聞かれているわけです。通常は「Yes」と入力しておきましょう。

図5 .gitignoreにAider関連のファイルを追加するかの確認
図5

また使用しているモデル名も表示されますので、設定した通りのLLMに接続できているかも確認しておきましょう。この例では「anthropic/claude-3-7-sonnet」が使用されていればOKです。

ファイルの追加

冒頭で述べたように、AiderはAIペアプログラミングツールです。そのため特定のファイルを対象として、対話するのが基本となります。そこでまずはじめに、対象とするファイルをチャットに追加しましょう。Aiderのチャットインターフェイス内で、/addコマンドを実行します。引数に、追加したいリポジトリ内のファイル名を指定してください。なおAiderのコマンド名や、リポジトリにコミットされているファイル名は、Tabで補完できます。

/add example.sh
図6 example.shというシェルスクリプトをチャットに追加した例
図6

また追加したいファイルがあらかじめ決まっている場合は、aiderコマンドの引数に直接指定もできます。

$ aider example.sh

Aiderと対話する

Aiderのチャットインターフェースでは、自然言語で様々なリクエストを入力できます。もちろん日本語にも対応しています。先ほど追加したexample.shは、筆者がふだんWSL環境で利用している写真のバックアップスクリプトなのですが、このスクリプトについての解説と、問題点の指摘を要求してみた例が以下の動画です。

ターミナルマルチプレクサ(Byobu)を使ってターミナルを分割し、Emacsと同時に起動してみました。いつものツールに一切手を入れることなく、AIペアプログラミングが実現できました。

図7 ByobuでEmacsとAiderを同時に起動した例
図7

変更のコミット

Aiderはデフォルトで、コードへの変更を自動的にコミットします。またコミットログも自動的に生成してくれます。前述のスクリプトの修正案も、以下のようにコミットされていました。

図8 git log -pを確認した例。Aiderによる変更が自動的にコミットされている
図8

なお自動コミットは、Aiderの起動時に、⁠--auto-commits」あるいは「--no-auto-commits」オプションをつけることで、有効/無効を制御できます。

$ aider --no-auto-commits

また設定ファイルである.aider.conf.yml内の「auto-commits」「false」にすることでも、自動コミットは無効にできます(デフォルトはtrue⁠⁠。Aiderにはあくまで提案をしゃべらせるだけで、変更は自分で行いたいというような場合は、無効にしてしまってもよいでしょう。

その他のコマンド

Aiderのチャットインターフェイスでは、数多くのコマンドが使えます。例えば、以下のようなコマンドが存在します。

/help       # ヘルプを表示する
/clear      # チャットの履歴をクリアする
/ls         # リポジトリ内のファイルと、チャットに追加されたファイルの一覧を表示する
/git        # gitコマンドを実行する
/run        # シェルコマンドを実行して、出力をチャットに追加する
/undo       # Aiderによって行われた、最後のコミットを元に戻す
/editor     # エディタを開いてプロンプトを編集する
/exit       # Aiderを終了する

より詳しくはドキュメントを参照してください。

EmacsからAiderを使う

先ほどはターミナルを分割して、テキストエディタとAiderを同時に使用する例を示しました。しかしVS Codeの拡張機能のように、普段使いのエディタの中から直接Aiderを使えればモアベターです。Emacsであれば、aider.elを使うことで、Emacs上からAiderの機能を利用できます。

aider.elのインストールと設定

Ubuntu 24.04 LTSでは、APTでEmacs 29.3をインストールできます。Emacs 29.1以降では、use-packageが標準搭載となっているため、aider.elもuse-packageでインストールしてしまうのが簡単です。Emacsの設定ファイル(~/.emacs.d/init.el)に、以下を記述してください。

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(unless package-archive-contents (package-refresh-contents))

(use-package aider
  :ensure t
  :config
  (setq aider-args `("--config" ,(expand-file-name "~/.aider.conf.yml")))
  (global-set-key (kbd "C-c a") 'aider-transient-menu))

aider-argsでは、aiderコマンドに渡す引数を指定できます。ここでは「--config」オプションでホームディレクトリの.aider.conf.ymlを指定していますが、aiderはデフォルトでこのファイルを読むため、この例では省略しても動作します。もし別のパスにある設定ファイルを読ませたいような場合は、適宜指定してください。もちろん使用するモデルやAPIキーを、init.elの中で直接設定もできます。

設定が完了したら、Emacsを再起動してください。⁠use-package aider」の設定内に「ensure t」があるため、次回起動時に、自動的にaider.elがインストールされます。

aider.elの実行

Emacsが起動してaider.elがインストールされたら、⁠M-x aider-transient-menu⁠⁠ を実行するか、init.elで設定したキーバインド(ここではC-c a)を押してください。新しいバッファが開き、Transient(Emacs上でキーボード駆動によるメニューを実装するためのライブラリ)によるメニューが表示されます。⁠a」を押してAiderを起動しましょう。

図9 aider.elのメニュー
図9

フレームが分割され、Aiderとのチャットが可能になります。以降の使い方は、コマンドラインと同様です。

図10 Emacs上でAiderとチャットする
図10

このようにaider.elを使えば、Emacsの強力な編集機能と、AiderによるAI支援機能を組み合わせた、最強の開発環境を実現できるというわけです。


Aiderを使えば、普段使い慣れたツールはそのままに、AIによる支援をコーディング支援を受けることができます。特にターミナルやEmacs、Vimなどの環境から離れられない方は、ぜひ一度試してみてください。

おすすめ記事

記事・ニュース一覧