kinoppyd

Results 2 comments of kinoppyd

設計としては意図した挙動です。ですが、期待する挙動ではないと感じられるのであれば、より良い方に変更する方法を考えたいと思います。 ## Plan, User, Profileの関係性 まず、視聴予定(Plan)とユーザー(User)、そしてGitHubでのサインアップアカウント(Profile)の関係性から説明します。利用者がPlanを作成するためには、必ずUserが必要です。Userが作成される過程には、「サインアップせずにPlanを作成する」方法と、「サインアップしてProfileを作ることで自動的にUserとPlanが割り当てられる」という二つの方法があります。 サインアップをせずにPlanを作成する方法では、まず最初にGitHubでのサインアップをせず、タイムテーブルの画面から予定に追加ボタンを押し、利用規約に同意することでUserとPlanが作成され、セッションにはUserが設定されます。このときProfileは存在しません。 サインアップしてProfileを作ることで自動的にUserとPlanが割り当てられる方法では、まず最初にGitHubのOAuthを利用してProfileを作成し、付随して自動的にUserとPlanが作成され、セッションにはUserが設定されます。 ## サインアップをせずにPlanを作成 この方法のとき、UserはPlanを持っていますが、Profileを持っていません。この状態でGitHubでサインアップすると、新たにProfileが作成され、Userに紐付けられます。Planはサインアップ前の物が引き継がれます。この挙動にした意図は、サインアップ前に匿名で作成していた予定を、サインアップ後も引き継ぎたいと思われるためです。 ## サインアップしてUserとPlanを作成 この方法のとき、GitHubでサインアップした時点で空のPlanがUserに割り当てられます。その後、利用者はこのPlanに視聴予定を追加していきます。 ## 再現手順の挙動が発生する理由 上記の関係性の説明のとおり、利用者がサインアップした段階では「サインアップ前のPlanを引き継ぐ」もしくは「最初から空のPlanが割り当てられる」かのどちらかです。つまり、サインアップした時点で、そのPlanは利用者が意思を持って自分の作成したプランです。 その前提の上で、再現手順を振り返ると、「3. 視聴予定が消える(ログイン状態の視聴予定で上書きされる)」の状態は、既に一度サインアップして自分のPlanを所有しているにも関わらず、ログアウトして再度別のPlanの作成を始めている状態です。このとき、サインアップ済みの利用者が保有しているPlanはUserに紐付いているので、ログアウト後に作成した匿名ユーザーのPlanとは別物です。その二つをマージすることは矛盾が生じることになるため、サインアップ後は本来所有していたPlanのみを残す、という挙動を意図して設計しました。 ## 議論したい点 このアプリの使用上、利用者は匿名で視聴予定を作成できる必要があります。理由として、去年までの予定は全てサインアップ無しで作成し閲覧できるため、互換性の観点から必要です。また、去年まではGitHubのサインアップは不要で予定を作成できたのに、今年から必須にするというのは利用者に不便を強いるからです。そのため、視聴予定を追加するためにログインを前提とするのは無しです。 期待する挙動でも書かれている通り、この状態を再現するためには、サインアップ済みの利用者が一度ログアウトして予定を作成する必要があります。ログアウトした状態での操作を、ログイン後に復元したいという期待をどのように解決するか決められれば、対応策が何かしら考えられるかと思います。

通信量減らしたい気持ちと、可視性を上げたい気持ちはだいたい同じくらいなので、全部SVG直接書き込む案も、FontAwesomeに全部切り替えていく案も全然OKだと思います