利便性と環境を配慮したカレンダー

カレンダーデバイスの開発

Masahiro Higuchi

※展示イベントの装置説明ポスターより

●開発概要

Masahiro Higuchi
開発したカレンダーデバイス

 近年、ペーパーレス化が進む中で、多くの人がスマートフォンのカレンダーアプリを利用して日程を管理している。 スマートフォンのカレンダーアプリは、デバイス間で予定を共有できるだけでなく、通知機能によってリマインドを受け取れるという利点がある。 一方で、紙のカレンダーは、設置場所を見れば直感的に予定を確認できるというメリットがある。しかし、両者を併用すると情報の同期が難しくなり、予定の食い違いが生じる可能性がある。 そこで、本研究では、スマートフォンアプリの利便性と紙のカレンダーの直感的な視認性を調和させたデバイスを開発した。 本装置はApple iCloudと連携し、カレンダーの内容や変更をリアルタイムに表示できる。表示にはE-INK(電子ペーパー)を採用し、低消費電力を実現した。 また、目覚まし電波時計のデザインを参考にし、正面上部のボタンを押すことで画面にLEDを点灯させ、暗所でも視認しやすくした。

●表示内容の詳細

 本装置で実装したE-INKは、白・黒・赤の3色での表示が可能であり、この特性を活かして視認性を向上させている。E-INKディスプレイに当月のカレンダーを表示し、現在の日付を赤色で強調する。 日付が変わると、自動的にE-INKの画面を書き換え、最新の日付を赤く塗り直す。また、月が変わると、カレンダーのレイアウトも当月の配置に更新される。 さらに、本装置はApple iCloudと連携し、カレンダーの予定をリアルタイムで反映する。 iCloud上のカレンダーに予定が追加・変更された場合、E-INKの画面も自動的に更新される。カレンダーの表示にはPythonのcalendarモジュールを用い、E-INK上で視認しやすいように予定ボックスを整理する。 また、Apple CalDAVサーバーからiCloudアカウントに紐づいたカレンダーの予定情報(予定名など)を取得し、該当する日付の予定ボックスに表示する。

●iCloudからカレンダーの内容を取得する仕組み
Masahiro Higuchi

 Pythonのcaldavモジュールを使用してiCloudからカレンダーの内容を取得するには、https://caldav.icloud.com/にApple IDとアプリ用パスワードで認証し、PROPFINDリクエストを送ってCalDAVのホームセットアップURLを取得する。 次に、このURLに対してPROPFINDを実行し、利用可能なカレンダーの一覧を取得する。 特定のカレンダーに対してREPORTリクエストを送ることで、指定した期間の予定をXML形式で取得できる。 取得したデータはiCalendarフォーマットで提供されるため、icalendarモジュールを用いて解析し、カレンダーの予定を整理・表示している。

●使用方法

 初期設定として、iCloudに紐づけられたメールアドレスとアプリ用パスワードを準備する。 カレンダーデバイスが起動すると、PCからWEBUIにアクセスするため、ブラウザを使用してデバイスのIPアドレスを入力し、WEBサーバにアクセスする。 その際、用意したメールアドレスとアプリ用パスワードを入力する。 設定が適用されると、次回以降の起動時からは、指定したアカウント情報を基にカレンダーの情報が自動的に取得され、表示されるようになる。

●文献
  • PythonでNextCloud(CalDAV)のカレンダーの予定を取得する
  • iCalendarデータの仕様とPythonにおける利用方法
  • カレンダーに使われるiCalendar形式について part1
  • python-caldav
  • その他の活動

    Masahiro Higuchi
    オープンソースカンファレンス2025 Osaka
    Masahiro Higuchi
    日本新薬(株)主催 Digital縁日