application.properties と YAML の基本をやさしく解説!初心者向けSpring Boot設定ファイル入門
新人
「Spring Bootでアプリを作るときに、設定ファイルってよく出てきますよね?application.propertiesとか……。あれって何なんですか?」
先輩
「いいところに気がついたね。Spring Bootではapplication.propertiesやapplication.ymlという設定ファイルを使って、アプリの設定をまとめて管理しているんだ。」
新人
「設定って、何を設定するんですか?どうやって書けばいいのかもわからなくて……。」
先輩
「まずは基本のapplication.propertiesから順番に見ていこう!」
1. Spring Bootの設定ファイルとは?
Spring Bootの設定ファイルは、アプリケーションの動作に必要な情報や、開発中に変更したい値をまとめて記述できる便利なファイルです。特に、環境ごとに設定を切り替えたいときなどに非常に役立ちます。
たとえば、Webサーバーのポート番号を変更したい場合や、文字コードの設定、データベース接続の情報などをこの設定ファイルに記述します。
Spring Bootでは主に以下の2つの形式で設定を書きます。
application.properties(プロパティ形式)application.yml(YAML形式)
これらはSpring Bootが自動的に読み込んでくれるため、特別な設定なしですぐに使えるのが特徴です。この記事では、まずapplication.propertiesの基本的な使い方を見ていきましょう。
2. application.propertiesの基本的な使い方
application.propertiesファイルは、キーと値を「=(イコール)」でつなげて設定を書く形式です。ファイルはsrc/main/resourcesフォルダの中に作成されます。
Spring Bootでプロジェクトを作成した場合は、最初からこのフォルダが用意されているので、その中にapplication.propertiesファイルを置くだけでOKです。
たとえば、Webアプリのポート番号を変更するには、次のように記述します。
server.port=8081
この設定により、Tomcatサーバーが8081番ポートで起動するようになります。
では、もう少し実用的な設定例を見てみましょう。たとえば、HTMLの文字エンコーディングやテンプレートのキャッシュ設定などもapplication.propertiesに書くことができます。
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
ここで設定しているUTF-8は、文字コードを指定していて、日本語を含むページでも文字化けしないようにするためのものです。また、cache=falseにすることで、テンプレートを変更した際に即座に反映されるようになります。
さらに、ログ出力のレベル設定などもこのファイルに書くことができます。
logging.level.org.springframework=INFO
この設定は、Spring関連のログを「INFOレベル」で出力するようにするものです。開発中はDEBUGにしたり、本番環境ではWARNやERRORに変更することもあります。
実際にPleiadesでSpring Bootプロジェクトを作成した場合、以下の手順でapplication.propertiesを編集できます。
- Pleiadesを起動する
- 作成済みのSpring Bootプロジェクトを開く
src/main/resourcesフォルダを開いて、application.propertiesを作成- 必要な設定を入力
- 保存してアプリを実行(実行ボタンまたは右クリック → 実行)
そして、例えばポートを8081に変更した場合、実行結果は以下のようになります。
Tomcat started on port(s): 8081 (http) with context path ''
このようにapplication.propertiesは、アプリ全体の振る舞いをコントロールする中心的な役割を果たします。非常にシンプルな形式なので、初心者でもすぐに慣れることができます。
次回は、同じ設定ファイルであるapplication.ymlの使い方について詳しく見ていきましょう。
3. application.ymlとは?(YAML形式の設定ファイル)
application.ymlは、Spring Bootで使えるもう一つの設定ファイル形式で、YAML(ヤムル)形式で記述します。YAML形式は、見た目がシンプルで階層構造がわかりやすく、複数の設定をまとめて管理しやすいのが特徴です。
ファイルの保存場所はapplication.propertiesと同じく、src/main/resourcesフォルダです。YAMLはインデントで構造を表すため、スペースの使い方に注意する必要があります。特に、タブではなく半角スペースを使うようにしましょう。
以下は、application.propertiesで設定した内容を、application.ymlで書き直した例です。
server:
port: 8081
spring:
thymeleaf:
encoding: UTF-8
cache: false
logging:
level:
org:
springframework: INFO
このように、YAML形式では階層をインデントで表現することで、設定の構造が一目でわかるようになります。設定の内容は同じでも、application.propertiesよりも読みやすいと感じる人も多いです。
4. application.propertiesとapplication.ymlの違い
application.propertiesとapplication.ymlは、どちらもSpring Bootの設定ファイルとして使えますが、書き方や特徴にはいくつか違いがあります。以下に、それぞれの違いをまとめます。
- 書式の違い:
application.propertiesは「キー=値」で書く形式、application.ymlはインデントで階層を表す形式です。 - 読みやすさ: 階層構造の設定が多い場合は、
application.ymlの方が見やすくなります。 - 注意点:
application.ymlはスペースやインデントのミスでエラーになりやすいため、初心者には少し難しく感じるかもしれません。 - コメントの書き方: どちらもコメントは「#」で始めることができます。
実際に、同じ設定を2つの形式で比較してみましょう。
server.port=8081
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
logging.level.org.springframework=INFO
server:
port: 8081
spring:
thymeleaf:
encoding: UTF-8
cache: false
logging:
level:
org:
springframework: INFO
このように、同じ内容でもapplication.ymlの方が視覚的にまとまりがあり、見やすいというメリットがあります。一方で、インデントミスでアプリが正しく動かなくなる可能性もあるため、注意が必要です。
5. どちらを使えばよいのか?初心者向けの選び方アドバイス
Spring Bootの設定ファイルとして、application.propertiesとapplication.ymlのどちらを使うべきか迷う方も多いと思います。ここでは、初心者に向けた選び方のポイントを紹介します。
- まずは
application.propertiesがおすすめ: 記述がシンプルで、インデントエラーの心配が少ないため、初心者でも扱いやすいです。 - 慣れてきたら
application.ymlも使ってみよう: 複雑な構造の設定や、プロファイルごとの設定管理が必要になったときには、YAMLの方が便利です。 - Pleiades環境ではどちらも使える: Pleiadesで作成したSpring Bootプロジェクトでも、どちらのファイル形式にも対応しています。自由に切り替えることができます。
- 併用は避ける: 同時に両方を使うこともできますが、設定の重複や優先順位で混乱を招くことがあるため、最初のうちは片方に統一するのが安全です。
初心者のうちは、公式チュートリアルや解説記事でもよく使われているapplication.propertiesを使うのが無難です。記述ルールも簡単なので、すぐに慣れることができます。
ただし、将来的にプロジェクトが大きくなって、設定項目が増えてきた場合には、構造が明確にできるapplication.ymlへの移行を検討するのも良いでしょう。
どちらの形式にも長所と短所があるので、まずはそれぞれの違いを理解して、自分の用途や習熟度に応じて使い分けていくことが大切です。
6. 設定ファイルの書き方で気をつけるポイント
Spring Bootの設定ファイルを記述する際には、いくつかの注意点があります。特にapplication.ymlを使う場合は、インデントや記述ルールを間違えると、アプリケーションの起動時にエラーが発生することがあるため、初心者は慎重に取り扱う必要があります。
ここでは、「Spring Boot 設定ファイル 注意点」や「application.yml エラー対策」として、よくあるミスとその対処法をまとめます。
- 半角スペースを使う:
application.ymlではインデントにタブを使用しないようにしましょう。必ず半角スペースを使って階層を表現します。 - インデントはそろえる: 同じ階層は同じ数のスペースでインデントする必要があります。ずれると認識されず、起動エラーの原因になります。
- 特殊文字の扱い: 値にコロン
:やシャープ#などを含める場合は、ダブルクォーテーション"で囲むようにしましょう。 - 同じキーを重複しない: 同一ファイル内で同じキーを複数回設定すると、予期しない動作になる場合があります。
- エラーが出たらymlを疑う: アプリが起動しないときは、まず
application.ymlの記述ミスを疑い、application.propertiesで書き直して動作確認するのも一つの手です。
例えば、次のようなインデントミスがあると、Spring Bootは起動に失敗します。
server:
port: 8081
これはportがserverの下の階層であることを示していないため、正しくは次のように記述します。
server:
port: 8081
このように、特にapplication.ymlは見た目がきれいな反面、細かなインデントミスが致命的になりやすいため、慣れるまでは慎重に書くようにしましょう。
7. 実行して動作を確認しよう
ここでは、実際にSpring Bootの設定ファイルを使って動作確認をしてみましょう。今回はapplication.propertiesでサーバーポートを変更し、簡単なコントローラーを作成して設定が反映されているかをチェックします。
まず、application.propertiesに以下のように記述します。
server.port=8085
次に、コントローラークラスを作成します。ここでは、@Controllerを使って、簡単なメッセージを表示する画面を用意します。
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/")
public String hello(Model model) {
model.addAttribute("message", "Spring Bootの設定ファイルテスト中!");
return "hello";
}
}
続いて、src/main/resources/templatesフォルダ内にhello.htmlファイルを作成し、以下のように書きます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テスト画面</title>
</head>
<body>
<h1>こんにちは!</h1>
<p th:text="${message}">ここにメッセージが表示されます。</p>
</body>
</html>
プロジェクトをPleiadesで実行すると、http://localhost:8085/にアクセスしたとき、画面に「Spring Bootの設定ファイルテスト中!」というメッセージが表示されれば成功です。
Tomcat started on port(s): 8085 (http) with context path ''
このように、設定ファイルに書いた内容が反映されているかどうかは、アプリケーションの動作やログ出力で簡単に確認できます。
8. どちらの形式も覚えておくと便利
application.propertiesとapplication.ymlは、どちらもSpring Bootの開発において欠かせない設定ファイルです。それぞれにメリット・デメリットがあるため、初心者のうちは使いやすいapplication.propertiesからスタートし、徐々にapplication.ymlにも挑戦していくのが理想です。
特にapplication.ymlを使う場合は、インデントミスなどによるエラーを防ぐため、書き方のルールをしっかりと覚えることが大切です。エディタの設定で「タブをスペースに変換」するようにしておくと、ミスを防ぎやすくなります。
また、Pleiades環境ではどちらの形式も問題なく動作するため、自分の書きやすさやチームの方針に合わせて柔軟に使い分けましょう。設定ファイルの使い方に慣れてくると、開発効率もぐっと上がります。
設定ファイルは地味な存在かもしれませんが、アプリケーションの安定動作に直結する重要な部分です。正しく使えるようになれば、Spring Bootのプロジェクトをより自由にコントロールできるようになります。
まとめ
application.properties と YAML の理解を深めるための総まとめ
この記事では、Spring Boot の開発で欠かせない設定ファイルである application.properties と application.yml の役割や書き方について、基本から丁寧に学んできました。Spring Boot が設定ファイルを自動的に読み込んでくれる仕組みは、複雑な設定をコードに直接書かずに済むため、開発の柔軟性と管理のしやすさを大きく向上させます。
特に、ポート番号の変更、文字コードの設定、テンプレートエンジンの動作制御、ログレベルの変更など、アプリケーションの重要な挙動をこの設定ファイル一つで調整できる点は非常に大きなメリットです。設定内容をまとめて管理できることで、環境ごとの差異を明確にしやすく、テスト環境や本番環境を切り替える際にも非常に便利です。
また、単純な設定変更だけでなく、階層構造で設定を書ける YAML を使うことで、より見通しのよい設定ファイルを作成することができ、開発者同士で共有しやすい点も特徴です。それぞれの形式は表記方法が異なりますが、目的はどちらも「アプリケーションの動作を柔軟に管理する」ことであり、プロジェクトに応じて使い分けることができます。
設定ファイルの理解を深めるサンプルコード
ここでは、properties と YAML の両方を比較しながら理解を深めるための簡単なサンプルを整理します。同じ設定を二つの形式でどのように記述するのか確認しておくと、場面に応じた選択がしやすくなります。
# application.properties の例
server.port=9090
spring.thymeleaf.cache=false
logging.level.com.example=DEBUG
# application.yml の例
server:
port: 9090
spring:
thymeleaf:
cache: false
logging:
level:
com.example: DEBUG
このように、properties は「キー=値」、YAML は「階層構造」で読みやすく整理できるという違いがあります。状況によってどちらの形式が適しているか判断しながら、プロジェクトに合わせて柔軟に選択していくことが大切です。
実務で活きる application.properties と YAML の活用ポイント
実務の現場では、環境によって設定値が異なるケースが非常に多くあります。開発環境ではログレベルを細かく設定し、本番環境では重要な情報だけを出力するようにするなど、設定ファイルの活用はアプリケーションの品質と安全性に直結します。
また、データベース接続情報や外部APIのURL、セキュリティ関連の項目など、頻繁に変更される可能性がある値はすべて設定ファイルで管理することで、コードの変更を最小限に抑えつつ柔軟に動作を調整できます。YAMLでは複数階層の設定も見やすく書けるため、大規模アプリケーションでは YAML が選ばれることも多くあります。
設定ファイルを活用してよりよいアプリケーション設計へ
Spring Boot の魅力のひとつは、設定ファイルを活用してアプリケーションの挙動を細かく制御できる点にあります。今回学んだ application.properties と application.yml の使い方を理解することで、プロジェクトの可読性や保守性が格段に向上します。また、環境ごとの設定切り替えや運用時の調整も容易になり、アプリケーション開発における大きな武器となります。
今後は、@Value を使ったプロパティ読み込みや、@ConfigurationProperties による設定のバインドなど、さらに実践的な設定管理方法にも挑戦することで、より高度なアプリケーション設計が可能になります。設定を制することは開発を制することにもつながるため、今回の知識をしっかりと身につけておくことが大切です。
生徒:「properties と YAML の違いがよくわかりました!どちらも仕組みは同じでも、書き方に特徴がありますね。」
先生:「その通り。書き方の好みやプロジェクトの規模に応じて選べばいいんだよ。」
生徒:「設定ファイルでアプリの挙動が変わる仕組みが面白いです。今後もっと複雑な設定にも挑戦したいです。」
先生:「いい姿勢だね。次は YAML の階層構造を使った詳細な設定や、環境ごとの切り替えにも挑戦してみよう。」
生徒:「はい!設定ファイルの管理がしっかりできれば開発がもっとスムーズになりそうです。」
先生:「その意識が成長につながるよ。今回の基礎は、これからの開発でもずっと役に立つはずだよ。」