MacOS自動化実践ガイド: ShortcutsとHammerspoonで業務効率を最大化
はじめに: なぜShortcutsとHammerspoonを組み合わせるのか?
この記事では、MacOSの自動化ツールであるShortcutsとHammerspoonを組み合わせることで、日々の業務効率を劇的に向上させる方法を解説します。Shortcutsは直感的なインターフェースで簡単なタスクを自動化するのに適しており、HammerspoonはLuaスクリプトによる高度なカスタマイズが可能です。この2つを連携させることで、単純な作業から複雑なワークフローまで、幅広い自動化を実現できます。
この記事を読むことで、以下のことができるようになります。
- Shortcutsを使って、ファイル操作、テキスト処理、Web API連携などの基本的なタスクを自動化する。
- Hammerspoonを導入し、Luaスクリプトの基礎を理解して、高度な自動化環境を構築する。
- ShortcutsとHammerspoonを連携させ、アプリケーションの起動、ウィンドウ操作、クリップボード拡張など、より複雑なワークフローを実装する。
- 実際の業務で役立つ自動化スクリプトの例を参考に、自身の作業を効率化する。
- 自動化におけるトラブルシューティングやセキュリティに関する注意点を理解する。
Shortcutsで始める: 簡単なタスク自動化レシピ
Shortcutsは、ドラッグ&ドロップでアクションを組み合わせて自動化フローを作成できるツールです。ここでは、具体的なレシピをいくつか紹介します。
ファイル操作: 特定フォルダのファイルを日付順に並び替える
- 「ファイル」アクションで、対象フォルダを選択します。
- 「ファイルを取得」アクションで、フォルダ内のファイルを取得します。
- 「並び替え」アクションで、「作成日」または「変更日」を基準に並び替えます。
- 「ファイル」アクションで、並び替えたファイルを別のフォルダに移動またはコピーします。
テキスト処理: クリップボードのテキストをMarkdown形式に変換する
- 「クリップボードの内容を取得」アクションで、クリップボードのテキストを取得します。
-
「テキスト」アクションで、Markdown形式に変換するルールを定義します。(例:
> {クリップボード}
) - 「クリップボードにコピー」アクションで、変換後のテキストをクリップボードにコピーします。
Web API連携: 現在の天気を取得して通知する
-
「URLを取得」アクションで、天気予報APIのURLを指定します。
例: https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=YOUR_API_KEY
- 「JSONを取得」アクションで、APIレスポンスをJSON形式で取得します。
- 「辞書から値を取得」アクションで、必要な情報(例: 天気、気温)を抽出します。
- 「通知を表示」アクションで、取得した情報を通知します。
Hammerspoon導入: 高度な自動化のための環境構築
Hammerspoonは、Luaスクリプトを使用してMacOSを高度にカスタマイズできるツールです。
インストール
- Hammerspoon公式サイトからダウンロードし、インストールします。
-
~/.hammerspoon/init.lua
ファイルを作成し、設定を記述します。
Luaスクリプトの基本
Luaは軽量なスクリプト言語で、Hammerspoonの設定に利用されます。以下は基本的な例です。
-- ホットキーの登録
hs.hotkey.bind({"cmd", "shift"}, "m", function()
hs.alert.show("Hello, Hammerspoon!")
end)
-- アプリケーションの起動
hs.hotkey.bind({"cmd", "shift"}, "c", function()
hs.application.launchOrFocus("Google Chrome")
end)
設定ファイルの例
-- ウィンドウ操作
local function moveWindowToScreen(screen, window)
local screenFrame = screen:frame()
window:moveToScreen(screen)
window:setFrame({x=screenFrame.x, y=screenFrame.y, w=screenFrame.w, h=screenFrame.h})
end
hs.hotkey.bind({"ctrl", "alt"}, "left", function()
local win = hs.window.focusedWindow()
local currentScreen = win:screen()
local prevScreen = currentScreen:previous()
if prevScreen then
moveWindowToScreen(prevScreen, win)
end
end)
hs.hotkey.bind({"ctrl", "alt"}, "right", function()
local win = hs.window.focusedWindow()
local currentScreen = win:screen()
local nextScreen = currentScreen:next()
if nextScreen then
moveWindowToScreen(nextScreen, win)
end
end)
ShortcutsとHammerspoonの連携: 複雑なワークフローの実現
ShortcutsからHammerspoonの機能を呼び出すことで、より複雑な自動化が可能です。
ShortcutsからHammerspoonのスクリプトを実行する
- Hammerspoonで、実行したいスクリプトを関数として定義します。
function myCustomFunction(param) hs.alert.show("Param: " .. param) end
- Shortcutsの**「URLを取得」アクション**で、HammerspoonのカスタムURLスキームを呼び出します。
例: hammerspoon://myCustomFunction?param=test
- Hammerspoon側で、カスタムURLスキームをハンドリングする設定を追加します。
hs.urlevent.bind("myCustomFunction", function(params) myCustomFunction(params.param) end)
具体例: アプリケーション起動、ウィンドウ操作、クリップボード拡張
- Shortcutsで特定のアプリを起動し、Hammerspoonでそのアプリのウィンドウを特定の位置に移動させる。
- Shortcutsでクリップボードの内容を取得し、Hammerspoonで特定のフォーマットに変換してからクリップボードにコピーする。
- Shortcutsで特定のWebページを開き、Hammerspoonでそのページの特定の要素を抽出する。
実例: 業務効率を上げる自動化スクリプト集
メール処理: 特定の差出人からのメールを自動でアーカイブする
- Shortcutsで、メールアプリのAPIを使い、特定の差出人からのメールを検索します。
- Shortcutsで、検索結果のメールをアーカイブします。
- Hammerspoonで、メールアプリが起動している場合のみ、この処理を実行するように設定します。
Slack連携: 特定のチャンネルの未読メッセージ数を通知する
- Shortcutsで、Slack APIを使い、特定のチャンネルの未読メッセージ数を取得します。
- Shortcutsで、取得した未読メッセージ数を通知します。
- Hammerspoonで、特定の時間帯のみ、この処理を実行するように設定します。
開発環境のセットアップ: プロジェクトごとにターミナルとエディタを起動する
- Shortcutsで、プロジェクトのディレクトリを引数として、Hammerspoonのスクリプトを実行します。
- Hammerspoonで、指定されたディレクトリでターミナルを開き、エディタを起動します。
- Hammerspoonで、ターミナルとエディタのウィンドウを適切な位置に配置します。
トラブルシューティングと注意点
よくあるエラーと解決策
- Shortcutsの実行エラー: アクションのパラメータ設定や、APIキーの入力ミスなどを確認します。
- Hammerspoonのスクリプトエラー: Luaの構文エラーや、APIの使い方が間違っている可能性があります。Hammerspoonのコンソールでエラーメッセージを確認します。
- ShortcutsとHammerspoonの連携エラー: カスタムURLスキームの設定や、Hammerspoon側のハンドラーの設定を確認します。
セキュリティに関する考慮事項
- APIキーなどの機密情報をスクリプトに直接記述しないように注意します。環境変数やキーチェーンなどを活用しましょう。
- Hammerspoonのスクリプトは、実行権限を適切に管理しましょう。
- 信頼できないソースからのスクリプトは実行しないようにしましょう。
まとめ: 自動化の未来と更なる学習リソース
ShortcutsとHammerspoonを組み合わせることで、MacOSの自動化の可能性は無限に広がります。この記事で紹介した例を参考に、自身の業務に合わせてカスタマイズし、更なる効率化を目指しましょう。
更なる学習リソース
- Shortcuts: Apple公式サイトのドキュメントや、オンラインコミュニティを参考にしましょう。
- Hammerspoon: Hammerspoon公式サイトのドキュメントや、GitHubのリポジトリを参考にしましょう。
- Lua: Luaの公式ドキュメントや、オンラインチュートリアルを参考にしましょう。