Micronautの設定値を環境ごとに管理する方法!dev・test・prodの切り替えをやさしく解説
生徒
「Micronautでアプリを作り始めたんですが、開発用と本番用で設定を変えたいときはどうすればいいんですか?」
先生
「Micronautには、環境ごとに設定値を切り替える仕組みが用意されています。」
生徒
「devとかprodって聞いたことはありますが、具体的な使い方が分からなくて…」
先生
「設定ファイルの分け方と実行時の切り替え方法を順番に見ていきましょう。」
1. Micronautで環境ごとに設定を分ける理由
Micronautの設定管理では、環境ごとに設定値を分けて管理する考え方がとても重要です。開発環境ではデバッグしやすい設定、本番環境では安全性や性能を重視した設定が求められます。すべてを一つの設定ファイルに書いてしまうと、変更ミスによるトラブルが起きやすくなります。Micronautでは環境という仕組みを使うことで、設定の切り替えを安全かつ簡単に行えます。
2. dev・test・prodという環境の考え方
一般的にMicronautでは、開発用のdev、テスト用のtest、本番用のprodという三つの環境を使い分けます。devはローカル開発向け、testは自動テストや検証向け、prodは実際の利用者がアクセスする環境です。それぞれ役割が異なるため、同じ設定値を使うのは適切ではありません。環境を分けることで、意図しない設定の混在を防げます。
3. application.ymlと環境別設定ファイル
Micronautでは、共通設定をapplication.ymlに書き、環境ごとの設定をapplication-dev.ymlやapplication-prod.ymlのように分けて管理します。起動時に指定された環境名に応じて、対応する設定ファイルが自動的に読み込まれます。これにより、共通部分と差分を明確に分離できます。
micronaut:
application:
name: sample-app
micronaut:
server:
port: 8080
4. 実行時に環境を切り替える方法
Micronautでは、起動時に環境名を指定することで設定を切り替えます。環境名は複数指定することもでき、優先順位に従って設定が上書きされます。開発中はdev、本番デプロイ時はprodを指定するのが一般的です。この仕組みにより、同じアプリケーションでも実行環境に応じた動作が可能になります。
-Dmicronaut.environments=dev
5. Javaクラスで設定値を利用する基本
環境ごとに切り替えた設定値は、Javaクラスからそのまま利用できます。Micronautでは設定管理と依存性注入が密接に連携しているため、特別な処理を書く必要はありません。設定ファイルを変更するだけで、クラスの動作を柔軟に変えられる点が大きなメリットです。
import io.micronaut.context.annotation.Value;
import jakarta.inject.Singleton;
@Singleton
public class ServerConfig {
@Value("${micronaut.server.port}")
int port;
public int getPort() {
return port;
}
}
6. test環境で設定を切り替える実践例
テスト環境では、本番とは異なるデータベースやポート番号を使いたい場面が多くあります。Micronautではtest用の設定ファイルを用意するだけで対応できます。これにより、テスト実行時に本番設定を誤って使ってしまうリスクを防げます。初心者のうちは、ポート番号を変える例から試すと理解しやすいです。
micronaut:
server:
port: 9090
7. 環境変数と組み合わせた設定管理
Micronautの環境別設定は、環境変数とも組み合わせて使えます。これにより、パスワードやAPIキーなどの重要な情報をファイルに直接書かずに管理できます。環境ごとの設定ファイルと外部設定を組み合わせることで、より安全で柔軟な構成が実現できます。クラウドやコンテナ環境でもこの考え方は非常に役立ちます。
datasources:
default:
url: ${DB_URL}
8. 環境ごとの設定管理を身につけるメリット
Micronautで環境ごとの設定管理を理解すると、開発から本番運用まで一貫した構成でアプリを運用できます。設定の切り替えが明確になることで、トラブルの原因を特定しやすくなり、チーム開発でも安心して作業できます。初心者の段階でこの仕組みを理解しておくと、後々の開発効率が大きく向上します。