【Java初心者向け】簡易Webサーバの作り方完全ガイド|Socket通信を学ぼう

プログラミング

「Javaで本格的な仕組みを体験したいけど、何から始めればいいか分からない」
「HTTP通信やWebサーバの仕組みを理解したい」
そんな方におすすめなのが、簡易Webサーバの自作です。

Javaだけで構築できるWebサーバを通じて、ソケット通信・HTTPリクエスト処理・応答生成の仕組みを学ぶことができます。
この記事では、誰でも実装できる簡単なWebサーバの作成方法を、実例コード付きで丁寧に解説いたします。


簡易Webサーバとは何か?

JavaでWebの仕組みを体験できます

結論:JavaでHTTP通信を体験できる最も簡単な方法がWebサーバの自作です。

Webページを見る裏側では、サーバとクライアントがHTTPでやり取りしています。
この仕組みを学ぶには、実際にサーバを作って動かすのが一番理解しやすいです。

Javaなら、ServerSocketSocketといった基本クラスを使って、
コード数百行以内で簡易Webサーバが作成可能です。


Webサーバの基本構造を理解する

サーバは「受け取って返す」だけです

結論:HTTPリクエストを読み取り、HTTPレスポンスを返す構造になっています。

基本的なWebサーバの流れ:

  1. クライアントからの接続を待つ
  2. リクエストを受け取る
  3. 文字列として解析(例:GET / HTTP/1.1
  4. HTMLなどのレスポンスを返す

文部科学省の「情報活用能力」でも、通信の理解は基本スキルとして定義されています(出典:https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm)。


Javaでソケット通信を使う準備

必要なクラスと仕組みを把握しましょう

結論:ServerSocketSocketクラスが中心です。

  • ServerSocket:接続を待ち受ける(ポートを開く)
  • Socket:接続された相手との通信に使う
  • BufferedReader:クライアントからのリクエストを受信
  • PrintWriter:レスポンスを返す

実装:簡易Webサーバのコード例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.*;
import java.net.*;
 
public class SimpleWebServer {
    public static void main(String[] args) throws IOException {
        int port = 8080;
        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("Webサーバ起動中(ポート " + port + ")...");
 
        while (true) {
            try (Socket clientSocket = serverSocket.accept()) {
                System.out.println("クライアント接続:" + clientSocket.getInetAddress());
 
                BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
 
                // リクエスト読み取り(1行だけ)
                String requestLine = in.readLine();
                System.out.println("リクエスト:" + requestLine);
 
                // HTTPレスポンスの作成
                String response = "<html><body><h1>Java Web Server 起動成功!</h1></body></html>";
 
                out.println("HTTP/1.1 200 OK");
                out.println("Content-Type: text/html; charset=UTF-8");
                out.println("Content-Length: " + response.getBytes().length);
                out.println();
                out.println(response);
                out.flush();
            }
        }
    }
}

よくあるエラーと対処方法

動かない・表示されない原因はこれです

結論:ポート番号・ブラウザのキャッシュ・リクエスト構文に注意しましょう。

  • localhost:8080にアクセスしても動かない → ポートがブロックされていないか確認
  • ブラウザがキャッシュを使っている → Ctrl+F5で強制再読み込み
  • 複数行読み込みしていない場合、ブラウザが応答を受け取れないことも

応用:さらにできること

サーバを発展させて本格的に使ってみよう

おすすめの追加機能:

  • 複数のHTMLファイルに対応(GET /about など)
  • スレッド化による並列処理対応
  • ファイルシステム連携(静的HTMLファイルの返却)

完成形コードまとめと構成

  • SimpleWebServer.java:単一ファイル構成で動作確認が可能

HTMLの知識と組み合わせることで、自作Webページのテスト環境としても活用できます。


まとめ:JavaでWeb通信を体験しよう

この記事では、Javaで作る簡易Webサーバの作成方法をご紹介しました。

学べたこと:

  • HTTP通信の基本(リクエストとレスポンス)
  • ServerSocketを使ったソケット通信
  • 実用的なJavaプログラムの構成方法

自分でWebサーバを作る経験は、ネットワークやWebの仕組みの理解を大きく深める一歩になります。
ぜひこの記事を参考に、自分だけのJavaサーバを育ててみてください!

タイトルとURLをコピーしました