一人(+α)アドベントカレンダー3日目。
Kotlin+RoboVMで挑むクロスプラットフォーム開発試行錯誤。
本日は、フォルダ構成などについて(12/7 : 書きぶりが拙かったので更新)。
クロスプラットフォーム開発環境を導入しての開発に値するアプリの基本形は、共通ロジックが大きめのもの。
すなわち、以下の形:
└─ android
└── src/main/kotlin etc../ここにandroid向けViewコード(含、通信周りのコード)
└─ core
└── src/main/kotlin etc../ここに共通ロジックコード(ここに多めのコード)
└─ ios
└── src/main/kotlin etc../ここにios向けViewコード(含、通信周りのコード)
今回取り組むKotlin on RoboVMでは、具体的にはこんな感じになっている:
(初期フォルダ構成:再掲載) :
共通ロジックの最終形はこんな想定:
└─ core
└── src/main/kotlin or java or scala/
└─ share
└── 音声インターフェイス(複数言語対応)
└── 知能ロジック(判断支援、操作アシストなど)
└─ abst #共通的な抽象ロジックを実装
└── インターネット通信抽象ロジック
└── ローカル通信抽象ロジック(bluetoothなど)
└── 永続化関係抽象ロジック(モデルなど)
永続化など、各プラットフォーム実装の共通化は難しいところの抽象ロジックをabst以下に書く。
Android Studioで開発する場合、開発はJavaや今回のKotlin などのJVM言語で行う。共通ロジック部分は適宜サーバー側とも実装を共有すべきだから、サーバー側と同一の言語で実装するのが良いと考える。このあたりはエンタープライズなサーバーがJVM環境での選択肢は広い。もちろん、SpringBootなどではKotlinで行くのもあり。自分の場合は、知能ロジック系(ML等)が強いscalaでの実装を主に考えたい。
本日はここまで。