MIT App Inventor で試しに作った「ボタンを押したら音声合成でしゃべる Androidアプリ」を Kotlin で作ってみた

## はじめに
以前、このような記事を書いたのですが、これの Kotlin版です。

●MIT App Inventor で試しに作った「ボタンを押したら音声合成でしゃべる Androidアプリ」を Java で作ってみた - Qiita
　https://qiita.com/youtoy/items/a0c26a3b8a671a2bb707#%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E5%85%A8%E4%BD%93

上記の「MIT App Inventor で試しに作ったアプリ」の話は以下で書いています。

●ビジュアルプログラミングで Androidアプリ開発ができる「MIT App Inventor」を試す（ボタンを押したら音声でしゃべるアプリを作る） - Qiita
　https://qiita.com/youtoy/items/93f7c786ff9d664d3032

## 参考情報
今回の内容は、以下を見つつ実装しました。

●Kotlinで合成音声を出力するアプリを作成[Android] | トモブログ
　https://lifetime-engineer.com/android-kotlin-speech/

## 実装内容
### プロジェクト作成
プロジェクトの新規作成の設定は、[冒頭で掲載した記事](https://qiita.com/youtoy/items/a0c26a3b8a671a2bb707#%E6%96%B0%E8%A6%8F%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E4%BD%9C%E6%88%90)とほぼ同じです。

違いはプロジェクトの設定の以下の内容くらいです。
　・プロジェクト名： TTS_test01_Kotlin
　・言語： Kotlin

### アプリ画面のデザイン（ボタンの追加）
アプリ上にボタンを配置する部分は、[冒頭で掲載した記事](https://qiita.com/youtoy/items/a0c26a3b8a671a2bb707#%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3)と同じ手順です。

### Kotlin での実装（追加・変更部分）
以下に、デフォルトのコードから変更を加えた部分や追加した部分を書いていきます。
そして、最後にコード全体の内容を示します。

#### 冒頭のインポート
```kotlin
import android.speech.tts.TextToSpeech
import android.widget.Button
import android.util.Log
import android.view.View
import java.util.*
```

#### インポート直下
```kotlin
class MainActivity : AppCompatActivity(), View.OnClickListener, TextToSpeech.OnInitListener {
    private var tts : TextToSpeech? = null
```

#### onCreate内
```kotlin
        tts = TextToSpeech(this,this)
        val button = findViewById (R.id.button) as Button;
        button.setOnClickListener(this)
```

#### onCreate の下
```kotlin
    override fun onClick(view: View){
        SpeechText("この内容をしゃべるよ")
    }

    override fun onInit(status: Int) {
        if (status == TextToSpeech.SUCCESS) {
            Log.d("tts", "TextToSpeech初期化成功")
        }
    }

    private fun SpeechText(text:String){
        tts?.setLanguage(Locale.JAPANESE)
        tts?.speak(text,TextToSpeech.QUEUE_FLUSH,null,"ID")
    }
}
```

### Kotlin での実装（全体）
以下が今回のコード全体の内容です。

```kotlin
package com.example.tts_test01_kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

import android.speech.tts.TextToSpeech
import android.widget.Button
import android.util.Log
import android.view.View
import java.util.*

class MainActivity : AppCompatActivity(), View.OnClickListener, TextToSpeech.OnInitListener {
    private var tts : TextToSpeech? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        tts = TextToSpeech(this,this)
        val button = findViewById (R.id.button) as Button;
        button.setOnClickListener(this)
    }

    override fun onClick(view: View){
        SpeechText("この内容をしゃべるよ")
    }

    override fun onInit(status: Int) {
        if (status == TextToSpeech.SUCCESS) {
            Log.d("tts", "TextToSpeech初期化成功")
        }
    }

    private fun SpeechText(text:String){
        tts?.setLanguage(Locale.JAPANESE)
        tts?.speak(text,TextToSpeech.QUEUE_FLUSH,null,"ID")
    }
}
```

## おわりに
とりあえず動く、という状態のものを、Kotlin を使って短いコードで書いてみました（本当はもう少し実装すべき部分がありそう）。
ちょっと前に書いた Java とずいぶん書き方が違った感じになりました。