{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreidfuen6mwgfhb3hszifnosuttkrehvlq22zbfqkcxbwyrebawp24e",
"uri": "at://did:plc:g4wcucb6ko2frmko2x3lvgyi/app.bsky.feed.post/3mf2ucq5b4am2"
},
"path": "/2026/02/17/launchd-ui/",
"publishedAt": "2026-05-01T03:28:55.650Z",
"site": "https://efcl.info",
"tags": [
"launchd-ui",
"azu/launchd-ui",
"chronixd",
"LaunchControl",
"Tauri",
"Releases"
],
"textContent": "macOSのlaunchdエージェント・デーモンをGUIで管理できるアプリ launchd-ui を作りました。\n\n * GitHub: azu/launchd-ui\n\n\n\n## なぜ作ったか\n\nmacOSでcron的な定期処理をやろうとすると、launchdを使うことになります。 自分の場合は、git pullを定期的に実行してリポジトリを同期する仕組みや、`claude --remote`でClaude Codeを起動してスクリプトを実行する処理をlaunchdで管理しています。\n\nたとえば、chronixdで収集したアクティビティデータを元に、寝る前に`claude --remote`でその日の活動をまとめる処理を自動実行しています。 Claude Code on the webで実行することで、自動で処理が走りつつ、気になったことがあればスマホからでも対話的に追記できます。\n\nこういった定期処理をlaunchdで管理しているのですが、launchdの操作は基本的にCLIです。 `launchctl load`や`launchctl unload`といったコマンドを毎回調べながら打つのは面倒で、今どのエージェントが動いているか、次回いつ実行されるかといった情報も確認しにくいです。\n\nGUIツールはLaunchControlなどの有料ツールが多く、探すのも面倒だったので自分で作ることにしました。\n\n## 主な機能\n\nlaunchd-uiには次の機能があります。\n\n * ユーザーエージェント(`~/Library/LaunchAgents/`)、システムエージェント、システムデーモンの一覧と検索\n * エージェントの開始・停止・再起動・即時実行(テストラン)\n * スケジュール設定と次回実行日時のプレビュー\n * 毎日n時に実行とか、何時間ごとに実行とかができる\n * stdout/stderrログの表示\n * plistファイルの詳細表示\n * ユーザーエージェントの作成・編集・削除\n * Finderでファイルを表示\n\n\n\nシステムエージェントとデーモンは読み取り専用で、変更操作はユーザーエージェントのみに限定しています。\n\n## 技術スタック\n\nlaunchd-uiはTauriで作っています。 バックエンドがRust、フロントエンドがReact + TypeScript + Viteという構成です。 UIにはTailwind CSS v4とshadcn/uiを使っています。\n\nTauriを選んだ理由は主に2つあります。\n\n1つ目は、launchdの操作には`launchctl`コマンドの実行が必要で、バックエンドのある構成の方が都合よかったことです。 2つ目は、起動速度の速さです。launchd-uiは常駐するアプリではなく、設定を確認・変更したら閉じるタイプのツールです。起動の速さを重視しました。\n\n## Vibe Codingで開発\n\nlaunchd-uiはClaude Codeを使って開発しました。 いわゆるVibe Codingで、コードの実装はほとんどClaude Codeに任せています。 2時間ぐらいで、まあ使えるかなぐらいのツールにはなりました。\n\nただし、コード品質のためのLintとかTestはセットアップしておくことを意識しました。 フロントエンドにはoxlintとvitest、Rustにはcargoのclippyとcargoのtestを設定しています。 リンターやテストをCI的に回せる状態にしておくことで、Vibe Codingでも一定の品質を保てます。\n\nただ、launchd自体の用語がだいぶ独特で、どのステータスがラベルとして正しいのかとかが結構難しかったです。\n\n## インストール\n\n自分用のツールなので、特に署名などはしていません。\n\nApple Siliconの場合は次のコマンドでインストールできます。 コード署名していないアプリなので、`xattr -cr`でquarantine属性を解除してください。\n\n\n curl -L \"https://github.com/azu/launchd-ui/releases/latest/download/launchd-ui_aarch64.app.tar.gz\" | tar xz -C /Applications\n xattr -cr /Applications/launchd-ui.app\n\n\nIntel Macの場合は`aarch64`を`x64`に置き換えてください。 DMGインストーラーも Releases ページからダウンロードできます。\n\n## まとめ\n\nlaunchd-uiは、macOSのlaunchdエージェントをGUIで管理できるシンプルなアプリです。 定期処理をlaunchdで管理していて、CLIでの操作が面倒な人に向いています。\n\n* * *\n\n * GitHub: azu/launchd-ui\n\n",
"title": "launchd-ui: macOSのlaunchdを使ったcron処理をGUIで管理するアプリを作った",
"updatedAt": "2026-02-17T03:00:00.000Z"
}