1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「Spring Bootって結局何?」フレームワークが必要な理由

1
Last updated at Posted at 2026-07-27

目次

1. はじめに
2. Spring Bootとは?
 2.1. Spring BootについてChatGPTに聞いてみた
 2.2. 前回の復習 Webアプリをレストランに例えてみる
 2.3. Spring Bootは「設備の整ったキッチン」
 2.4. でも、なぜわざわざSpring Bootを使うの?
3. フレームワークが必要な理由
 3.1. Webアプリにはどんな機能があるの?
 3.2. 簡単なWebアプリをJavaのみで実装する
 3.3. 簡単なWebアプリをSpring Bootで実装する
 3.4. 毎回同じような処理を書く手間
4. まとめ
5. おわりに

1. はじめに

この投稿は、「過去の自分がどう教えてほしかったかを思い出しながら、あの頃の自分に向けて説明する」をテーマにしています。
投稿のコンセプトについては、こちらをご覧ください。

2. Spring Bootとは?

2.1. Spring BootについてChatGPTに聞いてみた

以下は、「Spring Bootとは?」と「フレームワークとは?」についてのChatGPTの回答です。

Spring Bootは、JavaのフレームワークであるSpringを「より簡単に素早く開発・起動できるようにした仕組み(フレームワーク/開発基盤)」です。
主に WebアプリやREST API、マイクロサービスの開発でよく使われます。

フレームワークは、アプリ開発でよくある処理の土台を用意してくれる “枠組み(雛形)” のことです。
開発者はその枠に沿ってコードを書くことで、同じような作業を毎回ゼロから作らずに済みます。

読んでみて、いかがでしょうか?

調べてみると、多くの場合、
「Spring Bootとは、JavaのフレームワークであるSpringを使いやすくしたもの」
「フレームワークとは、処理の土台を用意してくれる枠組み」
のように説明されていると思います。

以前の私は、「なんとなく概要は理解できたけど、腑に落ちない…。」と思っていました。
ですので、もう少し具体的に中身を見ていきたいと思います。

2.2. 前回の復習 Webアプリをレストランに例えてみる

前回の記事では、Webアプリの一連の流れをレストランに例えて説明しました。

  • ブラウザはお客様が座るテーブル

  • サーバーはキッチンにいるシェフ

  • データベースは食材庫

お客様(ブラウザ)から料理の注文が入り、
シェフ(サーバー)が必要な食材を食材庫(データベース)から取り出して料理を作る。
完成した料理をウェイター(ネットワーク)がお客様(ブラウザ)に運ぶ。

そんなイメージでした。

この例えでいうと、サーバーはただ料理を作るだけではありません。
注文を受けたり、食材があるか確認したり、料理を作ったり、盛り付けたり……。
実は、たくさんの仕事を担当しています。

もし、調理を始める前に、必要な設備や調理器具をすべて自分で準備しなければならないとしたら、とても大変ですよね。

2.3. Spring Bootは「設備の整ったキッチン」

例えるなら、Spring Bootは、「設備の整ったキッチン」のようなものです。

みなさんは、普段料理をしますか?
料理って意外と準備が大変ですよね。
包丁やまな板を用意して、フライパンを出して、火をつけて、必要な調理器具をそろえる。

でも、もし最初から必要な設備が整っていて、便利な調理器具も使えるキッチンがあったらどうでしょう。
料理そのものに集中できますよね。

Spring Bootも同じです。

Webアプリ開発に必要な仕組みがあらかじめ用意されているので、開発者は本来作りたい機能の開発に集中できます

2.4. でも、なぜわざわざSpring Bootを使うの?

ここで、こんな疑問が浮かぶかもしれません。

「便利なのはわかった。でも、最新の調理器具がなくても料理はできるよね?」

その通りです。JavaだけでもWebアプリは作れます。
では、なぜ多くの現場でSpring Bootが使われているのでしょう?

キッチンがない状態を思い浮かべてください。
コンロを設置して、水道を引いて、調理台を組み立てて……。
料理を始める前に、まずキッチン作りから始めなければなりません

image.png

