Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

スタンプの別名追加の実装 #2027

Closed
wants to merge 5 commits into from

Conversation

pirosiki197
Copy link
Contributor

@pirosiki197 pirosiki197 commented Oct 17, 2023

#1821

やったこと

  • スタンプにAliasesフィールドを追加した
  • POST /stamps/{stampId}/aliases

わからなかったこと

  • modelの定義
    • ユニーク制約や外部キー制約をどうすればいいか
    • 参照しているスタンプが削除されたときどうすればいいか
    • 物理削除か論理削除か
  • Cacheについて
    • r.purgeCacheの使い方
  • migrationに関すること

気になったこと

  • model.StampのNameフィールドにはユニーク制約が付いているが、スタンプは論理削除なので削除されたNameを新しいスタンプで使えない

やってないこと

  • routerへの追加
  • Create以外のDelete, Updateなどの処理

@logica0419
Copy link
Member

ありがとう!積極的に実装してくれたのは嬉しい限りです。
ですが、このPRはそもそもの方針から検討事項が結構多いので、ひとまず実装についてはおいておきます。

@logica0419
Copy link
Member

1つ目

model.StampのNameフィールドにはユニーク制約が付いているが、スタンプは論理削除なので削除されたNameを新しいスタンプで使えない

これに関しては、むしろ使えたら困るんじゃないでしょうか。
例えば、今メッセージ内でよく使われている:w:などが突然削除されてしまった時、名前を同じにして下品な画像などを登録すれば、今までのメッセージ内でそのスタンプが使われているすべての箇所がその画像で置き換わります。
そこを性善説運用するのかどうかについては議論が必要だと思いますが、僕は論理削除のままでいいかなと思っています

@logica0419
Copy link
Member

logica0419 commented Oct 22, 2023

2つ目

aliasの利用方法について、今回はNameでスタンプが探せる機能を追加していましたが、実態として必要なものはまた違うかもしれません。

現在スタンプはほとんどスタンプパレットから利用されます。
スタンプパレットの情報は、何か文字を打ち込むたびにサーバーから取ってきていたらめっちゃ通信を食いますし、そんな頻繁に更新されないので、更新されるたびにクライアントがサーバーから全情報を取ってきてキャッシュしています。

これを踏まえて、aliasはどのように使われるべきなのかきちんと考える必要がありますね。

  • パレットの検索で引っかかるようにするか?
    • 検索結果が多くなりすぎる?
  • メッセージの中で使えるようにするか?
    • 使えない = もとのスタンプ名に変換する
    • 使えたら、aliasも論理削除が良いということになるかも

などの部分を考えなければいけません。
これらは、UX・プロダクトデザインという面と繋がりが深く、クライアント・デザインチームを巻き込むのは必須だと考えられます。

@pirosiki197
Copy link
Contributor Author

pirosiki197 commented Oct 22, 2023

ありがとうございます!
読んでて確かにと思うことばかりでした。このissueについてもっとよく考えて実装する前に議論すべきでした

これに関しては、むしろ使えたら困るんじゃないでしょうか。
例えば、今メッセージ内でよく使われている:w:などが突然削除されてしまった時、名前を同じにして下品な画像などを登録すれば、今までのメッセージ内でそのスタンプが使われているすべての箇所がその画像で置き換わります。

確かにその通りだと思います。こういうケースは考えられてなかったです。自分が気になったことを書いたときに考えていたのは、論理削除はやめた方がいいということではなく、もっと別の方法があるのではないか?ということでした。「削除」されたのなら名前も「削除」されたと考えるのが自然な気がします。なので、「削除」とは別の状態(「使用不可」みたいな)として扱った方がいいのではと思いました。ただ、新しい状態を追加すると既存のコードを大きく変える必要も出てきてしまうので、気になったことにとどめておきました。

これらは、UX・プロダクトデザインという面と繋がりが深く、クライアント・デザインチームを巻き込むのは必須だと考えられます。

ここも深く考えられていなかったです。勉強になりました

@pirosiki197
Copy link
Contributor Author

@logica0419
このissueについては実装前に考えなければいけなかったことが多いので、このprはクローズしたほうがいいですか?自分が今考えなければいけない課題をすべて出して、解決するのは難しそうです。

@logica0419
Copy link
Member

logica0419 commented Nov 20, 2023

@pirosiki197
そうですね…traQのクライアントと一緒に考えなければならない課題だと思うので、いったんクローズしましょうか…
道半ばでクローズしてしまって大変申し訳ないです。
取り組んでくれたことに関しては大変感謝してます!ぜひ他のIssueにも取り組んでいただけると嬉しいです!

また、余力があればtraQのクライアントメンテナーたちにこのIssueについて投げかけてみてもらえると嬉しいです…
向こうも忙しそうにしているので対応がいつになるかはわかりませんが…

@logica0419 logica0419 closed this Nov 20, 2023
@logica0419 logica0419 deleted the feat/api/POST/CreateStampAlias branch November 20, 2023 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants