tsonobe1 / imonit

0 stars 0 forks source link

あとでやる機能を実装する #20

Open tsonobe1 opened 2 years ago

tsonobe1 commented 2 years ago

ブラウザの「あとでみる」機能を実装したい - later

読みたい記事ややりたいことがあるが実行する日時を決められないとき、 自分にたいしてメールを投げて、保留にすることがある。 しかし、毎日メールを開くわけでもないため拾い切れないことが多々。

imonitに「あとでやる」を追加したい。 機能名のネーミング・表現は変えたい。良い案はないかな... 興味があることを示唆したい。 「あとでやりたい」とか「興味があること」という意味が伝わるワードがよい

ブラウザの「あとでみる」の欠点

・「あとでみる」に登録して忘れてしまうこと=開く動機がないこと ・興味がなくなってしまうこと

欠点を払拭するために

・アプリ起動後の画面に表示する  - 表示案    ・電光掲示板のように、横スクロールで左に流れるViewを、appトップ画面下部に表示する    ・専用タブを用意して、「あとでやる」タスクの数に応じてbatchを表示する(テンション下がりそうだな...)    ・タスクを追加するときに、「あとでやるから選ぶ」ボタンを用意する    ・タスク一覧viewに「あとでやる」ボタンを画面上部に表示して、クリックすると一覧画面に遷移する

・「あとでやる」にタスクを追加するときに、「なぜやりたいのか・動機」をメモできるようにしておく  上記の「あとでやる」表示時に、メモした動機も表示する

DB

title : やりたいことの概要 url : 読みたい記事のurl motivation : 動機

recurring(というかTaskのテンプレート)とlaterの概念をしっかりと区別したい

両者ともあとからtaskとして追加する要素である。 しかしtask追加後、recurringは残りlaterは消える。 どのようにアプリ内で区別・管理するか。

案:laterは、TaskのisLaterフラグで管理する

TaskにisLaterアトリビュートを用意して、trueならカレンダーに表示せず、 「あとでみるview」に一覧表示する

coredataでfetchをする時のpredicate

あとでみるView : isLater == true カレンダーView : isLater == false

メリット

DB管理が楽 predicateでデータをフィルタリングすることで、必要なオブジェクトだけがメモリにロードされて経済的 https://www.avanderlee.com/swift/core-data-performance/

UI

・LaterTaskの一覧を表示する、LaterTaskList.swiftを作成 クリックするとtaskとして新規作成できる

・Taskを新規登録する際(TaskAddSheet)、LaterTaskの一覧を表示 クリックするとtask追加画面に移動してそのまま追加できる

・TaskEditSheetにおいて 「あとでやる」ボタンをクリックするとisLaterがtrueになり、Task一覧から消える startDateとendDateはリセットされる