(私の自己満足のためにAIを使って構築した「かっこいいウィンドウマネージメント」になります)
「作業に集中したいのに、気づけばデスクトップがウィンドウのゴミ屋敷…」
大画面モニターを使っている人なら、一度は体験したことがあるのではないでしょうか。
私の場合、42.5インチの超大型モニターを導入して「快適な作業環境ゲットだ!」と喜んだのも束の間 ── 気づけば広い画面は多数のウィンドウで散らかり放題でした。
大画面環境では画面2分割での作業が理想です。画面を2分割しても縦にも長いこの42.5インチの超大型モニターは今でも最強だと思っています。しかし、次第に問題点も浮き彫りになりました。
- 次第に3分割、4分割へとマルチウィンドウ化してしまう
- 他のウィンドウのせいで気が散る
- でも、画面が大きすぎてシングルタスクには向かない
思い出しました。私はもともとマルチタスク否定派です。
「ひとつに集中して没頭したい!」という欲求はむしろ前より高まっていきました。
でも、大画面は逆に広すぎて落ち着かない…。
そこで行き着いたのが、「キーひとつでウィンドウを最適な大きさで中央に配置して、他はブラックアウト」という発想でした。完成した動きがこちらになります:

- 中央にウィンドウを80%くらいの大きさで表示(作業にフォーカスしやすい)
- 背景を暗く(余計なものが視界から消える)
- マウス誤操作も防止(地味に助かる)
- デモではわかりやすさのために背景を60%に設定しましたが、おすすめの設定は真っ暗です。
これをワンキーで呼び出し、もう一度押せば元通り。まさに“切り替え式の集中モード”。
正直「見た目がカッコイイ」だけなんですが、でも思った以上に快適でした(完全に自己満足)。
同じように「大画面モニターで散らかりすぎ問題」に悩む人には、きっと共感してもらえるはずです。
この記事のターゲット
- 🎯 超大型モニタを使っているのMacユーザー
- 💻 カッコイイ環境構築が好きな人
- 🤖 AIを使ったプログラミングに興味がある人(特に非エンジニア)
- 🛠️ yabai + skhd を既に使っている人 ※ yabai + skhd の過去の記事は下記

実現したいこと
ホットキーひとつ(shift + alt - c
)で以下をすべて実行:
- ウィンドウが画面中央にフロート表示
- 背景が自動暗転
- yabaiでのマウスホバーでのフォーカス切り替えを無効化
- 現在のウィンドウフォーカスは維持
- 元のタイル配置に完全復帰
- HazeOverを自動無効化
- すべての設定を元に戻す
- ウィンドウフォーカスは維持
まさに映画のような集中環境の切り替えです。
どんなツールを使えば叶うか?
私は「yabai + skhd」の組み合わせでウィンドウマネージメントをしているので、どんなツールと組み合わせればこれが実現できるか聞いてみました。
- HazeOver(有料)で AppleScript が使える
- Hammerspoon(無料) で自作する
今回はAppleScriptで手軽に実現したいということと、HazeOverは有料でしたがシンプルさに惹かれて ① にすることにしました。(アプリを購入したが、この時点では本当に実現できるかは不明だった)

