SesameSDKをFlutterから触ってみて 〜前編〜

まずは、公式セサミアプリでも基にされている[SesameSDKライブラリ](https://github.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp)を参考に調べて参ります。
`Gradle`というオープンソースのビルドシステムが使われている（Javaのjarファイル warファイルを作成してくれる）ので、インストールしてみます。言語は非常に`Java`に近いスクリプト言語である[Groovy](https://agency-star.co.jp/column/groovy) Javaと同じ感覚でスクリプトを書けます。

```
$ curl -s https://get.sdkman.io | bash
```
こちらを実行して、

```
All done!


Please open a new terminal, or run the following in the existing one:

    source "/Users/XXXX/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

    sdk help

Enjoy!!!
```
が表示されますので、

```
$ source "/Users/XXXX/.sdkman/bin/sdkman-init.sh"
```
Ignore insecure directories and files and continue [y] or abort compinit [n]?とでた方は、無視して実行(`y`)して下さい。この警告は後に起動時に何度も呼ばれて鬱陶しい場合がありますので、ターミナルで`compaudit`し状態を確認しつつ

```
$ sudo chown -R $(whoami) $(brew --prefix)/*
```

```
$ chmod 755 /usr/local/share/zsh
```
上記コマンドを基に正常に戻してあげて下さい。そしてインストールはこちら。

```
$ sdk install gradle
```

![スクリーンショット 2021-10-18 9.25.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/fbe7ad69-1aff-3c16-6ac7-62bc1c170727.png)

```
gradle init --type java-application
```
してデフォルトのテンプレートで構成を勉強するとわかりやすいです。

![スクリーンショット 2021-10-18 9.53.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/3784e402-ac1c-4871-e614-1f2665064fd0.png)
##build.gradle
```gradle
buildscript {
    apply from: 'versions.gradle'
    addRepos(repositories)
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"
        classpath "com.amazonaws:aws-android-sdk-appsync-gradle-plugin:3.1.2"
        classpath 'com.google.gms:google-services:4.3.5'
    }
    repositories {
        google()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
}

allprojects {
    addRepos(repositories)
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
```
ビルドの手順を定義するファイルです。ビルド対象・ビルドの出力先、動作に関してのファイルになります。
###・　dependencies
ビルドする為に必要なライブラリを定義
###・　repositories
リポジトリからライブラリをダウンロード。グーグルや[Mavan](https://qiita.com/ASHITSUBO/items/6c2aa8dd55043781c6b4)(メイヴン)というJavaの古いプログラムを触るための管理ツール(yarnやnpmのようなもの)やgradleのプラグインが入っています。
入れなくてもいいですが、以下でインストールできます。

```
$ brew install maven
```
###・　task
`task`の後にはタスク名上記では、ルートプロジェクトのbuildDirを削除する為に`clean`とされています。

本来ならば、ここにsrcディレクトリがありそこを書き換えて

```
$ gradle compileJava
```
コンパイルさせたり、

```
$ gradle jar
```
`jar`ファイルを作ったりしていきますが、ちょっと趣旨がずれてきているのでここまでは軽いお勉強ということで本題に入りたいと思います。

#では、Flutterの環境構築からやっていきます。
環境構築はAndroidStudioからプロジェクトを立ち上げるか

![スクリーンショット 2021-10-18 11.48.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/e0b8df17-6027-0aa2-c15d-9faec9eba1fd.png)
VsCodeで立ち上げるかになると思いますが、今回はVsCodeで立ち上げて見たいと思います。メリットは、起動が早いのと開発がしやすく慣れているところでしょうか。拡張機能で`Flutter`や`Dart`を入れるのを忘れないように。

```
$ flutter create --org me.tepci -i objc -a java my_project
```
こちらのコマンドでcreateしてもらって最後はプロジェクト名です。SesameSDKなど後からディレクトリ名を変えても大丈夫です。

```
All done!
In order to run your application, type:

  $ cd my_project
  $ flutter run

Your application code is in sesame/lib/main.dart.
```
作成できたら、`cd my_project`して`flutter run`しましょう。
デバイスで確認できるようになりました。
![スクリーンショット 2021-10-18 11.26.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/e952f6ba-e895-e9c5-0354-4f2ec39b1554.png)
ディレクトリの構成は以下になっています。`SesameSDK`は`Java`なのでFlutter環境でJavaを使用できるように設定するところから始めます。

![スクリーンショット 2021-10-18 16.38.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1134006/fe05b218-740a-efc8-e58a-e57cb8bd85f9.png)
`app/build.gradle`や`MainActivity.java`、`lib/main.dart`を書き換えていきます。

※しばらく触れていなかったのが原因で、いつの間にかJAVA_HOMEのビルドエラーが出るようになって足止め喰っていました。環境変数の設定を行い無事に脱出できました。私はmacを扱っていますが、エラー内容がWindowsで生じるような内容のもので、取り敢えず一度Javaをアンインストールし、必要なVersionを再インストールし直しました。尚、再インストールする際に言語を`java`ではなく`Kotlin`にしました。