Claude Engineer：次世代のAI駆動開発アシスタント

## はじめに

近年、人工知能（AI）技術の進歩により、ソフトウェア開発の世界も大きく変わりつつあります。その中でも特に注目を集めているのが、AI駆動の開発アシスタントです。本記事では、最新のAI技術を活用した開発アシスタント「Claude Engineer」について詳しく解説します。

## 簡単なデモ動画

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">Claude Engineer使ってみた！！（ちょっとのファイルの稼働だと$0.036でした！）<br>普通に使えそう！！Bedrockでいけるなら回しまくれるぞ！！<br>そしてUIの可視化がめちゃ綺麗！！<br>今後の開発の参考にします <a href="https://t.co/azrLi01vgy">https://t.co/azrLi01vgy</a> <a href="https://t.co/DxEIYzdZ63">pic.twitter.com/DxEIYzdZ63</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1813200970731692376?ref_src=twsrc%5Etfw">July 16, 2024</a></blockquote> 

## Claude Engineerとは

Claude Engineerは、Anthropic社が開発した最新のAIモデルであるClaude 3およびClaude 3.5を活用した、高度なインタラクティブコマンドラインインターフェース（CLI）ツールです。このツールは、ソフトウェア開発者の日々の作業を支援し、生産性を大幅に向上させることを目的としています。

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph TD
    A[Claude Engineer] --> B[AIモデル]
    A --> C[ファイルシステム操作]
    A --> D[Web検索]
    A --> E[コード分析]
    A --> F[画像分析]
    B --> G[Claude 3]
    B --> H[Claude 3.5]
```

上の図は、Claude Engineerの主要コンポーネントを示しています。AIモデル、ファイルシステム操作、Web検索、コード分析、画像分析など、多岐にわたる機能を統合しています。

## 主要機能

Claude Engineerは、開発者の作業を効率化するために設計された多くの機能を備えています。以下では、主要な機能について詳しく解説します。

### インタラクティブなチャットインターフェース

Claude Engineerの最大の特徴は、AIとのインタラクティブなコミュニケーションが可能なチャットインターフェースです。開発者は自然言語で質問や指示を入力し、AIからの回答や提案を得ることができます。

例えば、次のような対話が可能です：

```bash
開発者: Pythonでファイルを読み込む最も効率的な方法は何ですか？
Claude: Pythonでファイルを読み込む最も効率的な方法は、コンテキストマネージャを使用することです。以下に例を示します：

with open('ファイル名.txt', 'r') as file:
    content = file.read()

この方法には以下のメリットがあります：
1. ファイルを自動的に閉じるため、リソースリークを防ぎます。
2. エラーが発生しても確実にファイルが閉じられます。
3. コードがシンプルで読みやすくなります。

大きなファイルを扱う場合は、一度にすべてを読み込むのではなく、行ごとに処理する方法も効率的です：

with open('大きなファイル.txt', 'r') as file:
    for line in file:
        # 行ごとの処理を行う

この方法はメモリ効率が良く、大容量ファイルの処理に適しています。
```

このように、開発者は具体的な問題や疑問についてAIに質問し、即座に専門的なアドバイスを得ることができます。

### ファイルシステム操作

Claude Engineerは、ファイルやフォルダの作成、読み取り、編集などのファイルシステム操作を直接実行できます。これにより、開発者はコマンドラインを離れることなく、プロジェクトの構造を管理したりファイルの内容を操作したりすることが可能になります。

```mermaid
%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#ffcccc',
      'secondaryColor': '#ccffcc',
      'tertiaryColor': '#ccccff',
      'mainBkg': '#fff0f0',
      'nodeBorder': '#ff9999',
      'clusterBkg': '#fffaf0',
      'clusterBorder': '#ffe4b5',
      'lineColor': '#ff9999',
      'fontFamily': 'arial'
    }
  }
}%%

