application.propertiesとapplication.ymlの違いをやさしく解説!Spring Bootの設定ファイル入門
新人
「Spring Bootで設定ファイルを書くときに、application.propertiesとapplication.ymlのどっちを使えばいいのか迷ってしまいます。」
先輩
「その2つはどちらも設定ファイルだけど、書き方や特徴が違うんだよ。それぞれの違いと使い方を見ていこうか。」
新人
「お願いします!基本から教えてください。」
先輩
「まずはSpring Bootで設定ファイルがどんな役割を持っているのかから説明しよう!」
1. Spring Bootの設定ファイルとは?
Spring Bootでは、アプリケーションの動作に関するさまざまな設定を外部ファイルで管理します。その代表的なファイルがapplication.propertiesとapplication.ymlです。
これらの設定ファイルは、src/main/resourcesディレクトリに配置され、アプリケーションの起動時にSpring Bootが自動で読み込みます。
src/
└── main/
└── resources/
└── application.properties または application.yml
この設定ファイルには、ポート番号、データベース接続情報、テンプレートの場所など、アプリ全体に関わる情報を記述します。たとえば、Webアプリケーションのポート番号を変更したいとき、以下のように書きます。
server.port=8081
また、設定ファイルの内容は、@Controllerクラスや各種Springの機能と連携して動作します。Gradleで構成したPleiades環境のSpring Bootプロジェクトでも、必ずこのファイルが重要な役割を果たします。
2. application.propertiesの基本的な書き方と使い方
application.propertiesは、キーバリュー形式で設定を記述するファイルです。1行に1つの設定を記述し、「キー=値」の形式で書きます。
設定の記述例をいくつか見てみましょう。
# ポート番号の設定
server.port=8080
# テンプレートファイルのパス設定
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html
# ログレベルの設定
logging.level.org.springframework=INFO
このように、application.propertiesではコメントも#を使って記述できます。
記述がシンプルなので、初めてSpring Bootを使う初心者にとっては分かりやすく、読みやすいというメリットがあります。
ただし、設定が多くなってくると、ネスト(階層)の表現がしづらくなり、視認性が低下する場合もあります。たとえば、次のようなケースです。
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb
spring.datasource.username=root
spring.datasource.password=pass123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
このように、同じspring.datasourceに関係する設定がバラバラに見えるため、設定項目が増えてくると管理が大変になることがあります。
この課題を解決する方法のひとつが、次のセクションで紹介するapplication.ymlの使用です。
3. application.ymlの基本的な書き方と使い方
application.ymlは、YAML形式で設定を書くためのファイルです。application.propertiesと同じく、Spring Bootでアプリケーションの設定を行うために使われます。
YAML(ヤムル)は、インデントで階層構造を表現できるため、複雑な設定をまとめて記述しやすいという特徴があります。ネストされた設定をグループ化して見やすく整理できるので、設定項目が増えたときにとても便利です。
たとえば、データベース接続の設定をapplication.ymlで書くと、以下のようになります。
spring:
datasource:
url: jdbc:mysql://localhost:3306/sampledb
username: root
password: pass123
driver-class-name: com.mysql.cj.jdbc.Driver
このように、階層的に記述できるため、設定の構造が一目でわかりやすく、管理しやすくなります。
ただし、YAMLはインデントの数やスペースの使い方に厳しいため、記述ミスがあるとアプリケーションの起動時にエラーが出ることがあります。行頭にタブ文字を使うとエラーになるため、必ず半角スペースでインデントを行いましょう。
4. application.propertiesとの主な違い
application.propertiesとapplication.ymlの最大の違いは、記法と構造の表現方法です。
propertiesファイルは、1行ごとにキー=値で記述するのに対して、ymlファイルはキー: 値を階層的に書くスタイルです。
たとえば、テンプレートのパスやポート番号を設定する場合の書き方は次のようになります。
application.propertiesの場合
server.port=8080
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html
application.ymlの場合
server:
port: 8080
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .html
このように、ymlではインデントにより階層構造がはっきりと表現されます。一方、properties形式は単純ですが、階層の概念がないため、複数の設定が同じグループに属していることが視覚的にわかりにくくなります。
つまり、設定が少ないうちは.propertiesが読みやすく、設定が増えて複雑になってきたら.ymlの方が便利という使い分けができます。
5. 実際に同じ設定をそれぞれで書いて比較
ここでは、同じ内容の設定をapplication.propertiesとapplication.ymlの両方で記述して、具体的に比較してみましょう。
例:サーバーポートとテンプレートパスを設定する
application.propertiesの記述例
server.port=8081
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html
logging.level.org.springframework=DEBUG
application.ymlの記述例
server:
port: 8081
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .html
logging:
level:
org:
springframework: DEBUG
このように、application.ymlは構造がはっきりしていて、同じグループの設定をまとめて記述できるのが強みです。
逆に、application.propertiesは設定の並び順によってグループが見えにくくなることがあるため、設定が多くなってくると保守性に影響が出ることもあります。
一方で、ymlは柔軟な構造を表現できる分、インデントのミスや構文エラーが発生しやすい点に注意が必要です。
どちらもSpring Bootではサポートされているので、プロジェクトの規模やチームの好みに合わせて使い分けると良いでしょう。
6. Spring Bootではどちらを使うべきか
Spring Boot 設定ファイル 選び方に悩んだときは、プロジェクトの特性やチームの状況に応じて判断するのがポイントです。
まず、設定項目が少ない小規模プロジェクトであれば、application.propertiesが向いています。理由は、記述がシンプルで誤記も少なく、初学者にとって扱いやすいためです。
一方、設定項目が多く、階層構造が複雑になる中〜大規模プロジェクトでは、application.ymlの方が適しています。YAML形式なら関連する設定をまとめて見やすく整理でき、保守性も高まります。
また、複数の環境(開発・本番など)で設定を切り替えるケースでも、yml形式の方が柔軟に対応できます。
社内で設定ファイルの記法を統一する方針がある場合は、それに従うのがベストです。ただし、どちらの形式でも同じ内容を記述できるため、最終的には「どちらがチーム全体で扱いやすいか」が重要な判断基準になります。
7. よくあるトラブルと注意点
application.ymlを使用する際に初心者がよくつまずくのが、インデントのミスです。YAMLは見た目の整っていないスペースに非常に敏感で、インデントが正しくないとSpring Bootの起動時にエラーになります。
以下は、インデントミスによるエラー例です。
誤ったyml記述
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .html
この例では、mvc:とview:のインデントが同じになっており、正しい構造ではありません。
正しいyml記述
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .html
このように、階層構造に合わせて半角スペースで正確にインデントする必要があります。タブではなく、必ずスペースを使いましょう。
また、ymlではコロン(:)のあとにスペースを入れないとエラーになる場合もあります。以下はスペースがない誤った例です。
server:
port:8080 # 誤り:コロンのあとにスペースがない
上記のような記述は、構文エラーの原因になるため注意しましょう。
一方、application.propertiesでは「=」記号での記述となるため、構文ミスのリスクは比較的少ないです。ただし、行が多くなった場合にグルーピングができず、設定が見づらくなるというデメリットがあります。
つまり、application.ymlは柔軟な構造が魅力ですが、記述ミスによるエラー(yml エラー)が起きやすく、application.propertiesは記述がシンプルな一方で可読性に劣る場面もあるという特徴があります。
8. それぞれのメリット・デメリットの振り返り
ここまで、Spring Bootの設定ファイルとして使われるapplication.propertiesとapplication.ymlの違いや使い方について解説してきました。最後に、それぞれの形式のメリット・デメリットを振り返ってみましょう。
application.propertiesのメリット
- 記述がシンプルで、初心者にも扱いやすい
- エラーが起きにくく、構文ミスが少ない
- 1行ずつの設定なので視認性がある(少量の設定に限る)
application.propertiesのデメリット
- 階層構造が表現できないため、大量の設定では見づらい
- 同じグループの設定を視覚的にまとめづらい
application.ymlのメリット
- 階層的に設定を整理でき、複雑な構成も見やすい
- 関連する設定をグルーピングしてまとめやすい
- 環境ごとの設定ファイル切り替えに柔軟に対応できる
application.ymlのデメリット
- インデントやスペースの記述ミスによってエラーが起きやすい
- 初心者には構文が少しわかりづらい
結論として、Spring Boot 設定ファイルの選び方は、「扱いやすさを優先するか、構造の明確さを重視するか」によって変わってきます。プロジェクトの規模やメンバーのスキルレベルに応じて最適な形式を選ぶことが、安定した開発につながります。