推しアイデア
スケジュールを自動で作成してくれる、あなただけの秘書です!
―
スケジュールを自動で作成してくれる、あなただけの秘書です!
競プロの問題(タスクを振り分ける問題)から着想を得ました!
ほぼ全ての技術が初挑戦です!また、アルゴリズムの部分にも力をいれました!
ただタスクを管理するだけではなく、あなたの「空き時間」に最適な予定を自動で埋めてくれる、新しいToDoリストアプリです。
1.すでに決まっている予定(授業やバイト) 2.やらなければいけないこと(課題など) 3.やりたいこと(ゲーム、趣味など)
これらを入力すると、アプリが空き時間を計算し、自動でスケジュールを組み立ててくれます。
↑予定とタスクの入力画面
↑作成されたスケジュールの例
私たちは2人はどちらも大学の競技プログラミングサークルの1年生なのですが、アイデア出しの際、「せっかくなら競プロの技術を取り入れたいよね」ということで、コンテストの問題に最適なタスク割り振りを求める問題があったのを思い出し、これを応用したToDoリストを作成しよう!という経緯で開発が始まりました。
1.期日の設定:タスクに期日を定められるようにしました。 2.タスクの割り振り:タスクを現在時刻よりあとに割り振るようにしました。 3.タスクの割り振り:DP(動的計画法)を使って空き時間に最大幸福を得られるようにしました。 4.データの保存: ブラウザを閉じても消えないようにしました。 5.柔軟な予定入力: 日付指定や期間指定ができる固定予定の入力ができるようにしました。 6.タスク管理: カレンダー上でクリックして「完了/未完了」を切り替えができるようにしました。
スケジュールの決定には動的計画法を採用しました。 理由は、「やりたいこと」の多くは時間を分割できないからです。
例えばオンラインゲームの場合、「試合が終わるまで抜けられない」ため、「10分だけやる」という分割ができません。 「やるか、やらないか(0か1か)」で判断し、かつ幸福度を最大化するために、ナップサック問題として数学的に解いています。
開発には最新のAIツールをフル活用しました。 Gemini Canvas: 直感的で見やすいUIデザインの作成に使用。 GitHub Copilot: プログラムの基礎設計やコード生成に使用。 各AIの得意なところを生かして作成しました。
git,githubはあまり使い慣れておらず、ハッカソンが始まる前にチームで集合して勉強しました。push,pull,commitなど覚えることがおおくてとても難しかったです。branchを切るのを忘れてmainのまま編集してしまうなど大変でした。TS,Reactなどに関しても勉強しながら作ることができました。