Skip to content

投稿

シングルページアプリケーションでは、クライアントとサーバーのどちらで処理すべきか?

2015年12月27日 • 4分で読める

シングルページアプリケーションでは、クライアントとサーバーのどちらで処理すべきか?

シングルページアプリケーション(SPA)のセールスポイントの一つは、従来サーバーで実行されていた作業をクライアントに移すことでした。SPAはこの約束を果たしていると感じています。

しかし、すべてがバラ色というわけではありません。熱心になりすぎて、クライアントに過度な作業を押し付けてしまうのは簡単です。私たちはしばしば、クライアントの環境をコントロールできないことを忘れがちです。クライアントは10年前のマシンから最新最高のスマートフォンまで様々で、インターネット速度も異なります。私たちが頼りにできる唯一のことは、ユーザーがブラウザで私たちのサイトを閲覧していることです。

処理

私の経験では、集約的な処理や、日付変換やお金などの精密な計算を必要とするデータなど、サーバーとクライアント間で一貫性が必要なデータは、サーバーサイドレンダリングの有力な候補です。

ページング

クライアントで実行される一般的なタスクはページングです。小さなデータセットではうまく機能しますが、小さなデータセットが小さいままでいることはありません。データが増加するにつれて、アプリケーションは遅くなり、最終的には応答しなくなります。残念ながら、これはクライアント側で発生するため気づかず、さらに悪いことに、すべてのクライアントで発生するわけではないため、トラブルシューティングが困難になります。

ページングをクライアントからサーバーに移すことで、クライアント側のページング関連のパフォーマンス問題を軽減できます。「でも今度は大量のAPI呼び出しをすることになる。そんなに多くのAPI呼び出しをするのは最適ではないように思える」と考えるかもしれません。確かにそのように見えますが、サーバーからデータが返ってくる速さに驚くでしょう。そして最良の部分は?サーバーをコントロールでき、必要に応じて容量を増やすことができることです。

結局のところ、ユーザーにリッチで応答性の高い体験を提供したいのであり、時にはサーバーに重い作業をさせることがその方法なのです。

まとめ

まとめると、可能な限りクライアントに作業を移したいのですが、そうすることで、クライアントに過度な負担をかけてしまう可能性があります。ページングや集約的な処理などの困難なタスクをサーバーに残すことで、クライアントを圧迫することから守ることができます。

著者:Chuck Conwayはソフトウェアエンジニアリングと生成AIを専門としています。ソーシャルメディアで彼とつながりましょう:X (@chuckconway) または YouTube をご覧ください。

↑ トップに戻る

こちらもおすすめ