KotlinでmBaaSを始めよう！

## **概要**

* この記事はKotlinアプリに[ ニフクラ mobile backend ](http://mbaas.nifcloud.com/) (mBaaS)を導入する方法記載しています。
* さらに簡単にmBaaSが導入できましたのでその方法をご紹介します。

## **準備するもの**
* PC
  * Mac OS X 10.13 (High Sierra)で動作確認しています
* Android Studio 2.x、3.0
* [ニフクラ mobile backend](http://mbaas.nifcloud.com/) の登録とアプリの新規作成

※使用した環境を記載しています
※上記環境以上でないと動作しない可能性があります。

##**手順**
###**1. Android StudioでKotlinのプロジェクトを作成する**
* **Android Studio 3の場合**
  * Android Studioを起動して、**「Start a new Android Studio project」**を選択します。
  * 次の画面に**「Include Kotlin support」**というチェックマークがあるので、こちらをチェックして、あとは普通にプロジェクトを作っていきます。
<img width="900" alt="StartProjectKotlin.png" src="https://qiita-image-store.s3.amazonaws.com/0/72656/a8d6fdf7-6c81-fa3a-1cc9-b8128541f663.png">

* **Android Studio 2.xの場合**
 * プラグインを入れます。
     * メニューから**「Preference」**を開きます。
     * 左ペインから**「Plugins」**を選択し、**「Install JetBrains plugin..」**を選択します。
     * サーチバーで**「Kotlin」**と検索し、**「Kotlin」**というプラグインをインストールします。
     * Android Studioを再起動します。   
   <img width="519" alt="KotlinPlugin.png" src="https://qiita-image-store.s3.amazonaws.com/0/72656/2a5f8d32-4b65-50fc-762f-b40b6bf6990b.png">

 * Kotlinファイルをビルドするための設定
     * メニューバーの**「Tools」**から**「Kotlin」**を選択し、 **「Configure Kotlin in Project」**を選択します。
     * 任意のKotlinのバージョンを選択してもよいです。
  ![ConfigKotlin.png](https://qiita-image-store.s3.amazonaws.com/0/72656/a6595b16-85b2-b2b8-e4f8-1adbb6e872e6.png)
 * JavaファイルをKotlinへ変換します
     * 任意Javaファイルを選択し、メニューの**「Code」**を選択し、**「Convert Java File to Kotlin File」**を選択します。
     * 自動でコンバートされます。
  ![ConverJavaToKotlin.png](https://qiita-image-store.s3.amazonaws.com/0/72656/3c79423e-9573-beeb-1e04-5ad5fa4d4174.png)

###**2. Android用SDKをインストールする**

* [NCMBのGithubリリースページ](https://github.com/NIFCloud-mbaas/ncmb_android/releases)のNCMB.x.x.x.zip ボタンからダウンロードしてください。
* プロジェクトを右クリックし、メニューから**「Open Module Settings」**を選択します。
* **「Project Structure」**の**「Modules」**を選択し、**「+」**ボタンを押して**「Import .JAR/.AAR Package」**を選択します。
* **NCMB.jar**を選択し、**「Finish」**ボタンをクリックします。
* 作成したModuleをModule dependencyとしてプロジェクトに追加します。
<img width="836" alt="Dependencies.png" src="https://qiita-image-store.s3.amazonaws.com/0/72656/8810d4cc-44d1-c69d-c671-f300f6b49960.png">


###**3. インストールしたSDKを読み込む**
 * `MainActivity.kt`ファイルの`package <application_package>`の下に、下記の内容を追記します。

```Kotlin:Kotlin
import com.nifcloud.mbaas.core.NCMB
```
**※【注意】他のファイルでSDKを使用する場合は、その対象ファイルにも上記を追記する必要があります！**

###**4. MainActivity.ktを編集する**
* [ニフクラ mobile backend](http://mbaas.nifcloud.com/) を使うために必要なAPIキーの設定とSDKの初期化処理はMainActivity.ktここに書いておきます
* 下記のコードを`MainActivity.kt`に貼り付けてください。
* そのとき、２つのAPIキーを[ニフクラ mobile backend](http://mbaas.nifcloud.com/) のダッシュボード上からコピーして書き換えてください(※アプリケーションキーとクライアントキーをそれぞれ「`YOUR_NCMB_APPLICATIONKEY`」と「`YOUR_NCMB_CLIENTKEY`」の部分に書きます)


```kotlin:Kotlin
//********** APIキーの設定 **********
const val applicationKey:String = "YOUR_NCMB_APPLICATIONKEY"
const val clientKey:String = "YOUR_NCMB_CLIENTKEY"

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //********** SDKの初期化 **********
        NCMB.initialize(applicationContext, applicationKey, clientKey)
        //▼▼▼起動時に処理される▼▼▼

        //▲▲▲起動時に処理される▲▲▲
    }
}
```
###**5. mBaaSのコードを試してみよう！**
* 下記のサンプルはデータストアにデータを上げるサンプルコードです。実際に書いて（コピペして）実行してみましょう！

```kotlin:Kotlin
// クラスのNCMBObjectを作成
var obj = NCMBObject("TestClass")
// オブジェクトに値を設定
/** 文字列 **/
obj.put("message", "Hello, NCMB!")
/** 配列 **/
obj.addUniqueToList("array", listOf("A","B","C"))
// データストアへの保存を実施
obj.saveInBackground { e ->
    if (e != null) {
        // 保存に失敗した場合の処理
    } else {
        // 保存に成功した場合の処理
    }
}
```
* 実行し、[ニフクラ mobile backend](http://mbaas.nifcloud.com/) のダッシュボードからデータストアを見ると、データが保存されたことが確認できます！