Claudeは、Anthropicが定義したテキストエディタツールを使用して、テキストファイルを表示および修正し、コードやその他のテキストドキュメントのデバッグ、修正、改善を支援することができます。これにより、Claudeはファイルと直接やり取りし、変更を提案するだけでなく、実践的な支援を提供することができます。

テキストエディタツールを使用する前に

互換性のあるモデルを使用する

Anthropicのテキストエディタツールは、Claude 3.5 SonnetとClaude 3.7 Sonnetでのみ利用可能です:

  • Claude 3.7 Sonnet: text_editor_20250124
  • Claude 3.5 Sonnet: text_editor_20241022

両バージョンは同じ機能を提供します - 使用するバージョンは、作業しているモデルに合わせる必要があります。

ユースケースの適合性を評価する

テキストエディタツールを使用する場合の例:

  • コードデバッグ: 構文エラーからロジックの問題まで、Claudeにバグの特定と修正を依頼します。
  • コードリファクタリング: Claudeに対象を絞った編集を通じて、コードの構造、可読性、パフォーマンスを改善させます。
  • ドキュメント生成: Claudeにコードベースのdocstring、コメント、READMEファイルの追加を依頼します。
  • テスト作成: 実装の理解に基づいて、Claudeにコードのユニットテストを作成させます。

テキストエディタツールを使用する

Messages APIを使用してテキストエディタツール(str_replace_editorという名前)をClaudeに提供します:

テキストエディタツールは以下のように使用できます:

1

Claudeにテキストエディタツールとユーザープロンプトを提供する

  • APIリクエストにテキストエディタツールを含める
  • 「コードの構文エラーを修正できますか?」などのファイルの確認や修正が必要なユーザープロンプトを提供する
2

Claudeがツールを使用してファイルやディレクトリを確認する

  • Claudeは何を確認する必要があるかを評価し、viewコマンドを使用してファイルの内容を確認するか、ディレクトリの内容を一覧表示する
  • APIレスポンスにはviewコマンドを含むtool_useコンテンツブロックが含まれる
3

viewコマンドを実行して結果を返す

  • Claudeのツール使用リクエストからファイルまたはディレクトリパスを抽出する
  • ファイルの内容を読み取るか、ディレクトリの内容を一覧表示する
  • tool_resultコンテンツブロックを含む新しいuserメッセージで会話を継続することで、結果をClaudeに返す
4

Claudeがツールを使用してファイルを修正する

  • ファイルやディレクトリを確認した後、Claudeはstr_replaceなどのコマンドを使用して変更を加えたり、insertを使用して特定の行番号にテキストを追加したりする場合がある
  • Claudeがstr_replaceコマンドを使用する場合、古いテキストと置き換える新しいテキストを含む適切な形式のツール使用リクエストを構築する
5

編集を実行して結果を返す

  • Claudeのツール使用リクエストからファイルパス、古いテキスト、新しいテキストを抽出する
  • ファイル内のテキスト置換を実行する
  • 結果をClaudeに返す
6

Claudeが分析と説明を提供する

  • ファイルを確認し、場合によっては編集した後、Claudeは発見したことと行った変更について完全な説明を提供する

テキストエディタツールのコマンド

テキストエディタツールは、ファイルの表示と修正のために複数のコマンドをサポートしています:

view

viewコマンドを使用すると、Claudeはファイルの内容を確認したり、ディレクトリの内容を一覧表示したりすることができます。ファイル全体または特定の行範囲を読み取ることができます。

パラメータ:

  • command: “view”でなければなりません
  • path: 表示するファイルまたはディレクトリへのパス
  • view_range (オプション): 表示する開始行と終了行の番号を指定する2つの整数の配列。行番号は1から始まり、終了行に-1を指定するとファイルの最後まで読み取ります。このパラメータはディレクトリではなく、ファイルの表示時のみ適用されます。

str_replace

str_replaceコマンドを使用すると、Claudeはファイル内の特定の文字列を新しい文字列に置き換えることができます。これは正確な編集を行うために使用されます。

