🔥

SwiftでAndroidアプリ開発

2022/12/08に公開

SCADEでのアプリ開発

まず、swiftでandroidアプリ開発できるのか?といった話ですが結論できるんです!!
flutterとかKMMとかはなんとなくわかるけど、どうコードが生成されてどうパッケージ化されて動くのか?まったく調べてみました!!

日本語でわかりやすそうなのは以下の記事の31~52ページ目です。
https://www.docswell.com/s/hcrane/NK2M4K-2021-03-08-093342#p31

よし!なんとなくわかった、、、と言うわけで開発してみた🔥

プロジェクトの作成


File -> New -> New Project を選択


Scade Projectを選択(ここでSwift Package選ばないとAndroid App作れないのでご注意を)
そこからNextでプロジェクト名決定してProject作成

プロジェクトのファイル構成

プロジェクト作成が終わったら次に生成されているファイル構成を見てみよう

Sources/
├─ Project名/
│  ├─ Extensions/
│  │  ├─ Pages/
│  │  │  ├─ main.page.ext.swift
│  │  ├─ main.page
│  │  ├─ main.page.svg
│  │  ├─ main.page.swift
│  │  ├─ start.swift
├─ build.yaml
├─ Package.swift

どこのファイルが何やってん???
わからん

初期生成されているファイルそれぞれの役割

start.swift
scadeでプロジェクトをcreateした時点で自動生成されるファイルの一つであり、アプリ全体のライフタイムイベントを管理するためにSCDApplicationを継承したプロジェクト名のクラスが記述されている。
Xcodeでの開発で言うとAppDelegateクラスですね~

main.page.swift
SCDLatticePageAdapterクラスを継承したMainPageAdapterクラスが記述されており、画面のライフサイクルを管理しているクラスです。初めはload関数が書いてありますがこちらはXcodeで言うloadView/viewDidLoad関数とほぼ同じと考えていいと思います。

main.page.ext.swift
こちらはこちらは上記のmain.page.swift内のMainPageAdapterクラスの拡張でmain.pageに置かれたScadeKitを変数としてコードで使えるようにしているファイルそうです。ここで今までSwiftをやって来た人は驚きの保持型変数をextention内で書くことができそうです!Xcodeだとメソッドや計算型変数などは定義で来ていたが保持型変数は書くことができなかったのでここは注意しておくといいかもしれないです。

main.page
もうこれは完全にXcodeで言うStoryBordの何者でもなさそうです!!
ただオートレイアウトが見ずらいこと制約がつけずらい、ScrollViewがないなどちょくちょく足りないものがありそうでした。

main.page.svg
こちらはmain.pageをsvg拡張子で画像にしてくれてそうですね
多分ですがUIの確認などしやすくなるため??ですかね
基本的にあまりいじらなくて良さそうです。

UIどう言うふうに作るねん?~モバイルのビルドまで

Xcode/SwiftではUIkitかSwiftUIで作られてるけどScadeはScadeKitというもので作られてそうです。
まぁ概要はUIKitと全く変わりませんので説明を省きます。。。

ビルドの準備


上記画像のようにしてScadeのsettings.ymlファイルを開きます。
そこで自らのPCにinstallされているndk,sdk,Xcodeのパスを記入します。
ここのパスが違う、パスが記入されていないと両方ともビルドできないので注意です。

アイフォンでのビルド


上記画像のようにエミュレータを選択しBuildするのみです!!

アンドロイドでのビルド

こっちも同じく自らのエミュレータの選択Buildで試すことができます

最後に

実際にScadeというものに触れたのが初めてでSwiftでのクロスプラットフォームに胸馳せながら楽しみました。
ぜひみなさんも使ってみてはいかがでしょうか?
実際に企業などでScadeが採用されているのを聞いたことがないのが悲しいことですが、、、、

参考文献

https://www.docswell.com/s/hcrane/NK2M4K-2021-03-08-093342
https://docs.scade.io/docs/

Scadeでのアプリ開発の日本語での参考書もあったので参考までに!!!
https://play.google.com/store/books/details?id=ufMfEAAAQBAJ&rdid=book-ufMfEAAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport&pli=1

Discussion