朝まだき 頁の奥で 文字めざむ
会議のスクリーンショットを Agent に渡してカレンダーに登録してもらえば楽になるはずが、何度もスクショを撮り、クリックや入力を繰り返すのでは時間がかかりすぎる。そこで作ったのが AppleCtl。Apple が公開する EventKit を使い、Agent が共通の CLI でカレンダーとリマインダーを操作できる。出力は標準で JSON。登録内容を読み直して結果も確認できる。
内容の理解は Agent、実行は AppleCtl が担当。日付やタイムゾーン、繰り返し予定にも対応し、書き込み前のプレビューや、古い情報に基づく変更のチェックも備える。Apple 純正アプリをそのまま使えるので、別のアプリや追加のサブスクリプションは不要。iCloud を有効にすればデバイス間でも同期できる。
インストールもコマンド操作も Agent に任せ、私は画像か一言を渡すだけ。時間が曖昧なら先に質問し、追加後には確認してくれる。
会議のスクリーンショットをCodexに渡して「カレンダーに追加して」とひと言。これで済めば楽なはずだ。ところが試してみると、ほぼ毎回Computer Useを使う。スクリーンショットを撮り、ボタンを探してクリックし、フォームに入力して、またスクリーンショットで確認する。できることはできるが、とにかく遅い。
省きたかったのは、まさにこの画面操作の繰り返しだ。既存のツールをいくつか試した末に、AppleCtlを作った。エージェントから直接呼び出せるローカルCLIで、Appleが公開しているEventKit APIを通じてカレンダーとリマインダーを管理する。
スクリーンショットの内容を読み取るのはエージェント。AppleCtlは操作を実行し、その結果を明確な形でエージェントに返す。
どちらの方法でも、内容を理解するのはエージェントだ。変わるのは実行方法だけ。
こうしたツールはすでにいくつもある。主な違いは、対応範囲とエージェントとの連携方法だ。開発時に参考にしたバージョンを比較すると、次のようになる。
プロジェクト
対応範囲
エージェントとの連携
remindctl v0.3.8
リマインダー
CLI、JSON対応
apple-calendar-cli v0.1.1
カレンダー
CLI + Skill、JSON対応
acal v0.4.0
カレンダー
CLI + 任意でMCP、構造化された結果を返す
AppleCtl
カレンダー + リマインダー
共通CLI + Skill、標準でJSON出力
重視したのは、エージェントが同じインターフェースで両方を操作し、実行結果まで確認できることだ。AppleCtlでは、日付やタイムゾーン、繰り返しの予定などで生じる細かなケースにも対応し、書き込み前のプレビューや、古い情報に基づく変更のチェックも用意した。リマインダーの中核部分はremindctlをもとに改変し、カレンダーの実装はほかの2つのプロジェクトを参考にした。具体的な修正内容はAUDIT.mdにまとめてある。
Apple標準のカレンダーとリマインダーを使い続けるのも、手間を増やしたくないからだ。別のカレンダーやToDoアプリを入れずに済むし、サードパーティー製サービスのサブスクリプション料金を余分に払う必要もない。同じApple AccountでiCloud同期を有効にすれば、MacでもiPhoneでもiPadでも、そのまま使える。
インストールもClaude CodeやCodexに任せるのがおすすめだ。使うMacで、こう頼めばいい。
macOS 14以降とPython 3が必要で、初回利用時にはカレンダーとリマインダーへのアクセスを許可する必要がある。ダウンロード版では、システム設定で実行を許可する操作も必要になる場合がある。詳しい手順はインストールガイドを参照。
インストールが済んだら、会議のスクリーンショットをアップロードして、こう頼む。
コマンドラインツールとして作ったけれど、コマンドを扱うのはエージェントに任せる。こちらは画像を1枚渡すか、ひと言頼むだけでいい。
こうしたちょっとした用事をApple Intelligenceが引き受けてくれる日も、ずっと待っている。今後、中国本土でも使えるようになったら、MacでもiPhoneでも、スクリーンショットからそのまま予定を追加できてほしい。そのときは追加の仕方が変わっても、Appleのカレンダーとリマインダーを使う習慣はそのまま続けられる。