サーバーサイド スクリプトは、 Web 開発で使用される手法で、 Web サーバー上でスクリプトを使用して、Web サイトに対する各ユーザー (クライアント) の要求に合わせてカスタマイズされた応答を生成します。スクリプトは、使用可能なさまざまなサーバーサイド スクリプト言語のいずれかで記述できます。サーバーサイド スクリプトは、JavaScriptなどの埋め込みスクリプトがWeb ブラウザーのクライアント側で実行されるクライアントサイド スクリプトとは区別されますが、両方の手法が一緒に使用されることがよくあります。どちらかまたは両方のタイプのスクリプトの代替手段は、Web サーバー自体が静的 Web ページを配信することです。
サーバー側スクリプトは、ユーザーにカスタマイズされたインターフェイスを提供するためによく使用されます。これらのスクリプトは、クライアントの特性を組み立てて、それらの特性、ユーザーの要件、アクセス権などに基づいて応答をカスタマイズするために使用できます。また、サーバー側スクリプトを使用すると、Web サイトの所有者はインターフェイスを生成するソース コードを非表示にできます。一方、クライアント側スクリプトを使用すると、ユーザーはクライアントが受信したすべてのコードにアクセスできます。サーバー側スクリプトを使用する場合の欠点は、Webブラウザー経由でユーザーに新しい情報を表示するために、クライアントがネットワーク経由でサーバーに追加の要求を行う必要があることです。これらの要求により、ユーザー エクスペリエンスが低下し、サーバーに負荷がかかり、ユーザーがサーバーから切断されたときにアプリケーションを使用できなくなる可能性があります。
サーバーが、たとえばHTTPまたはFTP プロトコルに従って、一般的に使用される方法でデータを提供する場合、ユーザーはいくつかのクライアント プログラムを選択できます (ほとんどの最新の Web ブラウザーは、これらの両方のプロトコルを使用してデータを要求および受信できます)。より特殊なアプリケーションの場合、プログラマーは、互いにのみ使用できる独自のサーバー、クライアント、および通信プロトコルを作成する場合があります。
ネットワーク経由でデータを送受信することなくユーザーのローカル コンピューター上で実行されるプログラムはクライアントとは見なされないため、そのようなプログラムの操作はクライアント側の操作とは見なされません。
歴史
Netscapeは、ブラウザ用のJavaScriptをリリースした直後の1994年12月に最初にリリースされたNetscape Enterprise Serverで、サーバー側スクリプト用のJavaScriptの実装を導入しました。 [1] [2]
サーバーサイド スクリプティングは、1996 年初頭に Fred Dufresne がマサチューセッツ州ボストンのテレビ局WCVBの最初の Web サイトを開発する際に使用されました。この技術は米国特許 5835712 に記載されています。この特許は 1998 年に発行され、現在はOpen Invention Network (OIN) が所有しています。2010 年に OIN はサーバーサイド スクリプティングに関する研究で Fred DuFresne を「著名な発明家」に選出しました。
説明
ウェブの初期の頃は、サーバーサイド スクリプトは、Common Gateway Interface (CGI)を使用してCプログラム、Perlスクリプト、およびシェル スクリプトの組み合わせを使用することでほぼ独占的に実行されていました。これらのスクリプトはオペレーティング システムによって実行され、その結果がウェブ サーバーによって返されました。最近の多くのウェブ サーバーは、ウェブ サーバー自体またはウェブ サーバーの拡張モジュール (例: mod_perlまたはmod_php ) を介して、 ASP、JSP、Perl、PHP、Rubyなどのオンラインスクリプト言語を直接実行できます。たとえば、WebDNAには独自の組み込みデータベース システムが含まれています。どちらの形式のスクリプト (つまり、 CGI または直接実行) でも、複雑な複数ページのサイトを構築できますが、直接実行のほうが外部インタープリターの呼び出し数が少ないため、通常はオーバーヘッドが少なくなります。
動的な Web サイトでは、 Glassfish、Plack、Pythonの「Base HTTP Server」ライブラリなどのカスタム Web アプリケーション サーバーが使用されることがありますが、これをサーバー側スクリプトとは見なさない人もいます。動的な Web ベースのスクリプト手法を使用する場合、開発者はクライアントとサーバー間の論理的、時間的、および物理的な分離を十分に理解している必要があります。たとえば、ユーザーのアクションによってサーバー側コードの実行がトリガーされるようにするには、従来の ASP を使用する開発者は、ユーザーのブラウザーが Web サーバーにリクエストを返すように明示的に指示する必要があります。
サーバー側スクリプトは、クライアントではなくサーバーによって完全に処理されます。クライアントがサーバー側スクリプトを含むページを要求すると、アプリケーション サーバーはスクリプトを処理し、クライアントに HTML ページを返します。
サーバーサイドレンダリング
シングルページ アプリケーションの登場により、サーバー側スクリプティングに対する最新のアプローチが導入され、サーバー側レンダリングと呼ばれています。サーバー側レンダリングを使用すると、静的 HTML をサーバーからクライアントに送信し、クライアント側の JavaScript が、ハイドレーションと呼ばれるプロセスで HTML 要素にイベント ハンドラーを添付して、 Web ページを動的にすることができます。サーバー側レンダリングをサポートするフレームワークの例としては、Next.js、Nuxt.js、Angular、React などがあります。
サーバー側レンダリングの代替手段は、静的サイト生成です。サーバー側レンダリングでは、ページは通常、リクエストごとにサーバー上で 1 回組み立てられます。対照的に、静的サイト生成では、アプリケーションがビルド時にすべての静的 HTML ページを生成します。これらの事前に構築されたページは、再度構築することなく、リクエストごとにクライアントに送信されます。これにより、リクエストごとに新しいページを生成する必要がなくなり、レンダリング時間が短縮されます。サーバーは、過去に生成したファイルを単に渡すだけです。欠点は、ページ上のデータが変更されると、再構築する必要があることです。静的サイト生成ツールの例としては、JekyllやGatsbyがあります。静的サイト生成ツールによって生成されたサイトは、多くの場合、 NetlifyまたはGitHubページでホストされます。
言語
利用可能なサーバー側スクリプト言語は、次のとおりです。
- アクティブVFP (*.avfp)
- ASP (*.asp)
- ASP.NET Web フォーム(*.aspx)
- ASP.NET Web ページ(*.cshtml、*.vbhtml)
- ColdFusion マークアップ言語(*.cfm)
- 行く(*.go)
- Google Apps スクリプト(*.gs)
- ハック(*.php)
- Haskell (*.hs) (例: Yesod )
- JavaServer Pages経由のJava (*.jsp、*.do)
- サーバーサイド JavaScript (*.ssjs、*.js)を使用するJavaScript (例: Node.js )
- 投げ縄(*.lasso)
- lua (*.lp *.op *.lua)
- パーサー(*.p)
- CGI.pmモジュール経由のPerl (*.cgi、*.ipl、*.pl)
- PHP (*.php、*.php3、*.php4、*.phtml)
- Python (*.py) (例: Pyramid、Flask、Django )
- R (*.rhtml)
- Ruby (*.rb、*.rbw) (例: Ruby on Rails )
- tcl (*.tcl)
- WebDNA (*.dna、*.tpl)
- 進捗 WebSpeed (*.r、*.w)
参照
- クライアント側スクリプト
- コンテンツ管理システム(CMS)
- エッジサイドに含まれるもの
- JSP
- Node.js
- 次
- ウェブデザインとウェブ開発の概要
- Perl/Plack
- PHP の
- サーバーサイドインクルード(SSI)
- ウェブ開発
参考文献
- ^ 「サーバーサイド JavaScript ガイド」。Netscape Communications Corporation。1998 年。2012 年 4 月 25 日閲覧。
- ^ Mike Morgan (1996)。「Netscape™ LiveWire™ スペシャルエディションの使用」。Que。