JavaだけでWebアプリを作るのは、少し極端に言えば、料理を始める前にキッチン作りから始めるようなものです。

実際に、「Javaだけで作ったWebアプリ」がどんなものなのか、簡単な例を見てみましょう。

3. フレームワークが必要な理由

3.1. Webアプリにはどんな機能があるの?

その前に、Webアプリに必要な機能にはどのようなものがあるでしょう?

  • サーバーを立ち上げる

  • URLを登録する

  • HTTPリクエストを受け取る

  • HTTPレスポンスを返す

  • エラー処理を書く

見慣れない言葉が並んでいると思うので、ざっくり解説します。

サーバー」とは、前回の記事でも触れたように、サービスを提供するためのコンピューティングシステムを指します。
ブラウザからの要求に応じて、Webページや画像などを返します。

URL」は、私たちが普段見かける「http://~」という文字列のことです。
この文字列は、「インターネット上の住所」と表現されることが多いですが、レストランで例えると、「どのお店で、どの料理を注文したいか」を伝えるための情報に近いです。
この記事ではイメージしやすくするために、URLを「料理名」のようなものとして考えてみます。
「どの料理を注文したいか」を伝えるための名前、つまり、「どの機能を利用したいか」を伝える目印なのです。

HTTPリクエスト」は、ブラウザなどからサーバーへ送る要求のことです。
私たちがウェイターに料理名を伝えて注文するように、ブラウザはURLを指定して、サーバーに「この機能を利用したいです」と伝えます。

HTTPレスポンス」は、リクエストに応じて受け取る結果のことです。
料理を注文すると、ウェイターから注文した料理と伝票を受け取りますよね。
ここでいう料理は、「ブラウザに返されるデータ」です。
また、伝票のように「要求の結果を示す情報」も一緒に返されます。

image.png

余談ですが、処理結果に含まれる代表的なものとしては、「ステータスコード」があります。

ネット上の記事を閲覧しようと思ってクリックすると、

404:お探しのページは見つかりませんでした

のような文字が表示されることがあると思います。

この「404」がステータスコードという、処理の結果を表すコードです。

ちなみに、「404」は「リクエストに対応するコンテンツが存在しない」という意味です。
レストランで考えると、「その料理はもう提供していません」みたいなことですね。

image.png

どのコードがどんな状態を表すのか、興味があれば「ステータスコード一覧」などで検索してみてください。

3.2. 簡単なWebアプリをJavaのみで実装する

前置きが長くなりましたが、さっそく、Javaの実装例を見てみましょう。

今回作るのは、ブラウザからアクセスされると 「Hello World」 を返すだけの、とてもシンプルなWebアプリです。

image.png

こんな感じで 「Hello World」だけ返ってきます
データベースとの連携などは行わず、Spring BootとJavaのコード量の違いをイメージしてもらうことを目的としています。

ここからコードが出てきますが、内容をすべて理解する必要はありません
「Spring Bootを使わないと、こんな準備が必要なんだ」というイメージだけ持って読んでみてください。

サーバーがサービスを提供できる状態にするためには、起動する必要があります。
Javaで「Hello World」 を返すWebアプリを実装すると、以下のようになります。

import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.net.InetSocketAddress;

public class Main {

    public static void main(String[] args) throws IOException {

        // 1. ポート番号8080でHTTPサーバーを作成
        HttpServer server = HttpServer.create(
                new InetSocketAddress(8080), 0);

        // 2. 「/hello」というURLにアクセスされたら実行する処理を登録
        server.createContext("/hello", exchange -> {

            // 3. ブラウザに返す文字列をバイト列に変換(UTF-8)
            byte[] responseBytes = "Hello World".getBytes("UTF-8");

            // 4. 「200 OK」とレスポンスのバイト数を返す
            exchange.sendResponseHeaders(200, responseBytes.length);

            // 5. レスポンスを書き込む
            exchange.getResponseBody().write(responseBytes);

            // 6. 通信終了
            exchange.close();
        });

        // 7. サーバー起動
        server.start();

        System.out.println("サーバーが起動しました → http://localhost:8080/hello");
    }
}