sequenceDiagram
    participant D as 開発者
    participant C as Claude Engineer
    participant A as コード分析エンジン
    D->>C: コードの分析を依頼
    C->>A: コードを送信
    A->>A: コード解析
    A->>C: 分析結果
    C->>C: 改善案の生成
    C->>D: 分析結果と改善案を提示
    D->>C: 改善の実施を指示
    C->>C: コードの修正
    C->>D: 修正後のコードを提示

```

この図は、Claude Engineerを通じて開発者がファイルシステム操作を行う流れを示しています。各操作は専用のツールによって実行され、開発者はこれらの操作を自然言語で指示することができます。

### Web検索機能

Claude EngineerはTavily APIを利用して、最新の情報をWeb上から検索する機能を備えています。これにより、開発者は最新のプログラミング技術やライブラリの情報、ベストプラクティスなどを、開発環境を離れることなく即座に入手することができます。

例えば、次のような使い方が可能です：

```bash
開発者: React Hooksの最新のベストプラクティスを教えて
Claude: はい、Tavily APIを使用してReact Hooksの最新のベストプラクティスを検索します。

[Web検索結果に基づいた回答]
React Hooksの最新のベストプラクティスには以下のようなものがあります：

1. カスタムフックの活用：
   共通のロジックを抽出し、再利用可能なカスタムフックを作成することで、コードの重複を減らし、保守性を向上させます。

2. useCallbackとuseMemoの適切な使用：
   パフォーマンスの最適化のために、これらのフックを使用して不要な再レンダリングを防ぎます。ただし、過剰な最適化は避け、必要な場合にのみ使用しましょう。

3. useEffectの依存配列の適切な管理：
   useEffectの第二引数である依存配列を正しく設定し、不要な副作用の実行を防ぎます。

4. 状態管理の適切な分割：
   グローバルな状態と局所的な状態を適切に分離し、必要に応じてuseContextやReduxなどの状態管理ライブラリを活用します。

5. エラー境界の使用：
   エラーが発生した際にアプリケーション全体がクラッシュするのを防ぐため、エラー境界コンポーネントを実装します。

これらのベストプラクティスを意識しながら開発することで、より保守性が高く、パフォーマンスの良いReactアプリケーションを構築できます。
```

このように、開発者は最新の情報を即座に入手し、それをプロジェクトに活かすことができます。

### コード分析と改善

Claude Engineerは、既存のコードを分析し、改善点を提案する機能を持っています。これにより、コードの品質向上やバグの早期発見に役立ちます。

```mermaid
%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#ffcccc',
      'secondaryColor': '#ccffcc',
      'tertiaryColor': '#ccccff',
      'mainBkg': '#fff0f0',
      'nodeBorder': '#ff9999',
      'clusterBkg': '#fffaf0',
      'clusterBorder': '#ffe4b5',
      'lineColor': '#ff9999',
      'fontFamily': 'arial'
    }
  }
}%%
sequenceDiagram
    participant D as 開発者
    participant C as Claude Engineer
    participant A as コード分析エンジン
    D->>C: コードの分析を依頼
    C->>A: コードを送信
    A->>A: コード解析
    A->>C: 分析結果
    C->>C: 改善案の生成
    C->>D: 分析結果と改善案を提示
    D->>C: 改善の実施を指示
    C->>C: コードの修正
    C->>D: 修正後のコードを提示

```

この図は、コード分析と改善のプロセスを示しています。開発者がClaude Engineerにコードの分析を依頼すると、内部のコード分析エンジンが解析を行い、その結果に基づいて改善案が生成されます。開発者の承認後、Claude Engineerが実際にコードの修正を行います。

### 画像分析機能

Claude Engineerは、画像を分析し、その内容を理解して説明する機能も備えています。これは、図表やスクリーンショットの解析、ユーザーインターフェースのデザインレビューなどに活用できます。

使用例：

```bash
開発者: [スクリーンショットをアップロード]
        このUIデザインについて、改善点はありますか？

Claude: アップロードされた画像を分析しました。このUIデザインについて、以下の改善点が考えられます：

