前提
Next.jsとFirebaseを使ってユーザーが記事を投稿することで、ページが生成されるアプリを作っています。
ユーザーが投稿した記事のURLは下記のパスになります。
https://example.com/[userID]/posts/[postID]
userIDは、ユーザーが任意で英数字とハイフンとアンダーバーの組み合わせで自由に設定できるIDです。
postIDはUUIDです。
userIDは変更ができます。
そのため記事の投稿後にuserIDを変更した場合、記事のパスも変わります。
例えば、userIDがhoge
のユーザーが記事を投稿します。
https://example.com/hoge/posts/[postID]
その後、hoge
ユーザーがuserIDをfuga
に変えると、投稿した記事のURLは下記に変更されます。
https://example.com/fuga/posts/[postID]
また、記事の編集は下記のパスで行なえます。
https://example.com/hoge/posts/[postID]/edit
疑問
ユーザーが作成したページのURLにユーザーIDを含めない下記の形
https://example.com/posts/[postID]
にした場合に考えられるデメリットはありますか?
- 一目で執筆者が分からないためUXが悪い
- Firestoreのセキュリティルールが書きにくくなる
- 記事の作成や閲覧には問題ないが、編集時に困る
などあればご教示いただきたいです。
URLにユーザーIDが含まれていることで気がかりなこと
記事の一覧を表示するページで記事のパスを設定するために、記事情報とその記事を執筆したユーザーのuserIDを取得する必要があります。
トップページで表示する一覧に関しては、記事のタイトルやサムネのほか、執筆者のユーザー名やuserIDなどを表示するので結局ユーザー情報は取得します。
しかし、例えば自分がいいねやお気に入りした記事の一覧かつその一覧は自分しか見れない場合は、記事タイトルとサムネぐらいでよいかと考えています。
この場合は、URLにuserIDを含めない設計であれば、記事情報の取得だけで済みます。
userIDがURLに含まれていた方が、誰の記事を閲覧しているのか、誰の記事を編集中かがURLを見ると分かるため、URLのアルゴリズム(?)的に自然だと感じます。
ただ、ユーザー情報を表示しなくてよいケースでユーザー情報を取得することに、もったいなさを感じます。
調べたこと
ユーザーの操作によってページが生成される他のサービスのURLを確認したところ、下記の通りどちらのパターンもありました。
URLにユーザーIDがあるサービス
- note
- Qiita
- Zenn
URLにユーザーIDやユーザーの名前が無いサービス
- YouTube
- teratail
- stackoverflow
あなたの回答
tips
プレビュー