Claude Codeに今日の予定を聞きたい
はじめに
こんにちは、Androidエンジニアの@syarihuです。
最近はClaude Codeを使って日報を生成しています。日報にはその日のスケジュールも含めたいのですが、Claude Codeから直接Googleカレンダーの予定を取得するのは意外とハードルが高く、GeminiでGoogle Calendarにメンションして予定を取得するカスタムGemを作り、毎回そこで今日の予定を聞いてからClaude Codeにコピペしていました。
本記事では、macOSのカレンダーアプリから今日の予定をJSON形式で取得できるCLIツール「calday」を紹介します。Claude Codeとの連携により、日報作成やスケジュール確認を自動化できます。
モチベーション
筆者がこのツールを作ったモチベーションは大きく2つあります。
- 今日の予定をClaude Codeに聞きたい
- 「今日の予定は?」と聞くだけで、カレンダーの予定を一覧で返してほしい
- 日報をClaude Codeに生成させるときに、今日参加した会議を自動で入れたい
- 手動でコピペせずに、日報のスケジュール欄を自動で埋めてほしい
きっかけ
そんな折、Google Workspace CLIというCLIツールが公開されました。Googleの公式リポジトリでホストされていますが、公式サポート対象のプロダクトではありません。カレンダーデータも取得できそうでしたが、利用するにはGoogle CloudプロジェクトでのOAuth認証が必要です。gcloud CLIがあればセットアップを自動化できますが、ない場合はGoogle Cloud Consoleで手動でOAuthクライアントを作成する必要があります。
個人アカウントならまだしも、会社アカウントの場合はGoogle Cloud側の設定に制限があったり管理者の承認が必要だったりと、セットアップが面倒になりがちです。
もっと手軽にカレンダーの予定を取得できる方法はないかと考えた結果、macOS標準のカレンダーアプリに目をつけました。
caldayのアプローチ
macOSのカレンダーアプリは、Googleカレンダーをはじめとする複数のカレンダーサービスと連携でき、予定はローカルに同期されています。AppleはEventKitというフレームワークを提供しており、このローカルデータにアクセスできます。
caldayは、このEventKitを使ってmacOSのカレンダーアプリからイベントを取得するシンプルなCLIツールです。
これまでの方法との比較
| 項目 | これまで(GeminiのカスタムGem) | calday |
|---|---|---|
| 予定の取得方法 | Geminiを開いてGemに聞き、結果をコピペ | CLIコマンドを実行するだけ |
| Claude Codeとの連携 | 手動でコピペが必要 |
CLAUDE.mdに設定を追加すれば自動で取得 |
| セットアップ | カスタムGemの作成が必要 |
brew install して実行するだけ |
caldayのポイントは、macOS標準のカレンダーアプリにGoogleカレンダーを連携していれば、面倒な認証設定なしにカレンダーデータを取得できることです。初回実行時にカレンダーへのアクセス許可を求めるダイアログが表示されるだけで、それ以降は追加の認証は不要です。
インストール
Homebrewで簡単にインストールできます。
brew install syarihu/tap/calday
動作要件はmacOS 14.0以上です。
使い方
コマンドを実行するだけで、今日の予定がJSON形式で出力されます。
calday
出力例を示します。
[
{
"allDay" : false,
"calendar" : "Work",
"end" : "10:30",
"start" : "10:00",
"title" : "朝会"
},
{
"allDay" : false,
"calendar" : "Work",
"end" : "11:00",
"location" : "会議室A",
"start" : "10:30",
"title" : "スプリントプランニング"
},
{
"allDay" : true,
"calendar" : "Personal",
"date" : "2026-03-05",
"title" : "有給休暇"
}
]
各イベントにはtitle、start、end、calendar、allDay、locationのフィールドが含まれます。終日イベントの場合はstart/endの代わりにdateが出力されます。
設定
不要なカレンダー(たとえば「日本の祝日」など)を除外したい場合は、設定ファイルで指定できます。
calday init
このコマンドで~/.config/calday/config.jsonにテンプレートが生成されます。除外したいカレンダー名を追加してください。
{
"excludedCalendars": [
"日本の祝日"
]
}
自分が参加しているイベントのみ取得
caldayは、自分が参加しているイベントのみを取得します。招待されたが参加していない会議などはフィルタリングされるため、実際に関係のある予定だけが出力されます。
Claude Codeとの連携
caldayの真価は、Claude Codeと組み合わせたときに発揮されます。CLAUDE.md(グローバルまたはプロジェクトレベル)に次の設定を追加することで、Claude Codeが日報作成時やスケジュール情報が必要な場面で自動的にcaldayを実行するようになります。
## Calendar integration
When creating daily reports or when today's meeting/schedule information is needed, run the `calday` command to fetch today's calendar events automatically. This eliminates the need to ask the user about their schedule.
- Command: `calday`
- Output: JSON array of today's events with `title`, `start`, `end`, `calendar`, `allDay`, `location` fields
- Use the output to populate the schedule section of daily reports
この設定を追加すると、Claude Codeに「今日の予定を教えて」と聞くだけで、caldayコマンドを実行してカレンダーの予定を取得し、一覧で返してくれます。日報を生成するときも、スケジュール欄に今日の会議が自動的に入ります。
Claude Codeに予定を聞いてみる
実際にClaude Codeに「今日の予定は?」と聞くと、caldayコマンドを実行して次のように返してくれます。
今日の予定はこんな感じなのだ!
- 10:00-10:30 朝会
- 10:30-11:00 スプリントプランニング
- 13:00-14:00 1on1
- 15:00-16:00 チーム定例
全部で4件の会議があるのだ。午前中に2つ、午後に2つとバランスよく入っているのだ!
手動でカレンダーを確認してコピペする必要がなくなり、Claude Codeとの会話の中でシームレスにスケジュールを扱えるようになります。
技術的な実装
caldayはSwiftで実装されており、コード量は約115行とコンパクトです。
EventKitを使ったイベント取得
macOSのEventKitフレームワークを使って、ローカルに同期されたカレンダーデータにアクセスしています。
let store = EKEventStore()
// カレンダーへのアクセス権限をリクエスト
if #available(macOS 14.0, *) {
granted = try await store.requestFullAccessToEvents()
} else {
granted = try await store.requestAccess(to: .event)
}
// 今日の開始〜終了の範囲でイベントを取得
let predicate = store.predicateForEvents(withStart: startOfDay, end: endOfDay, calendars: nil)
let events = store.events(matching: predicate)
EventKitはmacOS標準のフレームワークなので、外部ライブラリに依存せずにカレンダーデータを取得できます。初回実行時にmacOSのカレンダーアクセス許可ダイアログが表示され、許可すればそれ以降は追加の認証なしで動作します。
自分が参加しているイベントのフィルタリング
カレンダーには、招待されたが参加していない会議も含まれている場合があります。caldayは、参加者リストから自分のメールアドレスを照合し、自分が参加しているイベントのみをフィルタリングしています。
参加者が設定されていないイベント(個人の予定など)はそのまま出力されます。
まとめ
caldayは、macOSのカレンダーアプリから今日の予定を取得するシンプルなCLIツールです。
| 特徴 | 説明 |
|---|---|
| 認証不要 | macOSのカレンダーアクセス許可のみ(初回のダイアログだけ) |
| 簡単インストール | brew install syarihu/tap/calday |
| Claude Code連携 |
CLAUDE.mdに設定を追加するだけで日報作成やスケジュール確認を自動化 |
| 会社アカウント対応 | カレンダーアプリに連携済みならGoogle Cloud等の設定不要 |
| 除外設定 | 不要なカレンダーを設定ファイルで除外可能 |
Google Workspace CLIのようにOAuth認証の設定をせずに、HomebrewでインストールしてCLAUDE.mdに数行追加するだけで、Claude Codeからカレンダーの予定を扱えるようになります。
macOSでClaude Codeを使っている方はぜひ試してみてください。
リンク
- GitHub: https://github.com/syarihu/calday
- Homebrew:
brew install syarihu/tap/calday
Discussion