サーバーサイド言語とは?サーバーの中で動くプログラム

Webサイトの多くは、サーバーの中でプログラムを動かして、開いた人に合わせたページを作っています。こうしたプログラムを書く言語が、サーバーサイド言語です。
本記事では、サーバーの中でプログラムが動いて結果だけが届く仕組みと、得意な仕事、ブラウザーで動くクライアントサイド言語との違いを解説します。
サーバーサイド言語とは
サーバーサイド言語は、サーバーの機械の中で動かすプログラムの言語です。PHP、Python、Ruby、C#のほか、JavaScriptも使えます。
PHPを例にすると、ブラウザーからリクエストが届いたWebサーバーは、PHP本体に処理を頼みます。PHP本体はスクリプトを読み込んで実行し、データベースから情報を受け取ってHTMLを組み立てる流れです。
ブラウザーに届くのは、こうして作られたHTMLに限られます。スクリプトそのものはサーバーの機械の中に残るので、利用者はプログラムの中身を見られません。ダウンロードされてから動くクライアントサイドのコードとの、大きな違いです。
ブラウザーとサーバーの役割分担や、静的なページと動的なページの違いは、クライアントサーバーシステムとは?で解説しています。
PHPで見る、言語と実行するプログラムの関係
サーバーサイドのプログラムは、言語を実行するためのプログラムがサーバーの機械に入っていて、はじめて動きます。PHPを例に、その関係を見ていきましょう。PHPという名前は、次の3つを指すときに使われるので注意が必要です。
| 呼び方 | 中身 |
|---|---|
| 言語としてのPHP | プログラムを書くための言葉(文法)の名前 |
| PHPのスクリプト | PHPで書いたプログラム。index.php のように .php で終わるファイルとして、サーバーの機械の中に置く |
| PHP本体 | スクリプトを読み込み、書かれた手順どおりに実行するプログラム。PHPの開発チームが配っていて、サーバーの機械にインストールして使う |
PHPの開発チームは、PHP本体のことを「PHPインタープリター(The PHP Interpreter)」と呼んでいます。インタープリターは、人が書いたスクリプトを読み込み、書かれた内容を解釈しながら実行するプログラムのことです。
スクリプトを実行しているのは、WindowsやLinuxのようなOSではありません。PHP本体が実行しています。OSはPHPという言語を理解しないので、.php のファイルをそのままでは実行できません。OSが動かしているのはPHP本体というプログラムのほうで、そのPHP本体がスクリプトを読み込んで、書かれた手順どおりに動きます。Windows向けのPHP本体は、php.exe などのファイルとして配られているので、プログラムであることが分かりやすいでしょう。
つまり、スクリプトだけを置いても、Webページは作れません。PHPの公式マニュアルも、PHPでWebページを作るには、PHP本体、Webサーバー、ブラウザーの3つが必要だと説明しているとおりです。
得意な仕事
サーバーサイドのコードが受け持つのは、リクエストに応じて、どの内容を返すかを選ぶ仕事です。代表的なものを挙げます。
- データベースに記事や商品の情報を保存し、必要なものを取り出してページを作る
- ログインした人だけに会員向けのページを見せ、見てよい情報だけを返す
- ログインしたままの状態を保つため、利用者ごとの情報を覚えておく
- 注文の確認などを、メールで知らせる
どれも、情報をサーバーの1か所にまとめて持っているからこそできる仕事です。入力された内容が正しいかを最終的に確かめるのも、サーバーの側の役目になります。
クライアントサイド言語との違い
サーバーサイド言語とクライアントサイド言語は、プログラムを動かす場所と、受け持つ仕事で分かれています。
| クライアントサイド | サーバーサイド | |
|---|---|---|
| 動く場所 | 利用者のパソコンのブラウザー | サーバーの機械 |
| 主な役目 | 届いたページの見た目と動きをよくする | どの内容を返すかを選び、作って返す |
| ブラウザーに届くもの | コードそのもの | コードを動かした結果 |
| OSやファイル | ほとんど触れられない | サーバーのOSの機能を使える |
| 主な言語 | JavaScript | PHP、Python、Ruby、C#、JavaScriptなど |
クライアントサイドの言語がほぼJavaScriptに限られるのに対して、サーバーサイドはさまざまな言語から選べます。サーバーの機械にその言語を実行するプログラムを入れておけば、どの言語でも動かせるためです。ブラウザーの中で動くプログラムについては、クライアントサイド言語とは?で解説しました。
同じ言語でも、動かす場所で呼び方が変わる
クライアントサイドとサーバーサイドの呼び分けは、言語の種類ではなく、プログラムを動かす場所で決まります。その例がJavaScriptです。
JavaScriptは、もともとブラウザーの中で動かす言語でした。Node.jsは、Google Chromeの中核にあるJavaScriptの実行の仕組みを、ブラウザーの外で動かせるようにしたプログラムです。
Node.jsをサーバーの機械に入れれば、JavaScriptで書いたコードがサーバーで動き、サーバーサイドのコードになります。ブラウザー向けにJavaScriptを書いている人が、別の言語を覚えずにサーバーの側も書けるのが利点です。
安全面の注意
サーバーサイドのコードは、サーバーのOSの機能を使えます。ブラウザーの中のように、動ける範囲を区切ってくれる仕組みはありません。
そのため、サーバーサイドの言語や、それを実行するプログラムに不具合があると、被害が大きくなりがちです。外部から届いたリクエストで、サーバー上の情報を読み出されたり、好きな命令を動かされたりするおそれがあります。2026年10月に公表されたPHP本体の脆弱性も、その一例でした。詳しくはPHP2Shellとは?PHPの重大な脆弱性とサイト運営者がやることで解説しています。
参考にした一次情報
本記事は、次の資料をもとに書きました。MDN Web Docsは、ブラウザーのFirefoxを作っているMozillaが公開している、Webの技術の解説資料です。