サーバーサイドスクリプティングは、 Web開発で使用される技術で、Webサーバー上でスクリプトを実行し、Webサイトへのユーザー(クライアント)のリクエストごとにカスタマイズされたレスポンスを生成します。スクリプトは、利用可能な多数のサーバーサイドスクリプティング言語のいずれかで記述できます。サーバーサイドスクリプティングは、JavaScriptなどの埋め込みスクリプトがWebブラウザでクライアント側で実行されるクライアントサイドスクリプティングとは区別されますが、両方の技術はしばしば併用されます。どちらか一方、または両方のスクリプティングの代替手段として、Webサーバー自体が静的なWebページを配信する方法があります。
サーバーサイド スクリプトは、ユーザーにカスタマイズされたインターフェースを提供するためによく使用されます。これらのスクリプトは、クライアントの特性を収集し、それらの特性、ユーザーの要件、アクセス権限などに基づいて応答をカスタマイズするために使用できます。サーバーサイド スクリプトを使用すると、Web サイトの所有者はインターフェースを生成するソース コードを隠すことができますが、クライアントサイド スクリプトでは、ユーザーはクライアントが受信したすべてのコードにアクセスできます。サーバーサイド スクリプトを使用する際の欠点は、 Web ブラウザーを介してユーザーに新しい情報を表示するために、クライアントがネットワーク経由でサーバーにさらにリクエストを行う必要があることです。[ 1 ]これらのリクエストは、ユーザーのエクスペリエンスを遅くし、サーバーに負荷をかけ、ユーザーがサーバーから切断されたときにアプリケーションの使用を妨げる可能性があります。
サーバーがHTTPやFTPなどの一般的なプロトコルに従ってデータを提供する場合、ユーザーは複数のクライアントプログラムから選択できます(最新のWebブラウザのほとんどは、これらのプロトコルの両方を使用してデータの要求と受信が可能です)。より特殊なアプリケーションの場合、プログラマは独自のサーバー、クライアント、および通信プロトコルを作成することができ、それらは相互にのみ使用できます。
ネットワークを介してデータの送受信を行わず、ユーザーのローカルコンピュータ上で実行されるプログラムはクライアントとはみなされないため、そのようなプログラムの動作はクライアント側の動作とはみなされません。
Netscapeは、1994年12月に初めてリリースされたNetscape Enterprise Serverで、サーバーサイドスクリプト用のJavaScriptの実装を導入しました(ブラウザ向けJavaScriptのリリース直後)。[ 2 ] [ 3 ]
サーバーサイドスクリプティングは、その後1996年初頭にフレッド・デュフレーヌがマサチューセッツ州ボストンのテレビ局WCVBの最初のウェブサイトを開発する際に使用されました。この技術は、米国特許5835712に記載されています(2020年2月25日にWayback Machineにアーカイブ済み) 。この特許は1998年に発行され、現在はOpen Invention Network (OIN)が所有しています。2010年、OINはサーバーサイドスクリプティングに関する功績を称え、フレッド・デュフレーヌを「傑出した発明家」に選出しました。
ウェブ黎明期には、サーバーサイドスクリプトは、C言語プログラム、Perlスクリプト、シェルスクリプトをCommon Gateway Interface(CGI)と組み合わせて使用するのがほぼ唯一の方法でした。これらのスクリプトはオペレーティングシステムによって実行され、その結果はウェブサーバーによって返されていました。現代の多くのウェブサーバーは、 ASP、JSP、Perl、PHP、Rubyなどのオンラインスクリプト言語を、ウェブサーバー自体、または拡張モジュール(mod_perlやmod_phpなど)を介して直接実行できます。例えば、WebDNAには独自の組み込みデータベースシステムが含まれています。CGIと直接実行のどちらの形式のスクリプトでも、複雑な複数ページサイトを構築できますが、外部インタープリタへの呼び出し回数が少ないため、通常は直接実行の方がオーバーヘッドが少なくなります。
動的なウェブサイトでは、 Glassfish、Plack、Pythonの「Base HTTP Server」ライブラリなどのカスタムWebアプリケーションサーバーが使用されることがありますが、これをサーバーサイドスクリプティングとみなさない人もいます。動的なWebベースのスクリプティング技術を使用する場合、開発者はクライアントとサーバー間の論理的、時間的、物理的な分離を深く理解しておく必要があります。たとえば、ユーザーの操作によってサーバーサイドコードの実行をトリガーするには、従来のASPを使用している開発者は、ユーザーのブラウザがWebサーバーにリクエストを送信するように明示的に指示する必要があります。
サーバーサイドスクリプトは、クライアントではなくサーバーによって完全に処理されます。クライアントがサーバーサイドスクリプトを含むページを要求すると、アプリケーションサーバーがスクリプトを処理し、HTMLページをクライアントに返します。
シングルページアプリケーションの登場に伴い、サーバーサイドレンダリングと呼ばれる、サーバーサイドスクリプティングの新たなアプローチが導入されました。サーバーサイドレンダリングでは、静的なHTMLをサーバーからクライアントに送信し、クライアント側のJavaScriptがイベントハンドラをHTML要素にアタッチすることで、 Webページを動的にします。このプロセスはハイドレーションと呼ばれます。サーバーサイドレンダリングをサポートするフレームワークの例としては、Next.js、Nuxt.js、Angularなどがあります。
サーバーサイドレンダリングの代替手段として、静的サイト生成があります。サーバーサイドレンダリングでは、ページは通常、リクエストごとにサーバー上で一度だけ生成されます。一方、静的サイト生成では、アプリケーションがビルド時にすべての静的HTMLページを生成します。これらの事前に生成されたページは、リクエストごとにクライアントに送信され、再度ビルドする必要はありません。これにより、リクエストごとに新しいページを生成する必要がなくなり、サーバーは過去に生成したファイルを渡すだけなので、レンダリング時間が短縮されます。欠点は、ページ上のデータが変更されると、ページを再構築する必要があることです。静的サイト生成ツールの例としては、JekyllやGatsbyなどがあります。静的サイト生成ツールで生成されたサイトは、 Netlify、Vercel、GitHub Pagesなどでホストされることがよくあります。