2021/12/16 個人的には衝撃を受ける出来事がありました。
iPad版のSwift Playgroundsで遂に、iOSアプリが開発できるようになりました!!
当時の自分のツイートからも興奮が分かると思います。
https://twitter.com/mtj_j/status/1471269185951256577?s=21
このアップデートで、
- iPad上でSwiftファイルのコンパイルと実行
- より実用的なコード補完
- SwiftUIのライブプレビュー
- Swift PMのライブラリの読み込みのサポート
などなどかなり本格的な機能が導入されました。
一方でデータベースか使えない(これは正しくなくて実は使える)など、まだまだXcodeを普段から使ってるエンジニアからすればおもちゃ感が拭えません。
ですがこれはかなり重要なアップデートだと思っています。
普段から業務でmacを触ってるエンジニアはXcodeでこれからもアプリ開発をすればいいですが、例えば自分のPCを持ってないけどiPadは持ってるという学生といった人がアプリ開発をスタートできるようになりました。
このアップデートはiOSアプリ開発へのハード的な側面でハードルを大きく下げるものです。
しかしデータベースが簡単には使えない、などまだまだ技術的なハードルもあります。
それならせめて、普段からアプリ開発をしている人間がある程度の知見をためて共有していこう、と思い「iPadだけでアプリ開発をする」という縛りでアプリ開発をスタートしました。
AppStoreでリリースすることまでできた今、結論を言うと、大変だけどiPadだけでアプリ開発は不可能じゃないです。
この記事ではiPadでアプリ開発をしたときに見つけたtipsや良かった点、辛かった点を説明します。
作ったアプリ
iPadだけでアプリ開発をするのでせっかくならiPadにフォーカスしたアプリにしようと思い、PencilKitを使った絵日記アプリにしました。
このアプリは全てiPadで作られています。
macは1度も触りませんでした。
iPadでのアプリ開発
使ったアプリ
今回使ったアプリは次のとおりです。
- Swift Playgrounds
- Affinity Designer
- App Store Connect
- Safari
たったこれだけです。
お気づきかもしれませんが、Affinity Designerを使ってアイコンやAppStoreのスクショもiPadで作りました。
DB問題
iPadでデータベースが使えない問題があります。
というのもCoreDataのテーブルを定義するために必要な.xcdatamodeld
ファイルをSwift Playgroundsでは編集できないからです。
正直データベースなしでアプリ開発はかなり厳しいと思って、僕も他のSQLiteのライブラリやRealmが使えないかと調べたのですが良い方法がなく諦めていました。
しかし、実はこれは解決することができます。
僕も知らなかったのですが、CoreDataは手間をかければ.xcdatamodeld
ファイルなしで扱えるらしいです。
そしてその手間を省いてくれる、CoreStoreというライブラリを見つけました。
このライブラリの簡単な使い方についてはこちらの記事に書きましたので、そちらを参考にしてください。
CoreStoreを使えばiPadでデータベースが使えない問題は解決できます。
Xcodeを上回るPencilKitとの相性の良さ
これはびっくりしました。
iOSが提供しているPencilKitを使えばメモアプリのようなお絵かきができるUIを3行で実現できます。
この3行というのはAppleが言っていることでして、実際には微調整が必要だったりします。
その時にSwiftUIのPreviewを使えば、なんと、Preview上でApple Pencilを使ったデバッグができます!!
今までのPencilKitを使ったデバッグはシミュレータでは動作確認できずに実機が必須で、macでビルドしてiPadで実行して、動作確認をする必要がありました。
しかし、Swift Playgroundsはコードを変更したその瞬間に右のPreview画面に反映され、そのままApple Pencilでタッチして動作確認できます。
これは正直業務レベルでApple Pencilを使っている人におすすめしたいくらい開発体験が良かったです。
ここがつらいよ iPadでアプリ開発
あんまりネガキャンはしたくないのですが、やはり業務でアプリ開発をしている人間からすると不満は出てきます。
詳しくは書きませんが、列挙しておきます。もしこのあたりが気になる人はそれはもうmacを買ってXcodeでアプリ開発をする良いタイミングですのでぜひ!
- デバッガーが動かない。変数の確認にはprintデバッグをするしかない
- ウィジェットやSiriをサポートするためのapp extensionを使えない
- gitが使えない
- テストができない
おわりに
iPadでアプリ開発をした話について書きました。
正直、iPadだけでアプリを作り切るのはまだまだ大変だと感じましたが、macを買ってアプリ開発をする勇気がない人が、アプリ開発を体験するのにはとても良いと思いました。
そしてその気になれば僕がやったように、iPadだけでアプリを開発してリリースしきることができるので、みなさんぜひトライしてみてください!!