パラメータ:

  • command: “str_replace”でなければなりません
  • path: 修正するファイルへのパス
  • old_str: 置き換えるテキスト(空白やインデントを含めて正確に一致する必要があります)
  • new_str: 古いテキストの代わりに挿入する新しいテキスト

create

createコマンドを使用すると、Claudeは指定された内容で新しいファイルを作成することができます。

パラメータ:

  • command: “create”でなければなりません
  • path: 新しいファイルを作成するパス
  • file_text: 新しいファイルに書き込む内容

insert

insertコマンドを使用すると、Claudeはファイル内の特定の位置にテキストを挿入することができます。

パラメータ:

  • command: “insert”でなければなりません
  • path: 修正するファイルへのパス
  • insert_line: テキストを挿入する行番号(ファイルの先頭の場合は0)
  • new_str: 挿入するテキスト

undo_edit

undo_editコマンドを使用すると、Claudeはファイルに対する最後の編集を元に戻すことができます。

パラメータ:

  • command: “undo_edit”でなければなりません
  • path: 最後の編集を元に戻すファイルへのパス

例:テキストエディタツールを使用した構文エラーの修正

この例では、Claudeがテキストエディタツールを使用してPythonファイルの構文エラーを修正する方法を示します。

まず、アプリケーションはClaudeにテキストエディタツールと構文エラーを修正するためのプロンプトを提供します:

Claudeはまずテキストエディタツールを使用してファイルを表示します:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue."
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_editor",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

アプリケーションはファイルを読み取り、その内容をClaudeに返す必要があります:

行番号

上記の例では、viewツールの結果には各行の先頭に行番号が付加されたファイルの内容が含まれています(例:「1: def is_prime(n):」)。行番号は必須ではありませんが、view_rangeパラメータを使用してファイルの特定のセクションを確認したり、insert_lineパラメータを使用して正確な位置にコンテンツを追加したりする場合に不可欠です。

Claudeは構文エラーを特定し、str_replaceコマンドを使用して修正します:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you."
    },
    {
      "type": "tool_use",
      "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
      "name": "str_replace_editor",
      "input": {
        "command": "str_replace",
        "path": "primes.py",
        "old_str": "    for num in range(2, limit + 1)",
        "new_str": "    for num in range(2, limit + 1):"
      }
    }
  ]
}

アプリケーションは編集を行い、結果を返す必要があります:

最後に、Claudeは修正の完全な説明を提供します:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "I've fixed the syntax error in your primes.py file. The issue was in the `get_primes` function at line 19. There was a missing colon (:) at the end of the for loop line.\n\nHere's what I changed:\n\nFrom:\n```python\nfor num in range(2, limit + 1)\n```\n\nTo:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python, a colon is required at the end of statements that start a new code block, such as for loops, if statements, function definitions, etc. Without the colon, Python raises a syntax error because it doesn't know where the code block begins.\n\nYour code should now run correctly. The function will properly generate a list of prime numbers up to the specified limit."
    }
  ]
}

テキストエディタツールを実装する

テキストエディタツールは、type: "text_editor_20250124"で識別されるスキーマレスツールとして実装されています。このツールを使用する際、他のツールのように入力スキーマを提供する必要はありません。スキーマはClaudeのモデルに組み込まれており、変更することはできません。

1

エディタの実装を初期化する

ファイルの読み取り、書き込み、修正などの操作を処理するヘルパー関数を作成します。ミスから回復するためのバックアップ機能の実装を検討してください。

2

エディタツールの呼び出しを処理する

コマンドタイプに基づいてClaudeからのツール呼び出しを処理する関数を作成します:

def handle_editor_tool(tool_call):
    input_params = tool_call.input
    command = input_params.get('command', '')
    file_path = input_params.get('path', '')
    
    if command == 'view':
        # ファイルの内容を読み取って返す
        pass
    elif command == 'str_replace':
        # ファイル内のテキストを置換する
        pass
    elif command == 'create':
        # 新しいファイルを作成する
        pass
    elif command == 'insert':
        # 指定位置にテキストを挿入する
        pass
    elif command == 'undo_edit':
        # バックアップから復元する
        pass
