| この記事の要点 |
|
概要
.properties は、Java で長年使われてきたキー=値形式の設定ファイルである。標準ライブラリ java.util.Properties クラスがそのまま読み書きできる形式で、Java の世界では「アプリの設定」「国際化メッセージ」「ライブラリのデフォルト挙動」など、ありとあらゆる場面で目にする。拡張子は .properties。形式自体は極めて単純で、特別なパーサを要しないテキストファイルである。
Spring / Spring Boot を触ったことのある開発者は application.properties という名前を必ず目にしたことがあるはずで、これがまさに同形式のファイル。データソースの接続情報、ログレベル、ポート番号、機能フラグなど、アプリの起動時パラメータを宣言する用途で使われる。Log4j や JBoss 等、Java 系ミドルウェアの設定にも採用例が多い。
内部構造・構文
形式はシンプルで、1 行 1 エントリ。key と value を =、:、または空白文字(スペース/タブ)で区切る。key 内には区切り文字を入れたい場合 \\ でエスケープする。
# これはコメント
! これもコメント
# 基本: key=value
app.name=My Application
app.version=1.2.3
# コロン区切りも可
server.port: 8080
# 空白区切りも可(推奨はしない)
db.url jdbc:mysql://localhost:3306/mydb
# 値の継続: 行末に \
log.message=これは長い長い長い長い長い長い長い長い\
メッセージです。
# 日本語はユニコードエスケープ (旧来の方法)
greeting=こんにちは
# Spring Boot 風のドット区切りで疑似階層を表現
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.datasource.username=admin
spring.datasource.password=secret
spring.jpa.hibernate.ddl-auto=update
コメントは行頭の # または ! から行末まで。空行は無視される。= や : の前後の空白は読み飛ばされるため、整列のためにスペースを入れても問題ない。
注意したいのがエンコーディングで、伝統的に .properties は ISO-8859-1(Latin-1)として解釈される。日本語を直接書き込んだ古いプロジェクトでは、文字化けを防ぐために JDK 同梱の native2ascii ツールで あ 形式のユニコードエスケープに変換するのが定番だった。Java 9 以降は Properties.load(Reader) 経由で UTF-8 として直接読めるようになり、ビルドツール (Maven/Gradle) も自動で UTF-8 として扱えるため、現代のプロジェクトでは日本語をそのまま書いて UTF-8 で保存するケースが増えている。
主な用途
- アプリケーション設定 — Spring Boot の
application.properties、Tomcat のcatalina.properties等 - 国際化 (i18n) メッセージ辞書 —
messages.properties(デフォルト)、messages_ja.properties(日本語)、messages_en_US.properties(米英語)をResourceBundleで切り替え - ライブラリのデフォルト値 — Logback / Log4j のフォーマット指定、Hibernate の方言指定など
- 環境差分の管理 —
application-dev.properties/application-prod.propertiesのように環境別にファイルを分け、Spring Profile で切替 - ビルドツール — Gradle の
gradle.propertiesでビルド時プロパティを定義
関連形式との比較
| 形式 | 主な舞台 | 階層 | 型 | コメント |
|---|---|---|---|---|
| .properties | Java | ドット区切りで疑似 | 文字列のみ | # / ! |
| .yml / .yaml | Java / Ruby / DevOps | インデントで自然に階層 | 文字列 / 数値 / 真偽値 / リスト | # |
| .json | 言語横断、API | 波括弧でネスト | 4 種類のスカラー + 配列 + オブジェクト | 不可 |
| .toml | Rust 等の設定 | セクション + ドット | 豊富(日時含む) | # |
| .ini | 古典的設定 | セクション [name] | 文字列 | ; / # |
Spring Boot は application.properties と application.yml のどちらでも読めるが、階層を持つ複雑な設定は YAML、フラットでシンプルな設定は properties、と使い分けるチームが多い。
編集・パーサ・ツール
- Java 標準 —
java.util.Properties。load(InputStream)/load(Reader)/store()でロード・保存 - Spring —
@Value("${app.name}")や@ConfigurationPropertiesで型安全に注入 - エディタ — IntelliJ IDEA / Eclipse は properties ファイルに専用ハイライト・補完を持ち、Spring プロジェクトでは設定キーの補完まで効く
- 変換ツール — properties ↔ YAML 変換ツール(Spring Boot 公式に Properties to YAML Converter あり)
- i18n —
ResourceBundle.getBundle("messages", Locale.JAPAN)で対応するmessages_ja.propertiesを読む
注意点・落とし穴
- 文字コード — 旧来の ISO-8859-1 で読まれると、日本語が文字化けする。プロジェクトで使う JDK バージョンとビルドツールの設定を確認し、UTF-8 統一を明示する
- バックスラッシュ — Windows のパス
C:\app\configを書くときは\\でエスケープする必要がある (C:\\app\\config) - 値の継続行 — 行末の
\は次行と連結するため、Windows パスをそのまま書くと意図しない継続が起こる - 階層構造の表現が苦しい — ドット区切りで疑似階層を表現するが、配列を含む構造は
list[0]/list[1]のような苦しい書き方になる - 機微情報の平文管理 — DB パスワードや API キーを直書きすると流出リスク。環境変数注入や Vault / Spring Cloud Config / Secrets Manager との連携を検討
- 順序不定 —
Propertiesは HashMap ベースで、保存・列挙時の順序が保証されない。順序が必要ならLinkedProperties等を自前で用意
関連リンク
- Web・データ・設定(親カテゴリ)
- ファイル拡張子とは
- YAML(.yml / .yaml) — Spring Boot で properties の代替として使われる
- TOML(.toml) — 同じ「設定ファイル」目的の現代的フォーマット
- .env — 環境変数によるシークレット管理
- INI(.ini) — .properties のルーツに近い古典的フォーマット
- Application.properties の環境依存設定の分割方法
子ページはありません
- HTML(.html / .htm)
- CSS(.css)
- JSON(.json)
- XML(.xml)
- YAML(.yaml / .yml)
- TOML(.toml)
- env(.env)
- INI(.ini)
- properties(.properties)
- conf(.conf)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15