原文(日本語に翻訳)
cat refactor.md | claude のようなパイプ入力の信頼性を改善しました
原文(英語)
Improved reliability for piped input like cat refactor.md | claude
概要
Claude Code v2.1.0で改善された、標準入力(stdin)からのパイプ入力処理です。以前のバージョンでは、ファイルやコマンド出力をパイプでClaude Codeに渡す際、入力が切り詰められたり、エンコーディングエラーが発生したり、処理が途中で停止するなどの問題がありました。この改善により、大規模なファイルや特殊な文字を含むデータでも確実に処理できるようになりました。
改善前の問題
大きなファイルの切り詰め
bash
# 大きなファイルをパイプ
cat large-file.md | claude "Summarize"
# 修正前:
# - 最初の数KB のみ読み込まれる
# - 残りのデータが無視される
# - エラーメッセージなしエンコーディングエラー
bash
# 日本語を含むファイル
cat japanese.txt | claude "Translate to English"
# 修正前:
# - 文字化け
# - エンコーディングエラー
# - 処理失敗処理の中断
bash
# 長い出力をパイプ
git diff | claude "Review changes"
# 修正前:
# - 処理が途中で停止
# - "Broken pipe" エラー改善後の動作
大規模データの確実な処理
bash
# 10MBのファイル
cat large-log.txt | claude "Find errors"
# 修正後:
# ✓ 全データを読み込み
# ✓ メモリ効率的に処理
# ✓ 確実に完了正確なエンコーディング処理
bash
# マルチバイト文字
cat multilingual.txt | claude "Analyze"
# 修正後:
# ✓ UTF-8を正しく処理
# ✓ 文字化けなし
# ✓ すべての言語に対応実践例
ログファイルの解析
大規模なログファイルを効率的に解析。
bash
# アクセスログを解析
cat access.log | claude "Find suspicious activity"
# 100MB のログファイル
# v2.1.0: 確実に全行を処理
# エラーや異常なパターンを検出Git diff のレビュー
変更内容をパイプで渡してレビュー。
bash
# すべての変更をレビュー
git diff HEAD~10 | claude "Review all changes"
# 数千行のdiff
# v2.1.0: 全変更を確実にレビューデータ変換パイプライン
複数のコマンドをつなげた処理。
bash
# データ処理パイプライン
cat data.json | \
jq '.items[]' | \
claude "Analyze and transform" | \
jq -r '.results[]' > output.json
# v2.1.0: パイプライン全体が安定動作スクリプト出力の処理
スクリプトの出力を直接処理。
bash
# テスト結果を解析
npm test 2>&1 | claude "Summarize test failures"
# 大量のテスト出力
# v2.1.0: すべての出力を確実に受け取る複数ファイルの一括処理
bash
# 複数ファイルを結合して処理
cat src/**/*.ts | claude "Find code smells"
# 数百ファイルの連結
# v2.1.0: すべてのコードを解析注意点
- Claude Code v2.1.0(2026年1月7日リリース)で実装
- 改善された動作:
- バッファリング: 大規模データを効率的に処理
- エンコーディング: UTF-8を正しく認識
- エラーハンドリング: パイプエラーを適切に処理
- メモリ管理: 大きな入力でもメモリ効率的
- パイプ入力の基本:bash
# ファイルから cat file.txt | claude "Process" # コマンド出力から command | claude "Analyze" # 複数行入力 echo -e "Line 1\nLine 2" | claude "Process" # ヒアドキュメント claude "Process" << EOF Multi-line input EOF - サイズ制限:
- 最大入力サイズ: 制限なし(メモリが許す限り)
- 実用的な上限: ~100MB
- それ以上: ファイルパスを直接指定推奨
- エンコーディング:
- UTF-8を推奨
- その他のエンコーディングは自動検出を試行
iconvで事前変換も可能:bashiconv -f SHIFT_JIS -t UTF-8 file.txt | claude "Process"
- 対話モードとの違い:
- パイプ入力: 非対話モードで実行
- 標準入力から読み込み後、即座に処理
- 出力は標準出力に出力
- デバッグ:
--debugフラグで入力バイト数を確認- パイプの途中で
teeを使用:bashcat file.txt | tee /tmp/debug.txt | claude "Process"
- トラブルシューティング:
- 入力が切り詰められる: v2.1.0にアップグレード
- 文字化け: エンコーディングを確認
- Broken pipe: パイプ先のコマンドを確認