目次
Kotlin環境でサーバーを作っていると、DBへのアクセストークンやパスワードなど、Git管理に含めたくないデータ、つまり機密情報が出てくると思います。
このときに必要なデータを使用する箇所にハードコードで記述するのは絶対にダメ
なので、どう管理するのがいいのかというのを調べてみました。
Rubyでいう.env
ファイル的な分離をKtorでもしたいということです。
- Kotlin
- Ktor
- InteliJ IDE Ulitimaite
今回はいちばん簡単な方法として、.idea
に保存する方法を紹介します。
この方法は、環境変数として、.idea
内のworkspace.xml
にキーバリュー方式で機密情報を保存する方法です。
基本的に.ideaフォルダは共有しない前提でいます。
他に、 以下のライブラリ(dotenv-kotlin
)を使う方法もあります。
設定方法
以下の手順で、実行/デバッグ構成
画面を開きます。
実行 -> 実行環境の編集 -> 実際に実行する構成を選択 -> 環境変数(E):
その後、枠の右側のノートアイコンをクリックして、上のローカル環境変数の部分に分離したい機密情報を設定します。
今回は、テストとして以下のように機密情報を追加しました。
- 名前 : test
- 値 : aaa
コードからの参照方法
コードから環境変数に設定した機密情報を引っ張ってくるには、System.getenv("名前")
を使用します。
この変数で取得するString型はnull許容(String?)
なので、nullチェックをして値が正常に取得できたかチェックして取得できなかった場合のケアも忘れずに行うようにしましょう
Kotlin
val connectionString = System.getenv("test")
if(connectionString == null) {
Log.d("Main","環境変数からMongoDBへのアクセスURLが取得できませんでした")
}else{
Log.d("Main","環境変数からの機密情報の取得に失敗")
}
Gitなどで外部に公開する場合、.idea
フォルダは、.gitignore
でバージョン管理から除外しておきましょう
.gitignore
.idea/