Hammerspoon:LuaでmacOSを自動化―オープンソースのパワーツール

Hammerspoon: Luaで動かすmacOSオートメーションツール

macOSユーザーは、日々同じドラッグ&ドロップやメニュークリックを繰り返すことが多いです。開発者・デザイナー、あるいはパワーユーザーを問わず、これらの習慣を自動化すれば何時間もの作業を節約できます。そこで登場するのが Hammerspoon です。軽量でオープンソースのアプリケーションとして、macOS APIをLuaスクリプト言語へ公開します。Hammerspoonを使えば、次のようなことが可能です。

  • アプリ起動、ウィンドウタイル、メディア制御のホットキーを作成。
  • クリップボード履歴、通知、ファイル管理を自動化。
  • Objective‑CやSwiftで書かれたカスタムモジュールでOSを拡張。
  • ハードウェアイベント(Bluetooth、キーボードLED、Stream Deckボタン等)にフック。
  • Lua HTTPライブラリを介してDropbox、GitHub等外部サービスと統合。

はじめに

1. Hammerspoonのインストール

# Homebrew Caskを使用
brew install --cask hammerspoon

あるいは、GitHubリリースページから最新版をダウンロードし、Hammerspoon.appApplications フォルダへドラッグしてください。

2. 最初のスクリプト設定

初回起動時に Hammerspoon は ~/.hammerspoon/ ディレクトリを作成します。ここに init.lua という名前のファイルを置くと、メイン設定ファイルとして機能します。

-- ~/.hammerspoon/init.lua
hs.loadSpoon("Window")

-- 例: Cmd‑Shift‑F で Finder ウィンドウを切り替え
hs.hotkey.bind({"cmd", "shift"}, "F", function()
  local f = hs.application.get("Finder")
  if f then
    f:activate()
    f:hide()
  else
    hs.osascript.applescript('tell application "Finder" to activate')
  end
end)

ファイルを保存し、デフォルトのリロードホットキー Cmd‑Alt‑F を押すと、カスタムキー割り当てが動作します。

フックとモジュールで拡張

Hammerspoonは hs.windowhs.pathmonitorhs.audiodevice など macOS のサービスを公開する「拡張セット」ライブラリを標準装備しています。追加の拡張は専用リポジトリ extensions で確認でき、C/Objective‑C で書き直接ビルドに含めることも可能です。

-- 例: 動的なウィンドウレイアウトを設定
hs.hotkey.bind({"cmd", "shift"}, "W", function()
  local win = hs.window.focusedWindow()
  if win then win:move({x=0, y=0, w=0.5, h=1}) end
end)

luarocks などのパッケージマネージャーを使用してサードパーティLuaライブラリを導入し、hs.http モジュールでシンプルなウェブフックを作成することもできます。

コミュニティとリソース

  • ドキュメント – 公式の Getting Started GuideAPI Docs は必携です。
  • – リポジトリの samples/ ディレクトリからサンプル init.lua を参照・コピー。
  • サポート – Libera の #hammerspoon IRC チャンネル、または Google Group に参加。
  • 貢献 – レポジトリをフォークし、ルートで make test を実行してからプルリクエストを提出。プロジェクトは厳格な lint/CI パイプラインを採用しています。

パワーユーザー向けヒント

  1. 効率的にリロードCmd‑Option‑F を押してアプリを再起動せずに設定を更新。
  2. Spoon サポートを活用hs.loadSpoon("<name>")WindowDesktop などのサードパーティライブラリをロード。
  3. コンソールでデバッグhs.debug.disable() でデバッグ出力を非表示、あるいは print でロジックをトレース。
  4. ログイン時に自動起動~/.hammerspoon/init.lua をログイン項目に追加して、起動時にスクリプトを実行。
  5. 再利用可能モジュール – Lua モジュールを ~/.hammerspoon/modules/ に置き、init.lua から require("module") で呼び出す。

次のステップ

  • 自分だけのオートメーションツールキットを構築:カスタムメディアコントローラーを追加、ウィンドウタイルマネージャーを作成、あるいはコーディングワークフローを自動化。
  • Stream Deck やタッチバーとの統合を Hammerspoon 拡張機能で試す。
  • 高度な機能を探求するなら Hammerspoon Extension Wiki を閲覧。

Lua のシンプルさと macOS API の奥深さを組み合わせることで、Hammerspoonはデスクトップをカスタマイズ可能で応答性の高い環境へと「プログラム」します。さあ、スクリプトを書き始め、作業効率を急上昇させましょう。

この記事を共有