サーバーとは?アプリ作成者のための平易な入門ガイド
サーバーとは、要求を待ち、それに応答するコンピューター、またはそのコンピューター上で動くプログラムです。ウェブサイトを開くと、あなたのブラウザ(クライアント)がインターネットを通じて要求を送り、どこかにあるサーバーがページ、画像、データを返します。メールからオンラインバンキングまで、あなたが使うすべてのアプリは、サーバーがこれを1日に何百万回も行うことに依存しています。
AIで作るときにサーバーが重要な理由
AIビルダーがアプリを作るとき、コードの一部はサーバーの一部はブラウザで動き、サーバーで動く部分は通常、ブラウザには任せられない、またはブラウザだけではできないことを担当します。
- データの保存と読み込み。 データベースからのデータの読み書きです。
- 秘密情報の保持。 決済やAIプロバイダーのAPIキーのように、ブラウザに決して届いてはいけないものです。
- 権限の確認。 利用者が自分のレコードだけを見たり変更したりできるようにすることです。
- 他のサービスとの通信。 カードへの請求、メールの送信、AIモデルの呼び出しなどです。
サーバーが何をするかを知っていると、アプリのルールが実際にどこに置かれているか、なぜ一部の変更には再公開が必要なのか、ホスティングのために何に費用を払っているのかが分かります。2つの部分の分け方については、フロントエンドとバックエンドの違いをご覧ください。
身近なたとえ
サーバーは、郵便局の窓口の係員のようなものです。係員から客を探しに行くことはなく、ただ待っています。客(クライアント)が「この荷物を送りたい」「私宛の郵便はありますか」といった要求を持って来ると、係員がそれを処理して結果を渡します。1人の係員は次々と多くの客に対応でき、混雑した郵便局では窓口の数を増やします。
郵便局には、客が覆すことのできないルールもあります。荷物を受け取るには身分証明が必要です。アプリでのサーバーの役割も同じです。ブラウザは何でも要求できますが、何を受け取れるかを決めるのはサーバーです。
要求がサーバーに届くまで
https://bookings.example.com/scheduleを訪れたとき、次のことが起きます。
- DNSの問い合わせ。 ブラウザは、ドメイン名を管理するDNSに、
bookings.example.comがどのIPアドレスを指しているかを尋ねます。詳しくはドメインとDNSの仕組みをご覧ください。 - 接続。 ブラウザは、そのアドレスに対してHTTPSのポート443で接続し、暗号化された通信を確立します。詳しくはHTTPSとSSLとはをご覧ください。
- 要求。 HTTPの要求を送ります。
GET /scheduleです。 - 処理。 サーバーは、
/scheduleを扱うコードを実行します。たとえば、データベースで今日の予約を検索するかもしれません。 - 応答。 ステータスコード(
200 OK)と、内容を返します。HTMLページか、ページが表示するためのJSONデータです。
これらすべては、通常は一瞬で終わります。
よく耳にするサーバーの種類
| 用語 | 意味 |
|---|---|
| Webサーバー | HTTPの要求に応答するソフトウェア。ファイルを送ったり、要求をアプリのコードに渡したりします。 |
| アプリケーションサーバー / バックエンド | サーバー上で動く自分のコード。予約、ログイン、決済を扱うAPIです。 |
| データベースサーバー | データを保存して問い合わせることが役割のサーバー。アプリが接続するPostgresデータベースなど。 |
| ファイル / 静的サーバー | リクエストごとに独自のコードを実行せず、既に用意されたファイル(HTML、画像、スクリプト)を送ります。 |
| 物理サーバー | データセンターのラックに置かれた実際のマシン。 |
| 仮想マシン(VM)/ VPS | 物理マシンの一部で、独立したコンピューターのように動作するもの。 |
| コンテナ | アプリとそれに必要なものをまとめた軽量なパッケージで、共有のマシン上で動かします。多くのプラットフォームがアプリをこの方式でデプロイします。 |
| サーバーレス | コードをアップロードすると、提供者が必要に応じて実行します。自分で管理することのないサーバー上で動きます。サーバーレスとはをご覧ください。 |
「サーバー」は、マシンとプログラムの両方を指すことに注意してください。「サーバーがクラッシュした」は、そのどちらのことも指しえます。
具体例:美容室の予約アプリ
小規模な美容室の予約アプリで、サーバーがすることは次のとおりです。
- 訪問者がサイトを開きます。サーバー(またはその前にあるCDN)がページのファイルを送ります。
- ページはサーバーに
GET /api/slots?date=2026-10-03と要求します。サーバーはデータベースで空きの時間枠を問い合わせ、JSONで返します。 - 訪問者が14:00を予約します。ページは
POST /api/bookingsを送ります。サーバーは、その時間枠がまだ空いていることを確認します。ブラウザの言うことは信用しません。予約を保存し、201 Createdを返します。 - サーバーは、サーバー上に保存されたシークレットキーを使って、メールサービスを呼び出し、確認メールを送ります。
もしサーバーを停止したら、ページはCDNから読み込めるかもしれませんが、空き時間を表示したり、予約を保存したりはできなくなります。
サーバーが快適に動くために必要なもの
- メモリ(RAM)とCPU。 メモリが少なすぎると、負荷がかかったときにアプリがクラッシュし、CPUが少なすぎると、動作が遅くなります。
- 稼働していること。 電源が切れているサーバーは応答できません。プラットフォームによっては、使われていないアプリをスリープさせ、次の訪問で起こします。これは費用の節約になりますが、最初の要求が遅くなることがあります。
- 設定とシークレット。 環境変数として提供されます。
- ログ。 サーバーが何をしたかの記録です。何かが壊れたときに最初に見るべき場所です。
- 更新とセキュリティパッチ。 マネージドホスティングでは、これらはプラットフォームが処理します。
よくある誤解
- 「クラウドにはサーバーがない」。 クラウドとは、時間単位や利用量で借りる、ほかの企業のサーバーのことです。
- 「サーバーは大きな特別なコンピューターだ」。 どのコンピューターもサーバーとして動かせます。開発中に
localhostを開くとき、あなたのノートPCがサーバーを動かしています。 - 「ボタンを隠せば、利用者はそれができない」。 誰でも、直接サーバーに要求を送れます。権限の確認は、ページだけでなく、サーバー上で行わなければなりません。
- 「サーバーを増やせば遅さは直る」。 本当の原因は、遅いデータベースのクエリや、外部のAPIであることが多いです。まずボトルネックを見つけてください。
- 「アプリを持つにはサーバーを管理しなければならない」。 マネージドプラットフォームがサーバーを運用し、あなたはコードをデプロイするだけです。機械の管理は、プラットフォームが行います。
AIビルダーに依頼すること
- 「このアプリのどの部分がサーバーで動き、どの部分がブラウザで動いていますか?」
- 「すべてのAPIキーはサーバー側に置き、環境変数から読み取ってください。」
- 「データを読み取ったり変更したりする要求はすべて、サーバー側で権限を確認してください。」
- 「サーバーのログはどこで見られますか?このエラーについて、ログには何と書かれていますか?」
- 「このアプリにはそもそもサーバーが必要ですか、それとも静的サイトで十分ですか?」
- 「アイドル状態のあとの最初の要求は、どうなりますか?」
Mythexでのサーバー
Mythexでは、サーバーを設定したり管理したりする必要はありません。作業中は、アプリがライブプレビュー用のプライベートなクラウドのサンドボックスで動きます。公開するとき、Mythexがデプロイします。静的なフロントエンドは静的サイトとして、バックエンド(Node、Python、C#、Javaなど)はDockerfileから作られたコンテナとしてデプロイされます。自分でホスティングを設定する必要はありません。デプロイ時、Mythexがマシンの大きさを選びます。標準では1 CPU、512 MBのメモリで、要望に応じてより大きくできます(Freeでは最大1 GB、Proでは最大2 CPU、4 GB、3台まで)。公開済みのアプリは、使われていないとスリープし、次の訪問で起動します。スリープ中のアプリは、コンピュートの費用が一切かかりません。詳細は、ドキュメントのAPIバックエンドとホスティングの上限に記載されています。より広い全体像については、ウェブホスティングとはのガイドをご覧ください。
よくある質問
サーバーとは簡単に言うと何ですか?
サーバーとは、他の端末からの要求を待ち、それに応答するコンピューター、またはその上で動くプログラムです。ウェブサイトを開くと、ブラウザがサーバーにページを要求し、サーバーがそれを返します。
サーバーは物理的な機械ですか、それともソフトウェアですか?
どちらの意味でも使われます。「サーバー」は、物理的または仮想のコンピューターを指すこともあれば、Webサーバーのように要求を処理するその上のプログラムを指すこともあります。今日のほとんどのアプリは、自分で所有するハードウェアではなく、クラウドプロバイダーのデータセンター内の仮想マシンやコンテナ上で動いています。
すべてのウェブサイトにサーバーは必要ですか?
はい。何かが必ず、訪問者にファイルを送る必要があります。静的なウェブサイトは、単純なファイルサーバーかCDNがあれば十分です。データを保存したり、ログインを扱ったり、シークレットのAPIキーを保持したりするアプリには、独自のコードを動かすバックエンドのサーバーも必要です。
localhostとはどういう意味ですか?
localhostは「この同じコンピューター」を意味します。開発者が自分のマシンでアプリを動かすと、http://localhost:3000のようなアドレスで開けます。そのコンピューターからしかアクセスできず、公開サーバーにデプロイされるまで、他の人には見えません。