AndroidではJavaの他、Kotlinも公式言語としてサポートされています。KotlinはJVM上で動作する静的な型付け言語で、言語体系がSwiftに似ています。そのため、Swiftに慣れた開発者であればすぐに習得できるかと思います(似ているので逆に戸惑う部分もあるのですが)。
今回はAndroid Studio 3系を使い、KotlinでNCMBを利用する方法を解説します。今回はキーをコード上に書かなくする方法を紹介します。
キーの隠蔽化について
mBaaSにおけるキー(アプリケーションキーおよびクライアントキー)は重要なデータです。この二つが漏洩すると、悪意をもったデータ操作が可能になる可能性があります。そこでコード中には直接書かず、Gitなどのリポジトリにも載せないのが安全です。
Androidでは元々ビルド時のスクリプトが用意されていますので、それを使うことでキーを隠蔽化できます。
gradle.propertiesの修正
まずアプリケーションキー、クライアントキーをgradle.propertiesに記述します。
com.nifcloud.mbaas.applicationKey=d3a...f09 com.nifcloud.mbaas.clientKey=577...292
gradle.propertiesは .gitignore などに登録しておきます。
app/build.gradleの修正
app/build.gradleにて設定ファイルを生成する設定 buildConfigField
を追加します。変数をそれぞれ APPLICATION_KEY と CLIENT_KEY で定義します。
android { : defaultConfig { buildConfigField "String", "APPLICATION_KEY", "\"${project.property("com.nifcloud.mbaas.applicationKey")}\"" buildConfigField "String", "CLIENT_KEY", "\"${project.property("com.nifcloud.mbaas.clientKey")}\"" } }
使い方
このように設定すると app/build/generated/source/buildConfig/debug/PACKAGE_PATH/BuildConfig.java
といったパスでファイルが生成されます。これは以下のような内容になっています。
public final class BuildConfig { : // Fields from default config. public static final String APPLICATION_KEY = "d3a...f09"; public static final String CLIENT_KEY = "577...292"; }
app/build ディレクトリはあらかじめ .gitignore に入っていますので、このファイルがGitリポジトリに載ることはありません。そして、このファイルをNCMBの初期化を行うファイルで読み込みます。
import jp.moongift.keysncmb.BuildConfig
後は BuildConfig
変数が使えます。
NCMB.initialize(applicationContext, BuildConfig.APPLICATION_KEY, BuildConfig.CLIENT_KEY)
まとめ
キーを誤って公開したりすることがないよう、コードに記載するのは止めましょう。iOSであればCocoapods-keysを使って隠蔽化できます。Androidの場合は今回紹介したBuildConfigが簡単に導入できる方法になります。
今回のコードはNCMBMania/kotlin_keys: Kotlinでアプリケーションキー、クライアントキーをコードから隠蔽化するデモです。にアップロードしてあります。実装時の参考にしてください。