macOS caffeinateコマンドでMacBookの省エネモードを防止する

はじめに

Claude Codeで長時間作業を回しておいて席を外したことがある。戻ってみるとMacBookがスリープに入って作業が止まっていた。ターミナルで何かを回しているのにMacBookが勝手に落ちてしまう問題、macOSの基本コマンド一つで解決できる。

1. caffeinateとは何か

caffeinatemacOSに基本内蔵されているコマンドだ。別途インストールする必要はない。名前の通り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まで登録しておけば完全に忘れて生きていける。

コメントする