1. コントラスト：背景色と文字色のコントラストが低いように見えます。特に薄い灰色の文字は読みにくい可能性があります。文字色を濃くするか、背景色を調整してコントラストを高めることをお勧めします。

2. 一貫性：ボタンのスタイルが統一されていないように見えます。一部は角丸で、一部は角が直角です。デザインの一貫性を保つため、ボタンのスタイルを統一することをお勧めします。

3. スペーシング：一部の要素間のスペースが狭いように見えます。特に、上部のナビゲーションメニューの項目間隔を少し広げると、クリックしやすくなり、ユーザビリティが向上するでしょう。

4. 階層：情報の階層が明確でない部分があります。見出しのフォントサイズや太さを調整して、情報の重要度をより明確に示すことができます。

5. レスポンシブデザイン：この画像からは判断できませんが、様々な画面サイズに対応できるレスポンシブデザインになっているか確認することをお勧めします。

これらの点を改善することで、より使いやすく、見た目も洗練されたUIデザインになると思います。具体的な修正案が必要な場合は、お知らせください。
```

このように、画像分析機能を使うことで、デザインレビューや視覚的な問題の解決に役立てることができます。

### 自動モード

Claude Engineerの特筆すべき機能の1つが「自動モード」です。この機能を使うと、AIが一連のタスクを自動的に実行し、開発者の作業を大幅に効率化することができます。

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph TD
    A[開発者] -->|タスクを指示| B[Claude Engineer]
    B -->|目標設定| C[目標1]
    B -->|目標設定| D[目標2]
    B -->|目標設定| E[目標3]
    C -->|実行| F[結果1]
    D -->|実行| G[結果2]
    E -->|実行| H[結果3]
    F -->|評価| I[進捗報告]
    G -->|評価| I
    H -->|評価| I
    I -->|必要に応じて調整| B
    I -->|完了報告| A

```

この図は、自動モードのワークフローを示しています。開発者がタスクを指示すると、Claude Engineerが目標を設定し、それぞれの目標に対して作業を実行します。各ステップの結果を評価し、必要に応じて方針を調整しながら、最終的に開発者に完了報告を行います。

自動モードの利点：

1. 時間節約：複雑なタスクを自動的に実行することで、開発者の時間を大幅に節約できます。

2. 一貫性：人間が行うと間違いやばらつきが生じる可能性のある作業も、AIが一貫して実行します。

3. 24時間稼働：開発者が休息している間も、AIは作業を継続できます。

4. スケーラビリティ：大規模なプロジェクトでも、AIが効率的にタスクを処理します。

5. 学習と改善：AIは実行結果から学習し、次回のタスク実行時にはさらに効率的に作業を行います。

使用例：

