Your Personal Secretary

https://github.com/kaztsu/todolistaa

GitHub

TypeScript

React

CSS

タスクと予定を入力するとスケジュールを作成してくれるます!!

ujee550afm

oiq2knr2sk

推しアイデア

スケジュールを自動で作成してくれる、あなただけの秘書です!

作った背景

競プロの問題(タスクを振り分ける問題)から着想を得ました!

推し技術

ほぼ全ての技術が初挑戦です!また、アルゴリズムの部分にも力をいれました!

プロジェクト詳細

予定を立ててくれるToDoList

ただタスクを管理するだけではなく、あなたの「空き時間」に最適な予定を自動で埋めてくれる、新しいToDoリストアプリです。

アプリの概要と仕組み

1.すでに決まっている予定(授業やバイト) 2.やらなければいけないこと(課題など) 3.やりたいこと(ゲーム、趣味など)

これらを入力すると、アプリが空き時間を計算し、自動でスケジュールを組み立ててくれます。 image ↑予定とタスクの入力画面 image ↑作成されたスケジュールの例

作成に至った背景

私たちは2人はどちらも大学の競技プログラミングサークルの1年生なのですが、アイデア出しの際、「せっかくなら競プロの技術を取り入れたいよね」ということで、コンテストの問題に最適なタスク割り振りを求める問題があったのを思い出し、これを応用したToDoリストを作成しよう!という経緯で開発が始まりました。

どんな技術を使ったか

1.期日の設定:タスクに期日を定められるようにしました。 2.タスクの割り振り:タスクを現在時刻よりあとに割り振るようにしました。 3.タスクの割り振り:DP(動的計画法)を使って空き時間に最大幸福を得られるようにしました。 4.データの保存: ブラウザを閉じても消えないようにしました。 5.柔軟な予定入力: 日付指定や期間指定ができる固定予定の入力ができるようにしました。 6.タスク管理: カレンダー上でクリックして「完了/未完了」を切り替えができるようにしました。

どうしてDPを使ったのか

スケジュールの決定には動的計画法を採用しました。 理由は、「やりたいこと」の多くは時間を分割できないからです。

例えばオンラインゲームの場合、「試合が終わるまで抜けられない」ため、「10分だけやる」という分割ができません。 「やるか、やらないか(0か1か)」で判断し、かつ幸福度を最大化するために、ナップサック問題として数学的に解いています。

AIの活用

開発には最新のAIツールをフル活用しました。 Gemini Canvas: 直感的で見やすいUIデザインの作成に使用。 GitHub Copilot: プログラムの基礎設計やコード生成に使用。 各AIの得意なところを生かして作成しました。

開発での挑戦

git,githubはあまり使い慣れておらず、ハッカソンが始まる前にチームで集合して勉強しました。push,pull,commitなど覚えることがおおくてとても難しかったです。branchを切るのを忘れてmainのまま編集してしまうなど大変でした。TS,Reactなどに関しても勉強しながら作ることができました。

ujee550afm

@06e8d0e79b327ab5