3

セキュリティ対策を実装する

検証とセキュリティチェックを追加します:

  • ディレクトリトラバーサルを防ぐためのファイルパスの検証
  • 変更を加える前のバックアップの作成
  • エラーの適切な処理
  • パーミッションチェックの実装
4

Claudeのレスポンスを処理する

Claudeのレスポンスからツール呼び出しを抽出して処理します:

# Claudeのレスポンス内のツール使用を処理する
for content in response.content:
    if content.type == "tool_use":
        # コマンドに基づいてツールを実行する
        result = handle_editor_tool(content)
        
        # 結果をClaudeに返す
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

テキストエディタツールを実装する際は、以下の点に注意してください:

  1. セキュリティ: このツールはローカルファイルシステムにアクセスできるため、適切なセキュリティ対策を実装してください。
  2. バックアップ: 重要なファイルの編集を許可する前に、必ずバックアップを作成してください。
  3. 検証: 意図しない変更を防ぐため、すべての入力を検証してください。
  4. 一意な一致: 意図しない編集を避けるため、置換が正確に1箇所にのみ一致することを確認してください。

エラーの処理

テキストエディタツールを使用する際、さまざまなエラーが発生する可能性があります。以下は、それらを処理する方法についてのガイダンスです:

実装のベストプラクティスに従う


価格とトークン使用量

テキストエディタツールは、Claudeで使用される他のツールと同じ価格構造を使用します。使用しているClaudeモデルに基づく標準的な入力および出力トークンの価格に従います。

基本トークンに加えて、テキストエディタツールには以下の追加入力トークンが必要です:

ツール追加入力トークン
text_editor_20241022 (Claude 3.5 Sonnet)700トークン
text_editor_20250124 (Claude 3.7 Sonnet)700トークン

ツールの価格に関する詳細な情報については、ツール使用の価格設定を参照してください。

テキストエディタツールをコンピュータ使用と統合する

テキストエディタツールは、コンピュータ使用ツールや他のAnthropicが定義したツールと併用することができます。これらのツールを組み合わせる際は、以下の点に注意する必要があります:

  1. 適切なベータヘッダーを含める(コンピュータ使用と併用する場合)
  2. ツールのバージョンを使用するモデルに合わせる
  3. リクエストに含まれるすべてのツールの追加トークン使用量を考慮する

コンピュータ使用のコンテキストでテキストエディタツールを使用する方法の詳細については、コンピュータ使用を参照してください。

変更履歴

日付バージョン変更内容
2025年3月13日text_editor_20250124スタンドアロンのテキストエディタツールのドキュメントを導入。このバージョンはClaude 3.7 Sonnet用に最適化されていますが、前バージョンと同じ機能を持っています。
2024年10月22日text_editor_20241022Claude 3.5 Sonnetでのテキストエディタツールの初回リリース。viewcreatestr_replaceinsertundo_editコマンドを通じてファイルの表示、作成、編集機能を提供。

次のステップ

テキストエディタツールをより便利で強力な方法で使用するためのアイデアをいくつか紹介します:

  • 開発ワークフローへの統合: テキストエディタツールを開発ツールやIDEに組み込む
  • コードレビューシステムの作成: Claudeにコードをレビューさせ、改善を加えさせる
  • デバッグアシスタントの構築: Claudeがコードの問題を診断して修正するのを助けるシステムを作成する
  • ファイル形式変換の実装: Claudeにファイルを別の形式に変換する手助けをさせる
  • ドキュメント自動化: Claudeが自動的にコードをドキュメント化するワークフローを設定する

テキストエディタツールを使用してアプリケーションを構築する際、Claudeの機能を活用して開発ワークフローと生産性を向上させる方法を見るのが楽しみです。