Micronautの環境変数設定ガイド!dev・test・prodの切り替え方を解説
生徒
「Micronautで開発環境やテスト環境、本番環境を切り替えるにはどうすればいいですか?」
先生
「Micronautでは環境ごとに設定を分けるために環境変数やプロファイルを利用します。dev、test、prodなど、用途に応じた設定ファイルを用意して切り替えられます。」
生徒
「具体的にはどのファイルを作ればいいんですか?」
先生
「Micronautではapplication.ymlを基本として、application-dev.yml、application-test.yml、application-prod.ymlのように環境ごとの設定ファイルを作ります。」
生徒
「それぞれの環境で設定を切り替える方法は?」
先生
「環境変数MICRONAUT_ENVIRONMENTSに指定することで、起動時に適用するプロファイルを決めることができます。」
1. 環境ごとの設定ファイルの作成
Micronautでは基本設定をapplication.ymlに書き、環境別の設定はapplication-dev.yml、application-test.yml、application-prod.ymlに分けます。例えば、サーバーポートやデータベース接続先など、環境ごとに異なる設定を管理できます。
2. dev環境の設定例
開発環境では、サーバーポートを8080に設定し、ローカルのデータベースを利用する場合は以下のように設定します。
micronaut:
application:
name: demo
server:
port: 8080
datasources:
default:
url: jdbc:h2:mem:devDb
username: sa
password: ""
driverClassName: org.h2.Driver
dialect: H2
このように設定することで、開発中はローカル環境向けの設定が自動で適用されます。
3. test環境の設定例
テスト環境では、ポートやデータベース接続を別にし、CI環境での動作確認に使います。
micronaut:
application:
name: demo
server:
port: 8081
datasources:
default:
url: jdbc:h2:mem:testDb
username: sa
password: ""
driverClassName: org.h2.Driver
dialect: H2
テスト環境向けの設定ファイルを用意することで、本番データを汚さず安全にテストできます。
4. prod環境の設定例
本番環境では、外部データベースを使用し、セキュリティ設定も強化します。ポートや接続先を変更するだけでなく、ログレベルやキャッシュ設定も本番用に最適化します。
micronaut:
application:
name: demo
server:
port: 80
datasources:
default:
url: jdbc:postgresql://prod-db:5432/prodDb
username: prodUser
password: secret
driverClassName: org.postgresql.Driver
dialect: POSTGRES
5. 環境変数でプロファイルを切り替える方法
Micronautアプリを起動する際に、環境変数MICRONAUT_ENVIRONMENTSを設定すると、指定したプロファイルの設定が適用されます。例えば、開発環境で実行する場合は以下のようにします。
export MICRONAUT_ENVIRONMENTS=dev
./gradlew run
Windowsの場合はset MICRONAUT_ENVIRONMENTS=devで設定します。この方法を使うことで、同じコードベースでも環境ごとの設定を簡単に切り替えられます。
6. サンプルJavaコードで設定を取得する
Micronautでは環境変数やプロファイルごとの設定をJavaコードから取得できます。以下は簡単な例です。
package example.micronaut;
import io.micronaut.context.annotation.Value;
import io.micronaut.runtime.Micronaut;
public class Application {
@Value("${server.port}")
private static String serverPort;
public static void main(String[] args) {
Micronaut.run(Application.class, args);
System.out.println("Server is running on port: " + serverPort);
}
}
このコードを実行すると、環境ごとに設定したサーバーポートが表示されます。環境変数とプロファイルの連携で、開発、テスト、本番環境の切り替えが簡単に行えます。
7. 注意点とベストプラクティス
Micronautの環境変数とプロファイルを活用する際は、環境ごとの設定ファイルが正しく配置されているか確認することが重要です。特に本番環境の設定は誤ってコミットしないよう、gitignoreに含めたり、外部環境変数で上書きする方法が安全です。開発環境やテスト環境では、ポートやデータベース接続を柔軟に切り替えることで作業効率が向上します。
まとめ
Micronautにおける環境変数設定の重要性を振り返る
この記事では、Micronautを使ったアプリケーション開発において欠かせない環境変数設定と、dev環境・test環境・prod環境の切り替え方法について詳しく解説してきました。 Micronautは軽量で高速なフレームワークである一方、設定管理を正しく行わなければ、開発効率の低下や本番トラブルの原因にもなります。 そのため、環境ごとに設定ファイルを分離し、環境変数を使って柔軟に切り替える考え方は、Micronaut開発の基本でありながら非常に重要なポイントです。
基本となるapplication.ymlに共通設定を書き、application-dev.yml、application-test.yml、application-prod.ymlといった環境別設定ファイルを用意することで、
開発環境ではローカル向け設定、テスト環境では検証用設定、本番環境ではセキュリティを重視した設定を安全に管理できます。
この構成はMicronautだけでなく、マイクロサービスやクラウドネイティブ開発全体に共通する考え方でもあります。
環境変数によるプロファイル切り替えのメリット
環境変数MICRONAUT_ENVIRONMENTSを利用することで、同じソースコードを使いながら、起動時に適用する設定を簡単に切り替えられる点も大きなメリットです。
開発者が手動で設定ファイルを書き換える必要がなく、CI環境や本番サーバーでも安全に運用できます。
特にdev・test・prodといった複数環境を持つプロジェクトでは、環境変数による管理が標準的な手法となっています。
また、Javaコード側では@Valueアノテーションを使って設定値を取得できるため、
環境ごとに異なるポート番号やデータベース接続情報を意識せずに実装できます。
これにより、設定とロジックを明確に分離でき、保守性の高いMicronautアプリケーションを構築できます。
まとめとしてのサンプルプログラム
以下は、これまで学んだ環境変数と設定ファイルの考え方を踏まえた、簡単なサンプル例です。 記事中と同じ構成やクラスの書き方を意識し、Micronautで設定値を扱う基本イメージを再確認しましょう。
package example.micronaut;
import io.micronaut.context.annotation.Value;
import io.micronaut.runtime.Micronaut;
public class Application {
@Value("${server.port}")
private static String port;
public static void main(String[] args) {
Micronaut.run(Application.class, args);
System.out.println("現在の実行環境のポート番号は " + port + " です");
}
}
このようなコードを書くことで、dev環境では開発用ポート、test環境ではテスト用ポート、prod環境では本番用ポートが自動的に反映されます。 環境変数とプロファイルの仕組みを理解しておくことで、Micronautを使った実践的なアプリケーション開発がスムーズに進みます。
生徒
「今回の記事を通して、Micronautで環境変数を使う理由がよく分かりました。 dev、test、prodを分けることで、設定ミスを防げるんですね。」
先生
「その通りです。環境ごとに設定を分離することで、開発効率も安全性も大きく向上します。 特に本番環境では、設定の扱いがとても重要になります。」
生徒
「環境変数で切り替えられるなら、同じMicronautアプリでも用途に応じて柔軟に使えそうですね。」
先生
「はい。Micronautは軽量ですが、設定管理の考え方はとても実践的です。 今回学んだ環境変数設定やプロファイルの使い方は、今後のMicronaut開発でも必ず役立ちますよ。」
生徒
「これからは、環境ごとの設定を意識しながらMicronautでアプリを作ってみます!」