今回はSwiftUIを導入して失敗して、Story boardで作り直す事になったという事があったので、ご紹介していきたいと思います。最後まで是非お読みください!
新しい技術を使いときってあると思います
使いたい理由はもうそれだけです。最低のiOSバージョンが13となる案件の担当となったということで気持ちはSwiftUIになっていました。
久しぶりのiOSアプリ開発ということでウキウキしてましたし、新しい事を取り入れることが好きな私としては、是が非でもやらせてくださいとお願いをしました。
新しいことを始めることのリスクを計算しておかなくてはいけなかったのですが、このときは「そうはいっても出来るやろ」と安易な気持ちでした。
壁1 geometryReaderのクセ
swiftUIで導入されたgeometryReaderというアプリ内の座標を管理できる機能です、タップした場所に応じて動的に何かをするという要件がある場合には、避けては通れない機能でした。
このgeometryReaderの特性を理解して使いこなすと言うところまではある程度時間をかける必要があります。作るべく機能は簡単なサンプルアプリを先に作ってからというレベルで対応しておくと良いと思います。ここの理解が弱いと、アプリの品質に影響が出てくるのので、最大の壁でした。
壁2 tabViewのクセ
一般的なアプリでは下部にタブメニューを配置しているようなパターンが多いと思いますが、swiftUIでもtabViewが提供されていてそれを利用する事になります。
ただこのtabViewでは、viewControllerが使えないんですね。
Appleで使われているサンプルコードがこちらです。
/// 参照元: https://developer.apple.com/documentation/swiftui/tabview
TabView {
Text("The First Tab")
.tabItem {
Image(systemName: "1.square.fill")
Text("First")
}
Text("Another Tab")
.tabItem {
Image(systemName: "2.square.fill")
Text("Second")
}
Text("The Last Tab")
.tabItem {
Image(systemName: "3.square.fill")
Text("Third")
}
}
.font(.headline)
で、何でここでこまったかというとVIPERアーキテクチャー採用していて
各画面にはviewControllerを持っていたということですね。タブの各画面に対応するには、viewControllerがあると大変都合が悪いというか、storyboardでのviewControllerを使うなど、他案件でのVIPERアーキテクチャの構造を持って生きていたので、構造の変更を余儀なくされていました。
壁3 助けてくれる人がいない
これも大きかったです。初めて使うっていうことは、チーム内にも他のチームにもフォローできる人がいないということです。困った時に調べても日本語で解説してくれている人がほぼいなかったり、いても若干違ったりするということですね。英語でかかれたサイトを参考にしたことも多かったので、英語力がないとキツかったと思います。
壁4 iOS14じゃないと使わせてくれない便利機能たち
例えば、全画面モーダルを出すケースがあったので、調べたところfullScreenCoverというものがありました。これはとても簡単で元々あったsheetというほぼ同じ使い方で全画面モーダルを出せるので、よし使おう!ってなったんですが、使おうとしたら、この機能はiOS14以上じゃないと使えないよと怒られました。使えなければ別の選択肢を使えばいいのですが、こういうのが積み重なってどんどん時間だけが過ぎていっていました。
わかったこと
新しい技術は経験にもなるし、考えの視野も広がるので積極的に取り入れたいところではありますが
スケジュールの予測が立てれなかったりするので、ある程度慎重に入らないといけないんだなと思いました。思ってはいたんですが、各タスクの懸念事項として日々ジャッジしておかないといけなかったです。
新しい技術を使うときは、かならず、「いつまでにできなかったら」だったり「こうなったら」やめるっていう選択肢も着手するまえに持たないといけなかったです。
あとは一週間程度、調査も兼ねてサンプルアプリを作る期間が必須でした。
最後に
軽はずみな判断でメンバーに負担をかけさせてしまった懺悔として書きました。
成功も経験ですが、失敗はとても大きな経験になるので、次に生かしておきたいと思います。
ご参考になれば幸いです。
以上、最後までありがとうございます!
コメント