Claude AI でつくる大型モニタでのウィンドウ環境(macOS) —— 超集中モード

この記事のアイキャッチ画像です

(私の自己満足のためにAIを使って構築した「かっこいいウィンドウマネージメント」になります)

「作業に集中したいのに、気づけばデスクトップがウィンドウのゴミ屋敷…」
大画面モニターを使っている人なら、一度は体験したことがあるのではないでしょうか。

私の場合、42.5インチの超大型モニターを導入して「快適な作業環境ゲットだ!」と喜んだのも束の間 ── 気づけば広い画面は多数のウィンドウで散らかり放題でした。

大画面環境では画面2分割での作業が理想です。画面を2分割しても縦にも長いこの42.5インチの超大型モニターは今でも最強だと思っています。しかし、次第に問題点も浮き彫りになりました。

  • 次第に3分割、4分割へとマルチウィンドウ化してしまう
  • 他のウィンドウのせいで気が散る
  • でも、画面が大きすぎてシングルタスクには向かない

思い出しました。私はもともとマルチタスク否定派です。

「ひとつに集中して没頭したい!」という欲求はむしろ前より高まっていきました。
でも、大画面は逆に広すぎて落ち着かない…

そこで行き着いたのが、「キーひとつでウィンドウを最適な大きさで中央に配置して、他はブラックアウト」という発想でした。完成した動きがこちらになります:

  • 中央にウィンドウを80%くらいの大きさで表示(作業にフォーカスしやすい)
  • 背景を暗く(余計なものが視界から消える)
  • マウス誤操作も防止(地味に助かる)
  • デモではわかりやすさのために背景を60%に設定しましたが、おすすめの設定は真っ暗です。

これをワンキーで呼び出し、もう一度押せば元通り。まさに“切り替え式の集中モード”。
正直「見た目がカッコイイ」だけなんですが、でも思った以上に快適でした(完全に自己満足)。

同じように「大画面モニターで散らかりすぎ問題」に悩む人には、きっと共感してもらえるはずです。

この記事のターゲット

この記事は次の方にオススメです
Contents

実現したいこと

ホットキーひとつ(shift + alt - c)で以下をすべて実行

初回押下時:集中モード開始
再押下時:通常モードに復帰

まさに映画のような集中環境の切り替えです。

どんなツールを使えば叶うか?

私は「yabai + skhd」の組み合わせでウィンドウマネージメントをしているので、どんなツールと組み合わせればこれが実現できるか聞いてみました。

今回は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をスクリプトから制御
  • 復元機能: すべての変更を完全に元に戻す

開発中に発生した問題と解決

問題1: HazeOverが起動するとウィンドウフォーカスが外れる

Claude AIの解決: activateではなくset enabledのみ使用

問題2: ウィンドウが指定位置に配置されない

これは実際には私がプログラムの記述順序を入れ替えて直しました。

最終的な完成コード

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 の素晴らしかった点

  • 複雑な要件を一度で理解: 「完璧な集中環境」という曖昧な要求を具体的な機能に翻訳
  • 問題の予測: 人間が気づかない潜在的な問題を事前に対処
  • 段階的な改善: 基本機能→問題修正→機能追加の流れが自然
  • コードの品質: 可読性が高く、保守しやすい構造
私の感想

人間の役割

  • 要件の明確化: 「こういう動作がしたい」という具体的な説明
  • 実際のテスト: スクリプトを実行して動作確認
  • フィードバック: 「ここが思った通りに動かない」という報告やエラーを明示
私が思う人間の役割と必要なこと

私は実はコーディングなんてできない非エンジニアで、プログラミングの知識もほとんどない。しかし、いまの時代ではコーディングはできなくても、「何がどう書かれているか?」といったプログラミング言語そのものへの理解は必須レベルなのではないかと思っている。プログラミング言語への理解さえ深まれば、私のような非エンジニアでもAIを活用していろいろなことができるのではないかとワクワクしている。

共同開発の効率

  • 開発時間: 約30分で完成(人間だけなら数時間〜数日)
  • 品質: 一発で動作する完成度
  • 学習効果: AIの解決プロセスから多くを学習
Claude AI の可能性について

まとめ

今回のこの設定は、完全に個人的にカッコイイなと思う動作を実装したいという自己満足から始まりました。手動でウィンドウの大きさを整えたり全画面表示で頑張ればそれで済む話ではありますのでね。

でも、実際に使ってみると:

  • 見た目と動作がカッコイイ(重要)
  • ウィンドウサイズが27インチ仕様みたいになってシングルタスクには最適
  • キースイッチひとつで集中モードへ入れる手軽さが思ったより便利
  • PCでの作業が楽しくなった

非エンジニアでは絶対に実現できなかったことがAIによって実現できました。

自己満足かもしれませんが、毎日の作業がたのしくなる価値のある投資でした。

非エンジニアでもAIを活用すればなんだか楽しいことができる気がしてきませんか?

私は妻(演奏家)のウェブサイトをAIを駆使して作成してみたいです。react + Next.js でApple公式サイトのようなおしゃれなものをね!

関連リンク

HazeOver – App Store(日本語)

yabai GitHub

skhd GitHub

Claude AI

よかったらシェアしてね!
Contents