これまでのあらすじ
mokemokechickenさんの記事を参考にし、SMC で生成した StateMachine を使ってアプリを書いている。
ただ自分のうんこっこな作業環境の問題で
Linux マシンで SMC を実行して生成した StateMachine を commit
-> 別マシンの Android Studio で merge して開発
といった感じに要領の悪い工程になってしまっている。
要は AndroidStudio 上で SMC を実行すればいいじゃん。ということでやってみました。
やったこと
プロジェクトツリーにSMCを配置
<Priject root dir>/<app>/bin/Smc.jar
Smc.jar は公式からダウンロードしてね。
ソースコードの配置
SMC の DSL で書いた StateMachine のソースコードを適当に配置。
<Priject root dir>/<app>/src/main/java/<package>/statemachine/hoge.sm
設定
Run -> Edit Configurations... -> JAR Application -> Smc.jar
まで到達すると、下図のような設定窓になる。
設定項目は以下の感じで。
- Path to JAR: 自動で入るのでそのまま
- Program arguments: 目的に合わせて適当に。今回は Java なので "-java" とソースコードのファイル名
- Working directory: 引数のファイルはここからの相対パスになるよ。念のため。なお、引数で指定しなかった場合の出力ディレクトリもここになる
設定したら保存して閉じる。
実行
あとは「Smc.jar」を Run させると statemachine ディレクトリに StateMachine の Context ファイルが生成される。あとはそれを import して StateMachine の条件分岐などを実装してあげればいい。詳しくは公式(わかりづらい)や各種 SMC の解説記事を参照してね。
オワリに
あまりに簡単だった。面倒くさがらずにもっと早くやれば良かった。
dot ファイルの生成もできるので、工夫すれば StateMachine の図も自動生成できるかもね。
できればビルドに組み込みたいんだけどよくわからない。誰か教えて。