ターミナルで補完してくれるAmazon Q Developer CLIが超便利

Github Copilotなどコーディングに便利なAIサービスが多数登場していますが、「ターミナルで補完してくれたり、ちょっとしたことを聞けるAIないかな〜」と思っていました。

**Amazon Q Developer CLI**は、この課題を解消してくれるありがたいツールです！Rustで実装されており、ターミナルにIDE並みのオートコンプリート機能やAIによるサポートを提供します。AWSに関連したツールという先入観がありましたが、幅広い用途で使えます。

## 前提条件

- macOSまたはLinux環境
- AWS Builder ID（無料で作成可能）

## 動作環境

- **macOS**
- **Linux**（Ubuntu/Debian/AppImageなど）
- **Windows**（WSL経由）

## Amazon Q Developer CLIの特徴

Amazon Q Developer CLIには、従来のCLIツールと一線を画す機能がいくつか備わっています。

### 1. IDE並みのオートコンプリート機能

従来のコマンドラインでのタブ補完とは一線を画す、IDE並みの高度な補完機能を提供します。

```bash
# gitコマンドのオプション補完例
git che[TAB]  # checkout, checkなどの候補が表示される
```

![Screenshot 2025-04-16 at 11.19.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/28204548-b806-4312-8ab4-66dd7a0103e7.png)


この補完機能は、`git`、`npm`、`docker`、`aws` など数百の人気CLIツールに対応しているとのこと。単なる文字列の補完ではなく、**コンテキストに応じて**適切な候補を表示します。

### 2. 自然言語によるチャット機能

ターミナル内で自然言語を使った**チャット**が可能です。質問、デバッグ、コードベースの探索などが、AI支援によって効率的に行えます。

```bash
# チャットモードの起動
q chat

# 質問例
> gitリポジトリの特定のコミットからファイルを取得する方法は？
```

チャット機能では、質問に対してコンテキストを考慮した的確な回答が得られるだけでなく、必要に応じてコード例も提示されます。

### 3. コンテキスト認識機能

ローカル開発環境からコンテキストを取得し、あなたの特定のコードやセットアップに合わせたレスポンスを提供します。

```bash
# プロジェクトのコンテキストを追加
> /context add codebase-summary.md
```

これは最高。一般的な回答ではなく、あなたの環境に最適化された提案を受けることができます。

### 4. エージェントによる自動実行

私はまだ試していませんが、実際にアクションを実行することもできるとのこと。コードの生成、ファイル編集、Gitワークフローの自動化、マージ競合の解決などが可能です。

```bash
# ファイル編集の例
> READMEファイルに使用方法のセクションを追加して
# Qがファイル編集の許可を求め、承認後に編集を実行
```

## インストール方法

### macOS

**DMGファイルからのインストール**:
1. [Amazon Q Developer公式ページ](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html)からDMGファイルをダウンロード
2. DMGファイルを開き、アプリケーションフォルダにドラッグ
3. 初回起動時にアクセシビリティ権限を許可する
4. シェル統合を「Install」ボタンで完了させる
5. AWS Builder IDを作成してサインインする

**Homebrewを使ったインストール**:
```bash
brew install amazon-q
```

Homebrewでインストールした場合も、初回起動時に次の設定が必要です：

#### 1. Amazon Qアプリを起動する

![Screenshot 2025-04-16 at 11.09.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/db1aa99e-7570-4930-b48a-8ee7986bcd21.png)

#### 2. シェル統合を「Install」ボタンで完了させる

![Screenshot 2025-04-16 at 11.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/4233977e-21cc-4f50-be0a-bb50caa67c9d.png)


#### 3. システム設定でアクセシビリティ権限を許可する

![Screenshot 2025-04-16 at 11.09.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/09529b00-3197-41b3-8e3e-50cbc3da2467.png)


#### 4. AWS Builder IDを作成してサインインする

![Screenshot 2025-04-16 at 11.10.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/e27caf91-3bb8-4f90-ba38-3d778584bb26.png)

![Screenshot 2025-04-16 at 11.11.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/a2472733-8397-42bc-8d28-8a8558856d02.png)


### Linux

**Ubuntu/Debian**:
```bash
# 公式ドキュメントに従ってインストール
curl -fsSL https://static.fig.io/qa/installer-v0.1.0.sh | sh

# または手動でパッケージをダウンロードしてインストール
wget https://amazon-q-developer-cli-dist.s3.amazonaws.com/...
sudo apt install ./amazon-q-developer-cli_X.Y.Z_amd64.deb
```