※この記事では、Spring Bootがどのような役割を担っているのかを理解しやすくするため、コードに通常より多めのコメントを付けています。実際の開発では、ここまで細かくコメントを書くことはあまりありません。

簡単なWebアプリでも、何行も書く必要があります。
しかも、実装方法はさまざまなので、毎回「どう書こう?」と考える必要があります。

また、上記の例は最低限のコードです。実際の開発現場では、

  • エラーが起きたときの処理

  • ログインしているユーザーかどうかの確認

  • いつ、どのURLに、誰がアクセスしたかのログ出力

  • セキュリティ対策

  • パフォーマンスチューニング

なども実装する必要があり、コード量は大幅に増えます。

3.3. 簡単なWebアプリをSpring Bootで実装する

今度は、Spring Bootの実装例を見てみましょう。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {

        // 1. HTTPサーバーを起動
        SpringApplication.run(Application.class, args);

    }
}
@RestController
public class HelloController {

    // 2. 「/hello」にアクセスされたら実行する処理を登録
    @GetMapping("/hello")
    public String hello() {

        // 3. ブラウザへ返す文字列
        return "Hello World";

    }
}

これだけのコードで、先ほどと同じような処理が実装できます。

先ほどのコードに比べて、何か足りないことに気づいたでしょうか?
…そうです。Javaでは明示的に書いていた処理の多くが見当たりません。

「サーバー作成」「サーバー起動」は「SpringApplication.run()」に含まれています。

また、「return "Hello World";」と書くだけで、その戻り値をもとにSpring Boot側がHTTPレスポンスを作成してくれます。
そのため、「200 OKを返す」「レスポンスボディを書き込む」「通信を終了する」といった細かい処理を、自分で直接書く必要がありません。

image.png

3.4. 毎回同じような処理を書く手間

Webアプリには、どのアプリでもある程度共通して必要になる処理があります。

冒頭で挙げた機能以外にも、リクエストの解析やレスポンスの作成、エラー処理など、Webアプリを動かすためには多くの処理が必要になります。
それらを一から自分で用意するのは大変です。

Webアプリでよく使われる機能を提供し、開発者の手間を減らす。
そのために、Spring Bootは存在します。

以上のことから、Javaは「プログラムを書くためのプログラミング言語」、Spring Bootは「Webアプリケーションを効率よく開発するための仕組み」と言えます。

レストランの例で言い換えると、Javaは「料理をするための技術」、Spring Bootは、「料理を始めやすくするための設備が整ったキッチン」。
だから開発者は、キッチン作りではなく料理そのものに集中できるのです。

4. まとめ

今回は、「フレームワークを使うと何が良いの?」という疑問を出発点に、JavaだけでWebアプリを作る場合と、Spring Bootを使う場合の違いを見てきました。

この記事を読んだことで、

  • JavaでWebアプリを作るには、意外と多くの土台が必要になる

  • Spring Bootは、その土台をあらかじめ用意してくれる

  • だから開発者は、本来作りたい機能に集中できる

というイメージが少しでも伝わっていれば嬉しいです。

5. おわりに

今回は、
フレームワークを使うと何が良いの?
という、漠然とした疑問から、

JavaでWebアプリを開発するためのフレームワークの中で、なぜSpring Bootが選ばれてるの?
Webアプリ開発以外のフレームワークには、どんなものがあるの?ネイティブアプリ開発のフレームワークもある?
Spring Bootのソースコードにある『@』はどんな意味?固有の書き方?

というように、質問のレベルが一段階上がったと思います。
この記事を通して、今までなんとなく理解していたことが少しでも深まれば幸いです。

次回は、初学者が抱きやすい「Spring Bootではなぜクラスを分けるの?」を解決するため、Controller・Service・Repositoryの役割について解説する予定です。

フレームワークが必要な理由について分かったところで、今度は「フレームワークの中でも、Spring Bootにはどういう特徴があるのか」を考えていきたいと思います。

もし「自分はこう理解した」「こっちの方がわかりやすい」という意見があれば、ぜひコメントで教えてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?