```bash
開発者: 新しいReactプロジェクトを作成し、基本的なコンポーネント構造を設定して、
        TypeScriptの設定も行ってください。自動モードで実行してください。

Claude: 承知しました。新しいReactプロジェクトの作成と設定を自動モードで実行します。
        最大25回の反復で作業を進めます。開始してもよろしいでしょうか？

開発者: はい、お願いします。

Claude: 自動モードを開始します。目標を設定し、順次実行していきます。

[目標1: プロジェクトの初期化]
create-react-appを使用してTypeScript対応のReactプロジェクトを作成します。

[目標2: 基本的なコンポーネント構造の設定]
src/componentsディレクトリを作成し、Header、Main、Footerコンポーネントを作成します。

[目標3: TypeScriptの設定]
tsconfig.jsonファイルを確認し、必要に応じて設定を調整します。

[目標4: ESLintとPrettierの設定]
コード品質とフォーマットの一貫性を保つため、ESLintとPrettierを設定します。

[進捗報告 - 反復1]
目標1が完了しました。新しいReactプロジェクト「my-react-typescript-app」が作成されました。

[進捗報告 - 反復2]
目標2が完了しました。基本的なコンポーネント構造が設定されました。

[進捗報告 - 反復3]
目標3が完了しました。tsconfig.jsonの設定を確認し、strictモードを有効にしました。

[進捗報告 - 反復4]
目標4が完了しました。ESLintとPrettierの設定が完了しました。

全ての目標が達成されました。新しいReactプロジェクトの作成と基本設定が完了しました。
詳細な結果とファイル構造を表示しますか？

開発者: はい、お願いします。

Claude: プロジェクトの詳細な結果とファイル構造は以下の通りです：

プロジェクト名: my-react-typescript-app

ファイル構造:

    ```
    my-react-typescript-app/
    ├── node_modules/
    ├── public/
    │   ├── index.html
    │   ├── favicon.ico
    │   └── manifest.json
    ├── src/
    │   ├── components/
    │   │   ├── Header.tsx
    │   │   ├── Main.tsx
    │   │   └── Footer.tsx
    │   ├── App.tsx
    │   ├── index.tsx
    │   └── react-app-env.d.ts
    ├── .eslintrc.js
    ├── .prettierrc
    ├── package.json
    ├── tsconfig.json
    └── README.md
    ```

主な設定内容:

1. TypeScript: strictモードが有効化されています。
2. ESLint: TypeScriptとReactの推奨ルールが適用されています。
3. Prettier: 一貫したコードフォーマットのために設定されています。

次のステップとしては、コンポーネントの実装、ルーティングの設定、状態管理の導入などが考えられます。これらの作業も自動モードで実行できますが、いかがいたしましょうか？

開発者: 素晴らしいです。ありがとうございます。今回はここまでで大丈夫です。

Claude: 承知しました。お役に立てて嬉しいです。
今回の自動モードでの作業により、基本的なReact + TypeScriptプロジェクトの
セットアップが迅速かつ効率的に完了しました。
今後、さらなる開発や拡張が必要な際は、お気軽にお申し付けください。
```

このように、自動モードを使用することで、開発者は複雑なセットアップや繰り返しの多いタスクをAIに任せ、より創造的で戦略的な作業に集中することができます。

## インストール方法

Claude Engineerのインストールは比較的簡単です。以下の手順に従って、開発環境にClaude Engineerを導入することができます。

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph LR
    A[開始] -->|1| B[リポジトリをクローン]
    B -->|2| C[依存関係をインストール]
    C -->|3| D[環境変数を設定]
    D -->|4| E[仮想環境をセットアップ]
    E -->|5| F[インストール完了]
```

### リポジトリのクローン:

```bash
git clone https://github.com/doriandarko/claude-engineer.git
cd claude-engineer
```

### 依存関係のインストール:

```bash
pip install -r requirements.txt
```

### 環境変数の設定:

- プロジェクトのルートディレクトリに`.env`ファイルを作成
- 以下の環境変数を追加:
- 
```
ANTHROPIC_API_KEY=your_anthropic_api_key
TAVILY_API_KEY=your_tavily_api_key
```

### 仮想環境のセットアップ（オプション）:

```bash
python -m venv code_execution_env
source code_execution_env/bin/activate  # Windowsの場合: code_execution_env\Scripts\activate
pip install -r requirements.txt
deactivate
```

これらのステップを完了すると、Claude Engineerを使用する準備が整います。

## 使用方法

### 基本的な使い方

Claude Engineerを起動するには、以下のコマンドを実行します：

```bash
python main.py
```

起動後、コマンドラインインターフェースを通じてClaude Engineerと対話できます。

### 特別なコマンド

Claude Engineerには、特定の機能を呼び出すための特別なコマンドがあります：

1. `exit`: 会話を終了し、アプリケーションを閉じます。
2. `image`: 画像分析のために画像をメッセージに含めます。
3. `reset`: 会話履歴をリセットします。
4. `automode number`: 指定した回数の反復で自動モードを開始します。
5. `save`: 現在のチャットログを保存します。

これらのコマンドを使いこなすことで、Claude Engineerの機能を最大限に活用できます。

## 高度な機能

### コード実行とプロセス管理

Claude Engineerは、安全な環境でのコード実行とプロセス管理を提供します。

```mermaid
%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#ffcccc',
      'secondaryColor': '#ccffcc',
      'tertiaryColor': '#ccccff',
      'mainBkg': '#fff0f0',
      'nodeBorder': '#ff9999',
      'clusterBkg': '#fffaf0',
      'clusterBorder': '#ffe4b5',
      'lineColor': '#ff9999',
      'fontFamily': 'arial'
    }
  }
}%%
sequenceDiagram
    participant D as 開発者
    participant C as Claude Engineer
    participant V as 仮想環境
    participant P as プロセス管理
    D->>C: コード実行リクエスト
    C->>V: コードを分離環境で実行
    V->>C: 実行結果
    C->>D: 結果を報告
    D->>C: 長時間実行プロセスの停止要求
    C->>P: プロセス停止命令
    P->>C: 停止完了報告
    C->>D: プロセス停止を確認

