やあ、TypeScriptの世界へようこそ。フロントエンドの最前線でコードを書いていると、たまに「なぜか保存したのにコンパイルが走らない!」とか「逆に、何もしてないのにPCが唸り声を上げている…」なんていう摩訶不思議な現象に出会うことがあるよね。
今日はそんな「TypeScriptの監視(watch)モード」について、少しだけ深掘りしてみよう。難しく聞こえるかもしれないけれど、実はこれ、「あなたの専属秘書が、どれくらい細かく仕事の状況をチェックするか」という設定の話なんだ。
—
1. 監視モード(watch)って何をしているの?
TypeScriptには、ファイルを書き換えるたびに自動で変換(コンパイル)してくれる `tsc –watch` という便利な機能があるよね。
これは例えるなら、「あなたが原稿を書き終えるたびに、背後で目を光らせている校正担当者」のようなもの。あなたが保存ボタンを押した瞬間、彼らは「おっと、更新されたぞ!」と気づいて、猛スピードで修正を反映してくれる。
でも、この校正担当者が「仕事熱心すぎて、少しでも気配を感じるたびに全てを確認しに行こうとする」とどうなるだろう? 部屋の掃除をするだけで「今のは修正ですか?」と聞きに来られたら、たまったものじゃないよね。
ここで登場するのが `tsconfig.json` 内の `watchOptions` なんだ。
—
2. watchOptionsで「仕事のやり方」を調整しよう
`tsconfig.json` にこの設定を書き加えることで、TypeScriptに「どこを監視して、どこは無視していいのか」を教えることができる。
まずは、よく使う設定項目をコードで見てみよう。
{
“compilerOptions”: {
// …普段のコンパイル設定
},
“watchOptions”: {
// 1. 監視対象から除外する設定(ノイズを減らす)
“excludeFiles”: [“dist”, “node_modules”],
// 2. ファイル変更を検知する手法の指定
“watchFile”: “fixedPollingInterval”
}
}
監視を「サボる」ことも大切(excludeFiles)
例えば、`node_modules` の中身なんて、自分で書き換えることはまずないよね。それなのに、TypeScriptが律儀に「node_modulesの中身に変化はないか?」とチェックし続けたら、PCのCPUは悲鳴を上げてしまう。
`excludeFiles` は、「あそこは絶対に触らないから、見なくていいよ!」と伝えて、監視の手間を省くための設定だ。これだけで、エディタの動作が驚くほど軽快になるはずだよ。
監視の「手段」を変える(watchFile)
実は、OSや環境によっては、TypeScriptのデフォルトの監視方法がうまくいかないことがある。「保存したのにコンパイルが始まらない!」という時は、ここを疑ってみよう。
- `fixedPollingInterval`(ポーリング):
これは「一定時間ごとに、定期的に様子を見に行く」スタイル。例えるなら、「5分おきに玄関を覗いて、郵便物が届いていないか確認する」方式。確実だけど、ちょっとだけタイムラグがある。
- `useFsEvents`(OSネイティブ):
OSが「今、ファイルが変わったよ!」と教えてくれるのを待つスタイル。「インターホンが鳴ったら出る」という効率的な方法だ。基本的にはこれが一番速い。
—
3. つまずいた時の処方箋
もし、あなたが「保存しているのに画面が変わらない!」という状況に陥ったら、まずは焦らず以下のステップを試してみてほしい。
1. まずは「再起動」: シンプルだけど、エディタ(VSCodeなど)やターミナルのプロセスが何かを掴んで離さないことはよくある。
2. `watchOptions` を確認: 特にDockerやWSL(Windows上でLinuxを動かす環境)を使っている場合、ファイルの変化がうまく伝わらないことがある。そんな時は、あえて `fixedPollingInterval` を選ぶと、泥臭いけれど確実に動くようになるよ。
—
最後に:完璧を目指さなくていい
TypeScriptのツール設定は、最初から全てを理解する必要なんてないんだ。
「なんだか最近、PCが重いな」
「保存した後の反応が遅いな」
そう感じた時に、この `watchOptions` という引き出しを思い出して、少しずつ調整してみてほしい。「こう設定したら、少し快適になった!」という小さな成功体験の積み重ねが、あなたを一流のエンジニアへと近づけていく。
大丈夫、TypeScriptはあなたの最高のパートナーだ。無理に全部を暗記せず、困った時にまたここへ戻ってきてくれればいい。君のコーディングライフが、少しでも快適なものになりますように!

コメント