毎月の星空観望会をカレンダーに自動登録する仕組みを作った話
- ⏱ 約5分で読めます - 👁 … views静岡県の月光天文台。50年以上の歴史を持つこの天文台では、毎月数回、土曜の夜にテーマを決めて天体観察をする「星空観望会」を開催しています。口径50cmの大型反射望遠鏡を特別開放し、参加費は高校生以上500円・中学生以下300円。事前申し込み不要で、当日直接来場できる気軽なイベントです。開催時間は季節によって異なり、冬季は18:00頃、夏季は19:30頃のスタートになります。
私はそのボランティアスタッフとして、10cmマクストフカセグレン+赤道儀、Seestar S50、Dwarf 3 といった機材を持ち込み、参加者に星空を案内する側に立っています。
参加するのは月に2日ほど。「そのくらい物臭せずに自分でやれば?」と言われそうですが、これが結構忘れるのです。なので、うちの秘書(Claude)にスケジュールを登録しておいてもらうことにしました。その仕組みを作った話です。
どうやったか
実装の流れは以下のような階層構造になりました。
レイヤー1:情報取得(Claude)
毎月1日の朝、Claude が自動的に月光天文台のWebサイトにアクセスし、その月の星空観望会スケジュールを抽出します。
2026年7月1日 09:00 → スケジュール発火
↓
月光天文台のイベントページを取得
↓
星空観望会の日時・観察対象・参加費を解析
レイヤー2:データ変換(iCalendar形式)
取得したイベント情報を、標準的なカレンダー形式(iCalendar / .ics)に変換します。
イベント情報
↓
iCalendarファイル生成(YAML形式)
↓
タイムゾーン: Asia/Tokyo
リマインダー: 1時間前(自動)
レイヤー3:自動登録(AppleScript)
生成された .ics ファイルを、macOS のカレンダーアプリに自動登録します。
AppleScript で Finder に指示
↓
iCalendarファイルをカレンダーアプリで開く
↓
macOS が自動的にインポートダイアログを表示
↓
自動確認して「正徳の仕事予定」に追加
重要なのは、このすべてが ユーザーの操作なしに 進むということです。
意外とハマった点
AppleScript の権限問題
最初、AppleScript がカレンダーアプリにアクセスするとき、権限エラーが出ました。
システム環境設定 → セキュリティとプライバシー → アクセシビリティ
に、Cowork アプリを追加して許可する必要がありました。そこまでいけば、あとはスムーズです。
iCalendarの日時形式
タイムゾーン情報を正しく設定しないと、時間がズレて登録されてしまいます。特に「Asia/Tokyo」を明示的に指定することで、日本の夏時間や標準時の変更にも対応できるようになります。
DTSTART:20260606T193000 (ダメ)
DTSTART;TZID=Asia/Tokyo:20260606T193000 (OK)
登録先カレンダーの指定
最後の問題は「どのカレンダーに登録するか」です。
私の場合、複数のカレンダーを管理しており、「正徳の仕事予定」に限定して星空観望会を入れたかった。AppleScript に登録先カレンダー名を明示的に指定する仕組みを作ることで、解決しました。
osascript import_to_calendar_advanced.applescript \
~/file.ics "正徳の仕事予定"
実装のテクニック
Cowork のスケジュール機能
Claude のスケジュール機能を使うことで、毎月1日の午前9時に自動実行が走るようになりました。
毎月1日 09:00(日本時間)
↓ 自動起動
Claude が月光天文台のイベント情報を取得して自動登録
↓
完了通知が表示される
手動トリガーの用意
「今すぐ実行したい」という場合に備えて、Python スクリプトでも手動実行できるようにしました。
python3 ~/outputs/auto_import_calendar.py
また、Cowork 画面でも「実行」ボタンをクリックすれば即座に動作します。
設定ファイルの外部化
登録先カレンダーなどの設定を JSON ファイル(calendar_config.json)に外出しすることで、スクリプトを修正することなく設定変更できるようにしました。
{
"target_calendar": "正徳の仕事予定"
}
効果測定
作業時間の削減
以前は月1回、5分程度の手作業がありました。
今は 0 分です。完全に自動化されました。
確実性の向上
手作業だと「あ、今月のイベント、カレンダーに入れるの忘れてた」という事態が起きる可能性がありました。
今は毎月確実に、自動的に登録されます。
拡張性
この仕組みは、他のイベント情報(他の天文台、博物館の講演会、etc.)にも応用できます。登録先カレンダーを変えるだけで対応可能です。
実装の価値
実装に要した時間は、おそらく数時間です。
一方で、今後の人生で毎月 5 分 × 12 ヶ月 × 何十年……といった時間を削減できます。
さらに大切なのは「毎月必ずやらなければいけない」というメンタルロードが消えたこと。定型的で、かつ確実性が求められる作業こそ、人間が手放すべき業務です。
Cowork と Claude があれば、こうした「小さくて確実な自動化」は簡単に実現できる時代になりました。
最後に
来月(2026年7月1日)、システムが正常に動作することを期待しています。
そして、もし動いたら、この仕組みを他の定常業務にも応用していきたいと考えています。
プログラミングやスクリプティングは、難しい問題を解くツールではなく、「繰り返される小さな面倒を消すツール」としての価値が、実は最も大きいのかもしれません。