質問: クライアント側でログインユーザーの定期購読状況と全商品リストをAPIから取得して、それらをクライアント側で照らし合わせて、そのユーザーが現在定期購読中の商品を表示するのっておかしいですよね? どの商品を定期購読中かはバックエンド側で処理して、それをクライアント側に渡すのが適切ではないのでしょうか? 僕は間違っていますでしょうか。。。 というか、僕が間違っているのでしょうか。。。 ### 補足 あ、上記のAPIというのは他社のAPIではなく、自分のところで開発しているAPIのことです。 ### 補足 SPAです。
回答: > > そのユーザーが現在定期購読中の商品を表示するのっておかしいですよね? > > > これ自体はおかしい話じゃない。 各演算をサーバーでやらせるとサーバーの負荷になる。 なのでバックエンドはJSONのデータだけクライアントに渡して、 後は各クライアントが勝手に計算して画面表示させるという手法もある。 因みにJSは10万件程度のデータの演算でも大して速度は落ちないよ(前職で確認済) 計算量が階乗にならずにn+1件で済むように工夫すればクライアントの演算は強気で大丈夫。 > > どの商品を定期購読中かはバックエンド側で処理するのが適切ではないのでしょうか? > > > 上記のように設計次第。 なんでバックエンドが適切かと思ってるのか、下記が理由かな? バックエンドは不正なデータを詰め込まれないようにしっかり見張る必要がある。 なので全ての処理をクライアントに任せる事は出来ない。 もしフロントエンドに処理を移譲すると、大抵のケースでビジネスロジックが2重になり気持ち悪い。 その考えも一理ある。 クライアントに処理を移譲させると設計が複雑になる、 全てをサーバーサイドでやれば処理が一貫してて綺麗な設計になりやすい。 プロジェクト次第だと思うよ。 何を重視するかよく考えてみて。