macOS向けの自動化ツールHammerspoon 1.1.0が12月24日にリリースされました。2024年夏の1.0.0リリース後1年ほど静かな時期が続いていましたが、今回のアップデートには、日常的に使うユーザーに嬉しい修正や改善が多数含まれています。また今回のリリースに合わせ、開発者の1人であるcmsj氏はRedditで、Hammerspoonの今後の開発計画について説明し、注目を集めています。Hammerspoon 1.1.0 の主な変更点Hammerspoon 1.1.0 の主な変更点は次の通りです。修正・改善:hs.task の引数がすべて文字列かどうか検証されるようにLua 初期化時の package.path が正しく展開されるようにhs.httpserver:start() が WebSocket を正しく処理hs.window.filter がアプリ名ではなく PID ベースで追跡Stream Deck Mini v1 のボタンコールバックが正常動作アプリ終了後に hs.window:application() が Lua スタックを壊す可能性を修正終了済みアプリの PID がイベントハンドラに渡されクラッシュする問題を修正挙動の変更:hs.urlevent の scheme/host が常に小文字化hs.menubar:setMenu() が毎回メニューを再生成しなくなり、表示中でも変更可能にhs.window:setFrame() が “Enhanced UI” のアニメーションを考慮hs.mouse.trackingSpeed() がトラックパッド速度にも対応新機能:http/https のデフォルトハンドラとして動作する際、Handoff URL をサポートhs.eventtap が “smart magnify” イベントを生成可能にhs.audiodevice:thru() / setThru() により、あるデバイスの音声を別デバイスへモニタリング出力できるようにプロジェクトの現状 開発者3名の負担と Objective‑C の壁Hammerspoonの開発者cmsj氏は、Redditでプロジェクトの現状について説明しています。同氏によると、Hammerspoon 10年の歴史の中で多くのコントリビューターに支えられてきましたが、実質的なメンテナンスの大部分は以下の3名が担ってきました。asmagilllatenitefilmscmsjしかし近年は、現実世界の忙しさや、Objective‑C ベースの巨大プロジェクトを触るモチベーションの低下により、開発の勢いは過去最低レベルにまで落ち込んでいるとのことです。Hammerspoon は「バッテリー同梱」思想で便利な機能をすべて内包していますが、内部は小さなライブラリの集合体で構成されており、ビルドも配布も複雑です。さらに、Lua と Objective‑C をつなぐ巨大なブリッジ LuaSkinが存在し、新規コントリビューターにとって参入障壁が高い状態が続いています。LuaからJavaScriptへ?現状を打破するため、cmsj氏は数ヶ月前から、HammerspoonをSwiftでゼロから作り直す実験を進めています。LuaSkinを捨て、代わりにJavaScriptCore(JSC)を採用することで、Web開発者に馴染みがあり、Luaよりユーザー層が広いJavaScriptを使用することができるようになります。まだ未完成で設計に迷いもあるものの、「現代的で貢献しやすい Hammerspoon」への道筋が見えたと語っています。ただし、v2でJavaScriptを採用する可能性は高いものの、現時点では方向性は決まっておらず、以下の3つの選択肢が存在するとのこと。v1 をこのまま続けるv1 をメンテナンスモードにしつつ、v2 を本格開発するv1 を廃止し、v2 へ移行を促すコミュニティの意見を募りながら、今後の方針を決めていくとのことです。まとめ:Hammerspoon は大きな転換点に立っている今回の 1.1.0 リリースは、単なるアップデートではなく、Hammerspoon の次の10年をどうするかという重要な問いかけも行われています。Objective‑Cの限界や、LuaSkinの巨大さ、コントリビューター不足といった問題を解決するための、Hammerspoon v2(Swift + JS)は現実的な計画かもしれません。タイトルHammerspoon公式サイトhttp://www.hammerspoon.org/ソフトアンテナhttps://softantenna.com/softwares/7048-hammerspoon説明Luaスクリプト経由でOS Xの各種機能を呼び出すことが出来る自動化ツール。