はじめに
Claude Codeで長時間作業を回しておいて席を外したことがある。戻ってみるとMacBookがスリープに入って作業が止まっていた。ターミナルで何かを回しているのにMacBookが勝手に落ちてしまう問題、macOSの基本コマンド一つで解決できる。
1. caffeinateとは何か
caffeinateはmacOSに基本内蔵されているコマンドだ。別途インストールする必要はない。名前の通りMacBookにカフェインを飲ませて眠らせないようにするものだ。
システム環境設定で「スリープさせない」に変更することもできるが、それでは毎回元に戻さなければならない。caffeinateは必要な瞬間だけスリープを防ぎ、作業が終わると自動的に元に戻る。
2. 基本的な使い方 — 新規実行時
ターミナル作業を始める時からスリープを防ぐには、caffeinateの後に実行するコマンドを付ければ良い。
caffeinate -dims claude
こうするとClaude Codeが実行されている間、MacBookは絶対にスリープしない。Claude Codeを終了するとcaffeinateも自動的に一緒に終了する。
-dimsが何か気になると思うが、それぞれ異なる種類のスリープを防ぐフラグだ。
| フラグ | 意味 | 説明 |
|---|---|---|
-d |
display | ディスプレイのスリープ防止 (画面オフ防止) |
-i |
idle | システムアイドルスリープ防止 (何も入力がなくてもスリープしない) |
-m |
disk | ディスクスリープ防止 |
-s |
system | システムスリープ防止 (電源接続時) |
画面は消えても構わないから作業だけ止まらなければ良いなら、-iだけでも十分だ。
caffeinate -i claude
3. 既に実行中のプロセスに適用する
既にClaude Codeを実行している状態で「あ、caffeinateをかけてなかった」と思う時がある。この時は別のターミナルタブを開いて-wフラグを使えば良い。
# 他のターミナルタブで実行
caffeinate -dims -w $(pgrep -ox "claude")
-wは特定のプロセスID(PID)が生きている間スリープを防止する。pgrep -ox "claude"は現在実行中のclaudeプロセスのPIDを探してくれる。
もしpgrepが複数のプロセスを探してエラーが出たら-oフラグだけを使えば良い。(最も古い親プロセス一つだけを選択)
caffeinate -dims -w $(pgrep -o "claude")
4. 時間を指定して使う
特定の時間だけスリープを防止したい時は、-tフラグに秒単位で時間を指定する。
# 2時間(7200秒)の間スリープ防止
caffeinate -dims -t 7200
5. 実践活用例
Claude Code以外にもターミナルで時間がかかる作業なら全部活用できる。
# 大容量ビルド
caffeinate -i ./gradlew assembleRelease
# 大きいファイルのダウンロード
caffeinate -i wget https://example.com/big-file.zip
# npm インストール + ビルド
caffeinate -i bash -c "npm install && npm run build"
# サーバー実行
caffeinate -dims node server.js
核心は簡単だ。「時間がかかるコマンドの前にcaffeinate -iをつける。」これだけ覚えておけば良い。
6. 注意点
caffeinateをかけてもMacBookの蓋を閉じるとスリープに入る (clamshell mode)。蓋を閉じたまま使うには外部モニター + 電源 + キーボード/マウスが接続されている必要がある。- バッテリーモードで
-sフラグは効果がない。バッテリーで使う時は-iフラグを使おう。 caffeinateを終わらせるには該当ターミナルでCtrl+Cを押せば良い。
7. alias登録 — 毎回打つのが面倒な時
毎回caffeinate -dims claudeを打つのは面倒だ。aliasを登録するとclaudeだけ打っても自動的にcaffeinateが適用される。
~/.zshrc (bashを使っている人は~/.bashrc)に次の1行を追加する。
# ~/.zshrcに追加
alias claude='caffeinate -dims claude'
保存後ターミナルを新しく開くかsource ~/.zshrcを実行すると適用される。
source ~/.zshrc
これからはただclaudeだけ打てばcaffeinateがかかった状態でClaude Codeが実行される。特に気にすることがなくなる。
もしcaffeinateなしで純粋にclaudeだけを実行したい時はcommandキーワードを使えば良い。
# aliasを無視して原本claudeを実行
command claude
感想
些細なことだが知らないと地味にイライラする問題だ。特にClaude CodeのようにAIと対話しながら長時間作業を回す場合、途中でMacBookがスリープしてセッションが切れると結構戸惑う。caffeinate一つ知っておけばこのような状況を完全に防ぐことができる。aliasまで登録しておけば完全に忘れて生きていける。