🚄

Claude Codeに品質チェックを並列実行させるテクニック

に公開

TypeScriptを使った開発では、コードの品質を保つためにlinter、型検査、単体テストなどコミット前に毎回するコマンドがあるかと思います。この記事では、Claude Codeにこれらのコマンドを実行させるときに並列実行させるためのプロンプトを紹介します。

方法

やり方は驚くほどシンプルで、CLAUDE.mdファイルに以下のようなプロンプトを記載するだけです。

## 並列実行ルール

**効率的な作業のため、独立したツール操作は並列実行を活用すること:**

### テスト・品質チェックの並列実行
```bash
# 良い例:品質チェックコマンドを並列実行
yarn lint & yarn typecheck & yarn test
```

並列実行の仕組み

Claude Codeで並列実行の指示を出すと、内部では以下のような処理が行われます:

  1. テンポラリのシェルスクリプトを自動生成
  2. 各コマンドを並列で実行
  3. 実行結果を適切にハンドリングするための入出力調整

この仕組みにより、従来の逐次実行と比べて大幅な時間短縮が実現できます。

Claude Code自身に何をやっているのかを説明してもらった解説が以下の通りです。入出力周りの調整が自分では書きたく無いなって感じでClaudeCodeの賢さを感じます。

 /bin/zsh -c -l source /var/folders/.../claude-shell-snapshot-85d9 && eval 'yarn lint & yarn format & yarn typecheck & yarn test' < /dev/null &&
  pwd -P >| /var/folders/.../claude-31ec-cwd

  1. /bin/zsh -c -l

  - /bin/zsh: Zシェルを実行
  - -c: 文字列として渡されたコマンドを実行
  - -l: ログインシェルとして起動(.zshrcなどの設定を読み込む)

  2. source /var/folders/.../claude-shell-snapshot-85d9

  - 一時ファイルから環境変数や関数定義を読み込む
  - Claudeが現在のシェル環境を保存・復元するための仕組み

  3. eval 'yarn lint & yarn format & yarn typecheck & yarn test'

  - eval: 文字列をコマンドとして評価・実行
  - &: 各コマンドをバックグラウンドで並列実行
    - yarn lint
    - yarn format
    - yarn typecheck
    - yarn test

  4. < /dev/null

  - 標準入力を/dev/nullにリダイレクト
  - 対話的な入力を防ぐ

  5. pwd -P >| /var/folders/.../claude-31ec-cwd

  - pwd -P: 物理的な現在のディレクトリパスを出力
  - >|: 強制的に上書き(noclobberオプションを無視)
  - 実行後の作業ディレクトリを保存

  なぜこのような複雑な構造?

  Claudeは独立したプロセスとして各コマンドを実行するため:
  - シェル環境の状態を保持する必要がある
  - 並列実行を安全に行う必要がある
  - 実行結果を適切にキャプチャする必要がある

  この仕組みにより、yarn lint & yarn format & yarn typecheck & yarn testという並列実行が可能になっています。

まとめ

このルールを追加することで、コミット前の品質チェックが劇的に高速化されます。開発フローが改善され、より効率的な開発が可能になるでしょう。ぜひ一度試してみてください。

GitHubで編集を提案
株式会社エスマット

Discussion