**AppImage**:
```bash
wget https://amazon-q-developer-cli-dist.s3.amazonaws.com/...
chmod +x ./AmazonQDeveloper-X.Y.Z.AppImage
./AmazonQDeveloper-X.Y.Z.AppImage
```

### Windows (WSL経由)

Windowsでは現在、WSL（Windows Subsystem for Linux）経由での利用が推奨されています。WSLにUbuntuなどのLinuxディストリビューションをインストールし、上記のLinux用インストール手順を実行します。

## 基本的な使い方

Amazon Q Developer CLIのインストール後、**ターミナルを再起動してください**

主に以下の方法で利用できます。まずは正しくインストールされているか確認しましょう。

```bash
# バージョン確認
q --version

# 診断チェック
q doctor
```

`q doctor`コマンドで「Everything looks good!」と表示されれば、正常にインストールされています。問題がある場合は、指示に従って修正してください。

![Screenshot 2025-04-16 at 13.42.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79562/efd3134a-c4fd-4a7c-9487-9db2581af41f.png)



### オートコンプリート機能

インストールすると自動的にシェルに統合され、サポートされているCLIコマンドの入力時に自動的にオートコンプリートが有効になります。

```bash
# gitコマンドの入力時
git che[TAB]  # オートコンプリートが動作

# awsコマンドの入力時
aws ec2 des[TAB]  # 適切なサブコマンドが提案される
```

### チャット機能の利用

```bash
# チャットモードを開始
q chat

# 基本的な質問
> JavaScriptでファイルを非同期に読み込む方法は？

# プロジェクト特有の質問
> このプロジェクトのディレクトリ構造を説明して

# コマンド実行の依頼
> カレントディレクトリ内の大きなファイルを見つけるコマンドを実行して
```

チャットモードでは、以下の特殊コマンドも利用できます：

- `/help` - 利用可能なコマンドの一覧を表示
- `/quit` または `/exit` - チャットを終了
- `/clear` - 会話履歴をクリア
- `/trustall` - ツール実行の自動承認を切り替え
- `/context add [ファイル]` - コンテキストとしてファイルを追加

## 内部アーキテクチャ

Amazon Q Developer CLIは、Rustで実装された高性能なツールです。その内部構造を理解することで、ツールの動作やカスタマイズの可能性について深く知ることができます。

### 主要コンポーネント

1. **q_cli** - メインのCLIツール
2. **fig_desktop** - GUIウィンドウやウェブビューを提供するデスクトップアプリケーション
3. **autocomplete** - オートコンプリート機能を提供するReactアプリ
4. **figterm** - ユーザーのターミナル編集バッファを監視する擬似ターミナル

### コンポーネント間通信

コンポーネント間の通信にはProtocol Buffersが使用され、効率的なプロセス間通信を実現しています。

```
[ユーザー入力] → [figterm] → [Protocol Buffers] → [q_cli/fig_desktop]
                                                   ↓
                   [表示/実行結果] ← [autocomplete/dashboard]
```

### チャット機能の実装

チャット機能は `q_cli/src/cli/chat` ディレクトリに実装されており、以下のコンポーネントで構成されています：

1. **会話状態管理** - チャット履歴や環境コンテキストを追跡
2. **入力処理** - ユーザー入力の解析と特殊コマンドの処理
3. **レスポンス解析** - AmazonQサービスからのストリーミングレスポンスの処理
4. **ツール実行** - ファイル操作やシェルコマンド実行などの機能

## AWS開発者にとっての便利機能

Amazon Q Developer CLIには、AWS CLIとの連携を強化するための機能が組み込まれています。GitHub上の公式リポジトリ情報によると：

- AWS CLIコマンドのオートコンプリート機能をサポート
- AWS関連サービスにおける自然言語での質問応答が可能

AWS CLIコマンドは非常に多くの機能を持ちますが、入力や設定に関する質問が容易になるかもしれませんね。

## まとめ

Amazon Q Developer CLIは、AWSによって開発されたRust製のターミナル拡張ツールです。IDE並みのオートコンプリート機能、自然言語によるチャット、コンテキスト認識機能を提供し、開発者の生産性向上をサポートします。

CLIコマンドの学習コストを軽減し、開発フローを効率化できます。**オープンソースとして公開されており**、自身の環境に合わせたカスタマイズやコントリビューションも可能です。

macOSとLinuxでの使用がサポートされています。本記事がより効率的な開発ワークフローの構築に役立てば幸いです。

## 参考リンク

- [Amazon Q Developer CLI GitHub リポジトリ](https://github.com/aws/amazon-q-developer-cli)
- [Amazon Q Developer 公式ドキュメント](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html)
- [Amazon Q Developer CLI インストールガイド](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html)