LoginSignup
29
16

【iOS】Skipを使ってみた

Last updated at Posted at 2024-02-23

はじめに

みなさんSkipというツールはご存知でしょうか。
SwiftのコードをKotlinにトランスパイルして、Androidのアプリも同時に作れるツールです。
Github

この記事ではSkipの導入から簡単なアプリを作成し、iOS/Androidのシュミレーターでビルドするところまでをご紹介します。

注意
Skipをインストールしてから14日間の試用期間は無料です。
それ以降は下記の通りの費用がかかります。

  • Small Bussinessはこちらが当てはまるようです
    • 認定教育機関
    • 登録された非営利団体
    • 前年度と当年度のそれぞれで総収入が250,000米ドルを超えていない企業および団体
    • 総収入が、前年度と当年度それぞれで250,000米ドルを超えない個人
      価格ページ

Skipを使うにはXcode15AndroidStudio2023が必要になります!

本題

インストール

まずはHomebrewを使用しSkipのインストールを行います。

brew install skiptools/skip/skip

この画像が表示されるとインストールが完了です。

そしてこのコードで開発前提条件が満たされていることを確認します。

skip checkup

この写真のように全てにチェックがつけばokです。

試用期間後にライセンスキーが必要になるので、こちらのコードで取得します。

skip hostid

このコマンドを叩くと「AAAAAAAAAAAA」のようなIDが帰ってくるのでこれを~/.skiptools/skipkey.envに保存します。

SKIPKEY: AAAAAAAAAAAA

アプリの作成&立ち上げ

作成するアプリの名前と版フォルID、作成するディレクトリを入力して、プロジェクトを作成します。
(このコードではプロジェクトを作成し立ち上げまで実行します)

skip init --open-xcode --appid={バンドルID} {ファイル名} {AppName}

(例:SkipSampleというアプリをskip-sampleというフォルダに作成する)
skip init --open-xcode --appid=com.hoge.SkipSample skip-sample SkipSample

すぐに開かずにアプリだけ作る場合はこちらでできます!

skip init --appid={バンドルID} project-name {AppName}
例: skip init --appid=com.hoge.SkipSample skip-sample SkipSample

実行

いよいよ実行です!
Xcode上で「⌘+R」で実行をする前に、 Androidのシュミレーターを立ち上げる必要があります!
(Androidのシュミレーターは「emulator」と呼ぶらしい)

AndroidStudioを開いたら出てくるこの画面のOpenの下にある「MoreActions」をタップし、
「Virtual Device Manager」を選択肢します。

こんな画面になると思うので、ここで実行ボタンを押します!

そして⌘+Rで実行すると、iOS/Androidの両方で、Skipのデフォの画面が表示されたと思います!

使ってみての所感

Swiftのコードは{AppName}/{AppName-Package}/Sources/{AppName} に入っているのでここをいじれば普段通りにアプリの作成ができそうです。

少し触ってみて思ったのは、
普段VStack(spacing: 0) {}とかで書けるところが、Skipを使用するとThe integer literal does not conform to the expected type Double?というエラー出て、型推論や暗黙的な型変換が効いてない感じです。
なのでVStack(spacing: 0.0) {}.frame(width: 100.0)のように書かないとコンパイルが通りません。

あとImage(systemName:)の使用には注意が必要です。
SwiftUIの何がSkipによってサポートされているのかはSupported SwiftUIに詳しく書いてありますが、SFImageもその一つです!全てがサポートされているわけではないので確認してから使用してください。
またAndroid側ではMaterialDesignSystemIconsを参照しているので、少しデザインが変わります!
例えばImage(systemName: "pencil")をやるとこうなります。

Android iOS

そして、ローカルに保存した写真を使用する際に、iOSだけなら

Image("Hoge")

でいけますが、現在SkipではAsyncImageを使ってBundle.module.urlから写真のデータを取得する必要がある点も注意です。

 AsyncImage(url: Bundle.module.url(forResource: "Hoge", withExtension: "png"))

まだ少ししか触れていないので、他に気になることがあったら逐一追記していきます!

最後に

最後までお読みいただきありがとうございました!
SwiftでAndroidのアプリも作れちゃうのは、個人的にはとても嬉しいのでSkipのこれからに期待したいなと思います!

Skipでアプリ作ってリリースしてみた!とか出したい...

29
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
16