📁

【Claude Code活用】ファイル読み書きを任せる

に公開

Claude Code のファイル操作能力

Claude Code は Read・Write・Edit の3種類のファイル操作ツールを持っています。

  • Read:ファイルの内容を読み込む
  • Write:新規ファイルを作成・上書きする
  • Edit:既存ファイルの特定箇所を差分で変更する

「読んで理解して書く」という流れを自動で行うため、実装指示書を渡すだけで必要なファイルを生成してくれます。

実際に任せてみた:実装指示書を渡す

agent01 の Step 05 では read_file / list_files を実装する必要がありました。Claude.ai で作成した実装指示書を Claude Code に渡したところ、以下の流れで実装が進みました。

  1. 指示書を読む
  2. src/tools/ ディレクトリの構成を確認する
  3. src/tools/file_tools.py を新規作成する
  4. src/step05_file_tools.py(動作確認スクリプト)を生成する

指示書には実装すべき関数のシグネチャと動作仕様だけを書いておき、具体的なコードは Claude Code に任せました。

Claude Code が生成したコード

生成された file_tools.py の主要部分を引用します。

src/tools/file_tools.py
def read_file(path: str) -> str:
    """ファイルの内容を読み込む。

    Args:
        path: ファイルパス(相対・絶対どちらも可)

    Returns:
        ファイルの内容。ファイルが存在しない場合はエラーメッセージ。
    """
    try:
        file_path = Path(path)
        if not file_path.exists():
            return f"エラー:ファイルが見つかりません: {path}"
        if not file_path.is_file():
            return f"エラー:指定されたパスはファイルではありません: {path}"

        return file_path.read_text(encoding="utf-8")

    except PermissionError:
        return f"エラー:ファイルへのアクセス権限がありません: {path}"
    except UnicodeDecodeError:
        return f"エラー:UTF-8で読み込めないファイルです: {path}"
    except Exception as e:
        return f"エラー:ファイル読み込みに失敗しました: {path} ({e})"

注目すべき点は、指示書に「エラーハンドリングを実装してください」と書いていないにもかかわらず、PermissionErrorUnicodeDecodeError まで考慮したコードが生成された点です。

list_files も同様に、除外ディレクトリ(.git__pycache__ など)を自動でスキップする設計になっています。

src/tools/file_tools.py
def list_files(directory: str) -> str:
    """ディレクトリ配下のファイル一覧を再帰的に取得する。"""
    # ...
    EXCLUDE_DIRS = {".git", "__pycache__", ".venv", "node_modules"}

    for root, dirs, filenames in os.walk(dir_path):
        dirs[:] = [d for d in dirs if d not in EXCLUDE_DIRS]
        # ...

人間が確認すべきポイント

生成されたコードは必ず動作確認してからコミットします。特に Windows 環境では以下の点を確認しました。

エンコーディング設定:Windows のデフォルトエンコーディングは cp932(Shift_JIS)です。Claude Code が生成するコードは encoding="utf-8" を指定していますが、標準入出力は sys.stdout.reconfigure(encoding="utf-8") で明示的に設定する必要があります。

パスの区切り文字:Windows では \ ですが、Python の pathlib.Path を使うことで OS 差異を吸収できます。Claude Code は pathlib を自然に使う傾向があります。

気づき

PROGRESS.md による申し送りが有効だった:Step 05 の完了後に PROGRESS.md へ「tool_use 使用時は llama3.1:8b を指定すること」と記録しておいたことで、次のセッションで再確認する手間がなくなりました。

指示書の粒度が重要:「read_file 関数を実装する」という一行指示よりも、「引数・戻り値・エラー時の動作」まで書いた指示書の方が期待通りの出力が得られました。粒度が細かいほど Claude Code の迷いが減ります。

まとめ

Claude Code のファイル操作能力は、実装指示書さえ整備されていれば高品質なコードを生成できます。エラーハンドリングや型アノテーションまで自動で書いてくれるため、コードレビューの負担を大幅に減らせました。

次回

B3 では、Claude Code のコードベース探索能力について紹介します。既存コードを参照しながら一貫したスタイルで新しいツールを生成した体験をお伝えします。

シリーズリンク(Series B)

記事 タイトル
B1 Claude Codeとは・導入と初期設定
B2 ファイル読み書きを任せる(本記事)
B3 コードベース探索を任せる
B4 差分確認・適用を任せる
B5 テスト実行と結果解釈を任せる
B6 複数ファイル跨ぎの修正を任せる
B7 PROGRESS.md駆動開発
B8 Zenn記事をClaude Codeに書かせる

Discussion