※ 無料で構築したいという方は、②の方を Claude AI で試しに構築してみてください。
前提環境と必須ツール
前提として Mac でのみ動作しますので注意してください。
この “見た目がカッコイイだけの” 集中モードを実現するには、以下のツールが必要です:
必須ツール
- HazeOver (有料 ¥1,000 – App Store)
- yabai (無料のウィンドウマネージャー)
- skhd (無料のホットキーデーモン)
- jq (JSON処理ツール)
環境構築
ターミナルで以下を入力:
# Homebrewでyabai, skhd, jqをインストール
brew install koekeishiya/formulae/yabai
brew install koekeishiya/formulae/skhd
brew install jq
# yabaiとskhdを起動
brew services start yabai
brew services start skhd
Claude AI との開発プロセス
Claude AI を使うのは私は初めてでしたが、思ってた以上に素晴らしかったです。使ったことがない人は是非使ってみてください。ちなみに無料プランですべて実行しています。入力プロンプトはここでは長くなるので割愛します。
私の要求
実現したいことに書きましたが、要は
HazeOverとyabaiを連携させて、ワンキーで完璧な集中環境を作りたい。元の状態に戻るのも完璧にしたい。
ということです。
Claude AI の提案
Claude AIは私の曖昧な要求を理解して、以下の実装方針を提案してくれました:
- 状態管理: ウィンドウのフロート状態で動作を切り分け
- 設定保存: 現在の設定を一時ファイルに保存
- AppleScript連携: HazeOverをスクリプトから制御
- 復元機能: すべての変更を完全に元に戻す
開発中に発生した問題と解決
Claude AIの解決: activate
ではなくset enabled
のみ使用
これは実際には私がプログラムの記述順序を入れ替えて直しました。
最終的な完成コード
Claude AIが生成した最終的なスクリプトがこちら:
#!/bin/bash
WINDOW_ID=$(yabai -m query --windows --window | jq -re '.id')
FLOAT_STATUS=$(yabai -m query --windows --window | jq -re '.["is-floating"]')
if [ "$FLOAT_STATUS" = "false" ]; then
# ウィンドウをフロート化する場合
# 現在のフォーカス設定を保存
CURRENT_FOCUS=$(yabai -m config focus_follows_mouse)
CURRENT_MOUSE=$(yabai -m config mouse_follows_focus)
echo "$CURRENT_FOCUS" > /tmp/yabai_focus_backup
echo "$CURRENT_MOUSE" > /tmp/yabai_mouse_backup
# フォーカス設定を無効化(先に実行)
yabai -m config focus_follows_mouse off
yabai -m config mouse_follows_focus off
# ウィンドウをフロート化してグリッド配置
yabai -m window --toggle float
sleep 0.1
yabai -m window --grid 10:10:1:1:8:8
# HazeOverを有効化(activateを使わずに直接enableだけ)
osascript -e 'tell application "HazeOver" to set enabled to true'
# 最後にフォーカスを明示的に設定(HazeOver後に実行)
yabai -m window --focus "${WINDOW_ID}"
# 復元スクリプト実行
/tmp/yabai-restore/${WINDOW_ID}.restore 2>/dev/null || true
else
# (else部分は変更なし)
# HazeOverを無効化
osascript -e 'tell application "HazeOver" to set enabled to false'
# ウィンドウをタイル化
yabai -m window --toggle float
# 保存された位置情報を復元
if [ -f /tmp/yabai_window_${WINDOW_ID}_backup ]; then
SAVED_POSITION=$(cat /tmp/yabai_window_${WINDOW_ID}_backup)
SAVED_X=$(echo "$SAVED_POSITION" | cut -d',' -f1)
SAVED_Y=$(echo "$SAVED_POSITION" | cut -d',' -f2)
SAVED_W=$(echo "$SAVED_POSITION" | cut -d',' -f3)
SAVED_H=$(echo "$SAVED_POSITION" | cut -d',' -f4)
# 元の位置とサイズに復元
yabai -m window --move "abs:${SAVED_X}:${SAVED_Y}"
yabai -m window --resize "abs:${SAVED_W}:${SAVED_H}"
# 一時ファイルを削除
rm /tmp/yabai_window_${WINDOW_ID}_backup
fi
# 既存の復元スクリプトも実行(もしあれば)
/tmp/yabai-restore/${WINDOW_ID}.restore 2>/dev/null || true
# フォーカスを維持
yabai -m window --focus "${WINDOW_ID}"
# 保存されたフォーカス設定を復元
if [ -f /tmp/yabai_focus_backup ] && [ -f /tmp/yabai_mouse_backup ]; then
SAVED_FOCUS=$(cat /tmp/yabai_focus_backup)
SAVED_MOUSE=$(cat /tmp/yabai_mouse_backup)
yabai -m config focus_follows_mouse "$SAVED_FOCUS"
yabai -m config mouse_follows_focus "$SAVED_MOUSE"
# 一時ファイルを削除
rm /tmp/yabai_focus_backup /tmp/yabai_mouse_backup
else
# デフォルト設定に戻す(お使いの環境に合わせて調整)
yabai -m config focus_follows_mouse autoraise
yabai -m config mouse_follows_focus on
fi
fi
実装手順
スクリプトファイルの準備
ターミナルで以下を入力:
mkdir -p ~/.config/yabai
touch ~/.config/yabai/toggle_float_focus.sh
chmod +x ~/.config/yabai/toggle_float_focus.sh
※ yabaiの設定ファイルがホームディレクトリ直下にある方は適宜書き直してください。
メインスクリプト(Claude AI作成)
~/.config/yabai/toggle_float_focus.sh
にこちらを記述:
ホットキー設定
skhdrc
ファイルに以下を追加:
# 究極の集中モード切り替え
shift + alt - c : ~/.config/yabai/toggle_float_focus.sh
設定反映
skhd --reload
カスタマイズのアイデア
ウィンドウサイズの調整
グリッド指定を変更してサイズをカスタマイズ:
# より大きなウィンドウ(画面の90%)
yabai -m window --grid 10:10:0.5:0.5:9:9
# より小さなウィンドウ(画面の60%)
yabai -m window --grid 10:10:2:2:6:6
複数のプリセット
異なるアプリで異なる配置:
APP_NAME=$(yabai -m query --windows --window | jq -re '.app')
case "$APP_NAME" in
"Code")
yabai -m window --grid 10:10:1:1:8:8 ;;
"Terminal")
yabai -m window --grid 10:10:2:2:6:6 ;;
*)
yabai -m window --grid 10:10:1.5:1.5:7:7 ;;
esac
感想
以下は Claude AI 自身に聞いて出てきたアウトプットです(笑)
その下に私の感想が書いてあります。
Claude AI の素晴らしかった点
- 複雑な要件を一度で理解: 「完璧な集中環境」という曖昧な要求を具体的な機能に翻訳
- 問題の予測: 人間が気づかない潜在的な問題を事前に対処
- 段階的な改善: 基本機能→問題修正→機能追加の流れが自然
- コードの品質: 可読性が高く、保守しやすい構造
- Codexではない通常のChatGPT(課金版GPT5)に聞いてもなかなか完成しなかったが、無料版であっても Claude AI は見事なまでに洗練されたコードを返してきたので驚いた。課金が必要な Claude Code も試してみたくなるほどだった(Codexも試してみたいとは思う)。
- UIが使いやすいし、見やすい。コーディングに特化しているとは思ったが、「ブログ記事の構成を考えて」などの指示も超使えるレベルだと思った。
人間の役割
- 要件の明確化: 「こういう動作がしたい」という具体的な説明
- 実際のテスト: スクリプトを実行して動作確認
- フィードバック: 「ここが思った通りに動かない」という報告やエラーを明示
- 「あなたが何を実現させたいか」ということがすべて
- そして「実現させたいこと」をAIに実行させるためのプロンプトエンジニアリング
- プログラミング言語そのものの理解:「何がどう記述されているか」がわかる
私は実はコーディングなんてできない非エンジニアで、プログラミングの知識もほとんどない。しかし、いまの時代ではコーディングはできなくても、「何がどう書かれているか?」といったプログラミング言語そのものへの理解は必須レベルなのではないかと思っている。プログラミング言語への理解さえ深まれば、私のような非エンジニアでもAIを活用していろいろなことができるのではないかとワクワクしている。
共同開発の効率
- 開発時間: 約30分で完成(人間だけなら数時間〜数日)
- 品質: 一発で動作する完成度
- 学習効果: AIの解決プロセスから多くを学習
- 動作が思い通りではないにせよ、最初から動くプログラムを書いてくれました。
- 細分化した指示をくれ、それを試すことで動かない箇所を特定できるように誘導が丁寧で、解決プロセスが勉強になった。
- コードの解説もあるが、「動作がこのようになる」といった説明を自然言語で説明してくれた。
まとめ
今回のこの設定は、完全に個人的にカッコイイなと思う動作を実装したいという自己満足から始まりました。手動でウィンドウの大きさを整えたり全画面表示で頑張ればそれで済む話ではありますのでね。
でも、実際に使ってみると:
- 見た目と動作がカッコイイ(重要)
- ウィンドウサイズが27インチ仕様みたいになってシングルタスクには最適
- キースイッチひとつで集中モードへ入れる手軽さが思ったより便利
- PCでの作業が楽しくなった
非エンジニアでは絶対に実現できなかったことがAIによって実現できました。
自己満足かもしれませんが、毎日の作業がたのしくなる価値のある投資でした。
非エンジニアでもAIを活用すればなんだか楽しいことができる気がしてきませんか?
私は妻(演奏家)のウェブサイトをAIを駆使して作成してみたいです。react + Next.js でApple公式サイトのようなおしゃれなものをね!
関連リンク
HazeOver – App Store(日本語)
