Kotlinで繰り返しスケジュール(RRule)を処理するRepositoryを公開した
Repositoryはこちら
背景
個人的に家族間で家事のTODOタスクを共有するAndroidアプリを開発・運用をしています。
掃除やゴミ出しのタスクなど、日々発生するタスクをちまちま作成するのは大変なので、このタスクたちを自動で作成するためにスケジュール処理をする必要がありました。
DBは個人的に慣れているFirebase Realtime Database(以下、RTDB)を使用していたのでCloud functionsを活用しようと試みました。
RRuleとは
iCalendarなどで使用されている繰り返しスケジュールをサポートしているjsのライブラリです。
繰り返すスケジュールを文字列で表現することができ、Cloud functionsではjsで実装しようと考えていたので、RTDBでは文字列として保存しAndroid側ではオブジェクトとして処理しようとしていました。
ですが、RRuleをサポートしているKotlinのライブラリがなかったため、自作してみることにしました。
できたもの
制約としてはREADME
にも記述しているのですが、自分のアプリで使用していないパラメタ周りはサポートしていないのでBYHOUR
やCOUNT
がありません。
工夫した点
data class
として取りまわしたかったのですが、data class
にはセカンダリコンストラクタがなかったため、こちらを参考にoperatorを上書きしてrfc5545
文字列を引き受ける関数を作成。
所感・やってみたいこと
普段こういったものを自作することはあまりしないのですが、文字列⇄オブジェクトならなんとかできるかもで実装できたのは大変良かったように思えます。
自作のアプリには全く同じコードが記載されていて冗長なのでGitHub Packagesを利用してpublishしてみるのもありかなと思っています。
Discussion