「英単語」「数学」「中国語」などの“復習したいタスク”を登録しておき、 復習したタイミングでワンタップでログを残せる、シンプルな復習タスク管理アプリです。 難しいアルゴリズムよりも、「とにかく記録を残すこと」に全振りした設計になっています。
taskskskss は、 「あとで復習したいのに、いつやったか分からなくなる」問題を解決するために作りました。 タスクごとにカードを作り、復習したらそのカードをタップするだけで “いつ・どのタスクを復習したか” がどんどんログとして貯まっていきます。
いわゆる高度な間隔反復アルゴリズム(SuperMemo, Anki など)を最初から入れるのではなく、 まずはシンプルに「復習の実績データ」を集めることを優先しました。 ログが溜まってくれば、あとから統計やアルゴリズムを載せ替えることもできます。
アプリ内部では、復習タスクテーブルと 復習ログテーブルの 2 つのエンティティを Room で管理しています。 UI は Jetpack Compose で構築し、ViewModel+Repositoryで 「UI → ViewModel → Repository → DAO → DB」 の シンプルな一方向データフローにしています。
taskId と reviewedAt(日時)を持つ、「いつ復習したか」の生ログ。taskskskss の根本は、 Task(何を復習するか)と ReviewLog(いつ復習したか) の 2 テーブルに分けるところから始まっています。 これにより、タスクの属性と復習の頻度・タイミングを独立に扱えるようになり、 後から統計を取ったり、別アルゴリズムに差し替えたりしやすくしています。
@Entity
data class TaskEntity(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val title: String,
val category: String?,
val importance: Int,
val memo: String?
)
@Entity
data class ReviewLogEntity(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val taskId: Long,
val reviewedAt: Long
)
ログ入力を面倒にすると続かないので、 ホーム画面のタスクリスト上でタップするだけで 現在時刻の ReviewLog を 1 件追加するようにしました。 長押しでメモ付きのログを残す UI も検討しています。
fun onTaskReviewed(taskId: Long) {
val now = System.currentTimeMillis()
val log = ReviewLogEntity(taskId = taskId, reviewedAt = now)
repository.insertLog(log)
}
ReviewLog を日別にカウントすることで、 「何日連続で触れているか」「最近触れていないタスクはどれか」などを 簡単な棒グラフやカレンダー風 UI で可視化しています。 まずはロジックがシンプルな集計から始めています。
今はあえてアルゴリズムを入れず、「生ログを集める」だけにしてあります。
将来的には、Task に nextRecommendedAt などのフィールドを追加し、
SuperMemo 風の間隔反復アルゴリズムを載せ替えられるようにする予定です。
「英単語」「数学」「中国語」の 3 タスクを登録し、 1週間ほど実際に使って復習タイミングを記録してみました。 結果、主観では「そこそこやっているつもり」でも、 ログを見ると案外ムラがあることが分かりました。
・ログは取れているものの、「次に何をやるべきか」の提案はまだ弱いこと ・タスクが増えるとリストが長くなり、カテゴリ分けや検索が欲しくなること ・連続記録(日数)を意識しすぎると、逆にプレッシャーになる場面もあること などが見えてきました。
タスクを登録し、復習が終わったらタップしてログを追加する… という一連の流れを撮影したデモ動画を想定しています。
今の taskskskss は、かなり割り切って「ログを取るだけ」のアプリです。 ですが、蓄積されたログを使えば、 「このタスクはそろそろ忘れそうだから今日もう一回やろう」といった 軽めの復習提案くらいは十分に実装できます。
「続けやすさ」「見やすさ」「提案のうるさくなさ」のバランスを意識して改善していきます。
学習アプリというと、つい「高度なアルゴリズム」から考えたくなりますが、 実際に手を動かしてみると、まず大事なのは 「人間が続けられる入力体験」と「素直なデータ構造」 だと感じました。 taskskskss は、その原点に立ち返るための小さな実験でもあります。
ログがたくさん溜まってきたら、 そこから初めて「本当に効いている復習パターンはどれか」を データとして検証できます。 その手前の地味なステップを、アプリとして形にできたのは 自分にとって大きな意味がありました。