```

この機能により、開発者は安全にコードをテストし、長時間実行されるプロセスも管理できます。

### 複数のAIモデルの活用

Claude Engineerは、タスクの性質に応じて異なるAIモデルを使い分けます：

1. MAINMODEL (Claude 3 / Claude 3.5): 一般的な対話とタスク処理
2. TOOLCHECKERMODEL: ツールの使用と出力の検証
3. CODEEDITORMODEL: 専門的なコード編集
4. CODEEXECUTIONMODEL: コード実行結果の分析

この多層的なアプローチにより、各タスクに最適化されたAIの能力を活用できます。

### 差分ベースのファイル編集

Claude Engineerは、ファイルの編集を行う際に差分ベースのアプローチを採用しています。これにより、変更内容を明確に把握し、精密な編集が可能になります。

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph TD
    A[ファイル読み込み] --> B[変更箇所の特定]
    B --> C[差分の生成]
    C --> D[差分の表示]
    D --> E[開発者の確認]
    E -->|承認| F[変更の適用]
    E -->|拒否| G[編集のやり直し]
    F --> H[ファイルの保存]
    G --> B

```

この方法により、開発者は変更内容を詳細に確認し、意図しない修正を防ぐことができます。

## 開発者にとってのメリット

Claude Engineerを使用することで、開発者は以下のようなメリットを享受できます：

1. 生産性の向上: 反復的なタスクや時間のかかる作業をAIに任せることで、より創造的な作業に集中できます。

2. 品質の向上: AIによるコード分析と改善提案により、より高品質なコードを書くことができます。

3. 学習の促進: AIとの対話を通じて、新しい技術や最新のベストプラクティスを学ぶことができます。

4. 効率的なデバッグ: AIの支援により、バグの早期発見と解決が可能になります。

5. チーム全体の効率化: 共通の開発アシスタントを使用することで、チーム内の知識共有と一貫性が向上します。

## まとめ

Claude Engineerは、AI技術を活用した次世代の開発アシスタントとして、開発者の日々の作業を大きく効率化する可能性を秘めています。インタラクティブなチャットインターフェース、ファイルシステム操作、Web検索機能、コード分析と改善、画像分析機能、自動モードなど、多彩な機能を駆使することで、開発プロセス全体を最適化することができます。

また、安全なコード実行環境や差分ベースのファイル編集など、高度な機能も備えており、より複雑な開発タスクにも対応可能です。複数のAIモデルを使い分けることで、各タスクに最適化された支援を受けられるのも大きな特徴です。

Claude Engineerを導入することで、開発者はより創造的で戦略的な作業に集中でき、結果としてプロジェクトの品質と効率を大幅に向上させることができるでしょう。AI技術の進化とともに、Claude Engineerのような開発アシスタントは今後ますます重要になっていくと考えられます。

開発者の皆様には、ぜひClaude Engineerを試していただき、AI駆動の開発プロセスがもたらす新たな可能性を体験していただきたいと思います。


## 日本語化したリポジトリ

https://github.com/Sunwood-ai-labs/claude-engineer/blob/main/docs/README_JP.md

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>