CLAUDE_AX_PREPARK_MSでスクリーンリーダーの行送り待機を調整する
スクリーンリーダーモードの行送り待機50msを変える環境変数CLAUDE_AX_PREPARK_MSの効果と、他の待機系設定との違いをまとめます。
Claude Codeのスクリーンリーダーモードは、新しい行を書き込む直前にカーソルを行頭へ戻し、既定で50ミリ秒待ちます。この待機時間を変える環境変数がCLAUDE_AX_PREPARK_MSです。v2.1.233以降で使え、0を指定すれば即時書き込み、上限は5000ミリ秒です。何のための待機か、変えるとどう変わるか、他の待機系設定との違いを見ていきます。
CLAUDE_AX_PREPARK_MSとは何を調整する変数か
スクリーンリーダーモードでは、Claude Codeの応答やヒントなど新しい行・変更された行を書き込む前に、カーソルを行の先頭へ移動してから一定時間待ちます。スクリーンリーダーがその行を先頭の文字から読み上げられるようにするための間です。
CLAUDE_AX_PREPARK_MSはこの待機の長さをミリ秒単位で決めます。既定値は50で、0を指定すると待たずに即時書き込みます。Claude Codeは上限を5000(5秒)に制限しており、それより大きい値を渡しても5秒でキャップされます。この変数はClaude Code v2.1.233以降を必要とし、それより前のバージョンでは設定しても効果を持ちません。
入力中の文字の扱いは別です。入力行の末尾で文字を打つ、あるいはBackspaceで削除するときは、変化した文字がそのまま即座に反映されます。CLAUDE_AX_PREPARK_MSの待機がかかるのは、Claudeの応答やヒントのようにアプリケーション側が書き込む行に限られます。
export CLAUDE_AX_SCREEN_READER=1
export CLAUDE_AX_PREPARK_MS=0
claudeNVDAを使うWindows環境では、シェルによって設定コマンドが異なります。PowerShellとCMDでの書き方は次のとおりです。
$env:CLAUDE_AX_PREPARK_MS = "0"
claudeCMDではsetコマンドを使います。
set CLAUDE_AX_PREPARK_MS=0
claudeどちらもそのウィンドウを閉じると設定は消えます。PowerShellで恒久化するなら[Environment]::SetEnvironmentVariable("CLAUDE_AX_PREPARK_MS", "0", "User")を実行して新しいターミナルを開き直します。CMDならsetx CLAUDE_AX_PREPARK_MS 0が同じ役割です。値を設定したかどうかは、claudeを起動する前に同じシェルで変数を表示して確認できます(PowerShellはecho $env:CLAUDE_AX_PREPARK_MS、CMDはecho %CLAUDE_AX_PREPARK_MS%)。代入コマンド自体は成功しても何も表示しないためです。
前提として、この変数はスクリーンリーダーモードが有効なときにだけ働きます。CLAUDE_AX_SCREEN_READER=1や--ax-screen-readerでモードを有効にしないまま設定しても、待機の挙動自体が発生しないので変化はありません。
settings.jsonで恒久設定にする
シェルでのexportはそのターミナルセッション限りです。マシン全体や特定プロジェクトで毎回同じ値を使いたい場合は、settings.jsonのenvキーに書きます。Claude Codeはclaudeの起動方法に関わらず、この値を直接読み込みます。
{
"env": {
"CLAUDE_AX_SCREEN_READER": "1",
"CLAUDE_AX_PREPARK_MS": "100"
}
}置く場所によって適用範囲が変わります。~/.claude/settings.jsonなら自分が使うすべてのプロジェクトに、.claude/settings.jsonならリポジトリで作業する全員に、.claude/settings.local.jsonならそのプロジェクトの自分だけに適用されます。
settings.jsonのenvブロックに書いた値は、シェルでexportした値より優先されます。Claude Codeが各エントリをプロセス環境に書き込み、シェルから引き継いだ値を上書きするためです。ファイルを保存すると、実行中のセッションにも新しい値が反映されます。公式ドキュメントが例外として挙げているのはOpenTelemetry関連の設定のように起動時に一度だけ読み込む機能で、これらは再起動するまで古い値のまま動きます。CLAUDE_AX_PREPARK_MSはこの例外リストに含まれていないため、settings.jsonを書き換えれば実行中のセッションにもすぐ反映されると読めます。動作を確かめたいときは、値を変えてからそのセッションで長い応答を読ませ、行送りの間隔が変わっているかを確認します。
起動からセッション中までの待機の流れ
CLAUDE_AX_STARTUP_QUIET_MSとCLAUDE_AX_PREPARK_MSは、働くタイミングが異なります。スクリーンリーダーモードを有効にしたセッションでは、次の順で待機が発生します。
- 起動直後、
[Screen Reader Mode: on via ...]という確認行が表示される CLAUDE_AX_STARTUP_QUIET_MS(既定3000ms)の間、以降の描画が止まる。何かキーを押すとここで解除できる- 待機が終わると最初のプロンプトが描画され、対話が始まる
- 以降、Claudeの応答やヒントなど新しい行が書き込まれるたびに、
CLAUDE_AX_PREPARK_MS(既定50ms)の待機が繰り返される
起動時の待機は1セッションにつき1回だけですが、行送りの待機は会話が続く限り毎回発生します。長い応答を読ませる場面ほど、CLAUDE_AX_PREPARK_MSの値が体感に効いてきます。
値を変える場面 — 既定値50msをそのままにしてよいか
公式ドキュメントが明記しているのは待機の目的(スクリーンリーダーが行頭から読み切れるようにする)だけで、推奨値までは示していません。使う支援技術の速度や読み上げの設定によって、快適な長さは変わります。
| 状況 | 調整の方向 | 理由 |
|---|---|---|
| 読み上げ速度を速く設定している | 調整の方向0に近づける、または0 | 理由待機なしでも行頭からの読み上げに追いつきやすい |
| 出力の切り替わりが速く、読み上げが行の途中から始まる | 調整の方向既定の50より上げる | 理由カーソル移動と発話開始のタイミングを合わせる余地が増える |
| SSH経由で遅延の大きい回線を使う | 調整の方向実機で試しながら調整 | 理由ネットワーク遅延と待機時間が重なって体感の間が伸びることがある |
非対話モード(-pフラグ)でスクリプトを流す | 調整の方向変更不要 | 理由非対話モードはスクリーンリーダーモードの影響を受けないため、この変数も効果を持たない |
上限が5000ミリ秒に固定されている点も踏まえておくと安全です。極端に大きい値(例えば60000)を指定しても、Claude Codeは5秒に切り詰めて扱います。無限に待たせる設定はできません。
他の待機系アクセシビリティ設定との違い
スクリーンリーダーモードには、待機時間を調整する環境変数がもう1つあります。カーソル表示を変える設定も含めて、性質の違いを比較します。
| 変数 | 待つタイミング | 既定値 | 上限 | 必須バージョン |
|---|---|---|---|---|
CLAUDE_AX_PREPARK_MS | 待つタイミング新規・変更行を書き込む直前 | 既定値50ms | 上限5000ms | 必須バージョンv2.1.233以降 |
CLAUDE_AX_STARTUP_QUIET_MS | 待つタイミング起動確認行を表示した直後 | 既定値3000ms | 上限600000ms(10分) | 必須バージョンv2.1.217以降 |
CLAUDE_CODE_ACCESSIBILITY | 待つタイミング待機ではなくカーソル表示の切り替え | 既定値オフ相当 | 上限— | 必須バージョン— |
CLAUDE_AX_STARTUP_QUIET_MSは起動時に1回だけ働く待機で、[Screen Reader Mode: on via ...]という確認行をスクリーンリーダーが読み終えるまで、以降の描画を止めるためのものです。何かキーを押せば途中で解除できます。対してCLAUDE_AX_PREPARK_MSはセッション中ずっと、行が書き換わるたびに繰り返し働きます。上限が5秒と10分で大きく違うのも、前者が毎回発生する待機、後者が起動時1回の待機という役割の差から来ています。
CLAUDE_CODE_ACCESSIBILITYは待機時間の変数ではありません。1を設定するとネイティブのターミナルカーソルを常に表示したままにし、macOSのZoomのような画面拡大鏡がカーソル位置を追跡できるようにします。スクリーンリーダーモードとは独立していて、両方を同時に設定しても競合しません。
待機の細かい調整に至るまでの経緯
スクリーンリーダーモード自体はv2.1.208の公式changelogで初めて明記されました。その後、待機に関わる設定は段階的に増えています。
| バージョン | 公開日 | 待機まわりの変更 |
|---|---|---|
| v2.1.208 | 公開日2026-07-14 | 待機まわりの変更スクリーンリーダーモードを公式changelogで初告知 |
| v2.1.217 | 公開日2026-07-21 | 待機まわりの変更起動確認行の読み上げ待ちCLAUDE_AX_STARTUP_QUIET_MSを追加 |
| v2.1.222 | 公開日2026-08-04 | 待機まわりの変更行末削除時の読み上げ精度を修正(待機時間そのものの変更ではない) |
| v2.1.233 | 公開日2026-08-14 | 待機まわりの変更行送り待ちを調整できるCLAUDE_AX_PREPARK_MSを追加 |
起動時の待機(CLAUDE_AX_STARTUP_QUIET_MS)が先に追加され、1か月足らず後にセッション中ずっと働く行送りの待機(CLAUDE_AX_PREPARK_MS)が加わった形です。読み上げの精度を上げる細かい修正が重なった末に、待機時間そのものをユーザー側で調整できるようにする方向へ進んでいると見えます。
よくあるつまずき
- 環境変数を設定したのに何も変わらない場合、
CLAUDE_AX_SCREEN_READERでスクリーンリーダーモード自体を有効にしているか確認します。モードがオフのままではCLAUDE_AX_PREPARK_MSは参照されません claude --versionでv2.1.233より古いバージョンを使っていないか確認します。要件を満たさないバージョンでは値を渡しても既定の挙動のままです- SSH先で設定した変数が効かない場合、環境変数はローカル側ではなくClaude Codeが実際に動くリモートマシンに置く必要があります。他のアクセシビリティ関連の環境変数と同じ制約です
- 値を大きくしすぎて反応が鈍く感じる場合、上限は5000ミリ秒です。まず
100や150程度の小刻みな値から試すと、読み上げとの相性を見極めやすくなります
よくある質問
VS Codeの拡張機能でもCLAUDE_AX_PREPARK_MSは効きますか
いいえ。スクリーンリーダーモードが調整するのはターミナルのインターフェースだけで、VS Code拡張機能のチャットパネルには影響しません。v2.1.236以降、拡張機能側は設定なしで会話の進行をスクリーンリーダーへアナウンスするため、CLAUDE_AX_PREPARK_MSを含む一連のスクリーンリーダーモード向け環境変数はターミナル利用時にだけ意味を持ちます。
0にすると読み上げが途中から始まりませんか
待機をなくすと、カーソル移動と発話開始のタイミングがぴったり重なる場面が増える可能性があります。公式ドキュメントは待機の目的を「スクリーンリーダーが行の先頭から読めるようにするため」と説明しているため、0で違和感が出る場合は既定の50msに戻すか、100ms程度から少しずつ試すのが安全です。
まとめ
CLAUDE_AX_PREPARK_MSは、スクリーンリーダーモードで行を書き込む直前の待機を0から5000ミリ秒の範囲で調整する環境変数です。既定の50ミリ秒で読み上げの先頭が欠ける、あるいは逆に間延びして感じるときに、CLAUDE_AX_STARTUP_QUIET_MS(起動時1回の待機)やCLAUDE_CODE_ACCESSIBILITY(拡大鏡向けのカーソル表示)とは役割が別だと踏まえたうえで値を調整します。有効にするにはv2.1.233以降が必要なので、claude --versionで確認してから試します。スクリーンリーダーモード全体の設定手順はClaude Codeスクリーンリーダー対応ガイドにまとめてあり、この変数が追加されたv2.1.233のリリースノートや、モード自体が最初に入ったv2.1.208のリリースノートでも前後の変更点を確認できます。他の実行系の待機時間を環境変数で調整する例としては、応答が止まったときのタイムアウトを扱うClaude Codeの応答が止まったときのタイムアウト調整方法も参考になります。