🧑‍💻 Spring Framework 講座【第4回】プロジェクトの設計図!〜MavenとGradleの基本と依存関係管理〜

docs

前回は、業務システムを安定させるための「例外処理」と、データを扱う「コレクション」について学びました。

今回からは、いよいよ本格的なSpringプロジェクトの立ち上げに必要な「ビルドツール」について学びます。Spring開発で欠かせない Maven (メイヴン)Gradle (グレイドル) の役割と、プロジェクトファイルの読み方を理解しましょう。

1. ビルドツールとは? なぜMaven/Gradleが必要なのか?

私たちがこれから作るSpringアプリケーションは、私たちが書くコード(Javaファイル)だけでなく、たくさんの外部ライブラリに依存しています。

例えば、「データベースに接続する機能」を使いたいなら、そのためのライブラリが必要です。

ビルドツールは、これらプロジェクト開発における「面倒な作業」を自動化してくれるツールです。

ビルドツールの主な役割は以下の3点です。

  1. 依存関係(ライブラリ)の管理: 必要なライブラリをインターネットから自動でダウンロードし、プロジェクトに追加する。
  2. ビルド(構築): Javaコードをコンパイルし、実行可能なファイル(.jarや.war)にパッケージングする。
  3. テストの実行: 定義したテストコードを自動で実行する。

特に「依存関係の管理」はSpring開発の根幹であり、MavenとGradleはこれを担うための世界標準のツールです。

2. MavenとPOMファイル(pom.xml)

Mavenは最も古くから使われている標準的なビルドツールで、「Convention over Configuration (設定より規約)」という思想に基づいています。

Mavenでは、プロジェクトの構成や依存関係を記述するために、pom.xmlProject Object Model)ファイルを使用します。これはプロジェクトの**「設計図」**にあたります。

2-1. pom.xml の構造

以下のサンプルは、Spring Bootプロジェクトでよく見られるpom.xmlの簡略版です。

XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>my-spring-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        
    </dependencies>
    
</project>

【ポイント解説】

  1. 親プロジェクト(parent): ここではSpring Bootの親設定を継承しています。これにより、Springを使うための様々な設定やライブラリのバージョンを自動で管理してくれます。
  2. プロジェクト情報(groupId/artifactId): プロジェクトを一意に識別するための情報です。他の人がこのライブラリを使う際の「住所」になります。
  3. 依存関係(dependencies): 実際にプロジェクトで使用したいライブラリ(dependency)を記述します。Mavenは、ここに書かれた情報を元にライブラリをダウンロードしてくれます。

3. Gradleとbuild.gradle

近年、Mavenに代わって急速に普及しているのがGradleです。

MavenがXML形式で設定を記述するのに対し、Gradleはより簡潔で柔軟なGroovyKotlinといった言語(DSL: Domain Specific Language)で設定を記述します。

3-1. build.gradle の構造(Groovy形式)

Mavenと全く同じ内容をGradleで記述すると、以下のようになります。非常にシンプルになっていることがわかります。

Groovy

// ① 依存関係の解決に必要なプラグインを指定
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.0' // Spring Bootプラグイン
}

// ② プロジェクト自体の情報
group = 'com.example'
version = '0.0.1-SNAPSHOT'

// ③ 依存関係のダウンロード先を指定
repositories {
    mavenCentral()
}

// ④ 依存関係の定義 (最も重要)
dependencies {
    // Webアプリ開発に必要なライブラリ群をまとめて追加
    implementation 'org.springframework.boot:spring-boot-starter-web'
    
    // データベース(H2)を使うためのライブラリを追加
    runtimeOnly 'com.h2database:h2' 
    
    // テスト用のライブラリ
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

【ポイント解説】

  • plugins: Spring Bootのような特定の機能(プラグイン)を利用するために指定します。
  • dependencies: ライブラリの指定方法が implementation 'グループID:アーティファクトID' のようにコンパクトになります。

4. プロジェクト作成時の選択

業務システム開発では、プロジェクトの性質やチームの慣習によってMavenとGradleのどちらを使うか決められます。

ツール特徴記述形式推奨されるケース
Maven歴史が長く、情報が多い。設定が規約的でシンプル。XML安定性、情報量を重視する場合。
Gradle記述がシンプルで柔軟性が高い。ビルドが高速な場合が多い。Groovy/Kotlin最新技術、大規模プロジェクトの場合。

この講座では、どちらのツールも理解できるよう解説を進めますが、特に断りがない限り、モダンな開発で主流になりつつあるGradleの形式を主に利用していきます。

✅ 本日のまとめ

  • ビルドツール(Maven/Gradle)は、依存関係の管理とコンパイル・パッケージングを担う。
  • MavenはXML形式の**pom.xmlを、GradleはGroovy/Kotlin形式のbuild.gradle**をプロジェクトの設計図として使う。
  • どちらも、dependencies ブロックに書かれたライブラリを自動でプロジェクトに追加してくれる。

🔔 次回予告

これでJavaの基礎と、プロジェクトの管理ツールが整いました。いよいよSpring Frameworkの核心に迫ります。

次回は、Springが誕生した背景と、その最も重要なコンセプトである「DI (依存性の注入)」と「IoC (制御の反転)」について学びます。この概念こそが、Springが業務システム開発で圧倒的な支持を得ている理由です。

次回:【第5回】Spring Frameworkとは?(全体像の把握) にご期待ください!

コメント

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