Skip to content

投稿

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

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

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

シングルページアプリケーション(SPA)の売りの一つは、従来サーバーで行われていた処理をクライアントにオフロードすることでした。SPAはこの約束を果たしていると感じます。

しかし、すべてがバラ色というわけではありません。クライアント側に処理を詰め込みすぎるのは簡単です。クライアント環境をコントロールできないことを忘れがちです。クライアントは10年前のマシンから最新のスマートフォンまで、さまざまなインターネット速度でアクセスできます。唯一確実なことは、ユーザーがブラウザでサイトを閲覧しているということです。

処理

私の経験では、集約的な処理やサーバーとクライアント間で一貫性が必要なデータ(日付変換など)、または正確な計算が必要なデータ(金銭など)は、サーバー側でのレンダリングの最適な候補です。

ページング

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

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

結局のところ、ユーザーに豊かでレスポンシブな体験を提供したいのであり、時にはサーバーに重い処理を任せることがその方法です。

まとめ

要約すると、可能な限りクライアント側に処理をオフロードしたいのですが、そうすることでクライアント側に負荷をかけすぎることができます。ページングや集約的な処理などの大変なタスクをサーバー側に保つことで、クライアント側に負荷をかけすぎるのを防ぐことができます。

Author: Chuck Conway is an AI Engineer with nearly 30 years of software engineering experience. He builds practical AI systems—content pipelines, infrastructure agents, and tools that solve real problems—and shares what he’s learning along the way. Connect with him on social media: X (@chuckconway) or visit him on YouTube and on SubStack.

著者: Chuck Conwayは、ソフトウェアエンジニアリングの経験が30年近くあるAIエンジニアです。彼は実用的なAIシステム(コンテンツパイプライン、インフラストラクチャエージェント、実際の問題を解決するツール)を構築し、学んだことを共有しています。ソーシャルメディアで彼とつながってください: X (@chuckconway) または YouTubeSubStack で彼を訪問してください。

↑ トップに戻る

こちらもおすすめ