はじめに
iOSでUIを実装する手段は主にXib、Storyboard、SwiftUI、UIKitがありますが、どれか一つだけを利用することは少ないです。
大抵の場合、上記の組み合わせでUIを実現します。UI実装にあたってその比較表を作成しました。
それぞれの違い
種類 | 説明 | ファイル |
---|---|---|
SwiftUI | ・GUIを使用して、パーツおよび画面間の関係を作成できる ・2011年のXcode4.2より登場 |
storyboard(xml) |
Xib | ・GUIを使用して、パーツおよび画面間の関係を作成できる ・2011年のXcode4.2より登場 |
.storyboard(xml) |
UIKit | ・コードでView周辺を扱うフレームワーク ・StoryboardおよびSwiftUIと共存可能 ・UIKitのみで構築するのは大変なため、StoryboardおよびXibで代替することが多い |
コード |
SwiftUI | ・コード/GUIを使用して画面を作成できる ・2019年6月に発表された新しいフレームワーク。将来的にSwiftUIに一元化される可能性もある ・対応OSバージョンはiOS13以降 |
コード |
組み合わせ比較
種類 | メリット | デメリット |
---|---|---|
Storyboard + UIKit | ・ノウハウが蓄積されている ・GUIでUIおよび画面間の関係を作成できる |
・UIの再利用性が低い ・コンフリクトが発生し易い ・将来的にSwiftUIへの移行作業が発生するかもしれない |
Xib + UIKit | ・ノウハウが蓄積されている ・GUIでUIを作成できる ・Xibを使用して、UIの再利用性を高くすることができる ・コンフリクトの発生を抑制できる |
・将来的にSwiftUIへの移行作業が発生するかもしれない ・Storyboardと比べると画面間の関係がわかりにくい |
Storyboard + Xib + UIKit | ・ノウハウが蓄積されている ・GUIでUIおよび画面間の関係を作成できる ・Xibを使用して、UIの再利用性を高くすることができる ・Xibを使用して、コンフリクトの発生を抑制できる |
・将来的にSwiftUIへの移行作業が発生するかもしれない |
SwiftUIのみ | ・SwiftUIへの移行作業が発生する可能性がない ・再利用性が高い ・コンフリクトの発生を抑制できる |
・標準UIの中にSwiftUIのみでは対応できないものがある ・iOS13以上である必要がある ・新しい技術のためノウハウが蓄積されていない |
SwiftUI + UIKit | ・SwiftUIへの移行作業が発生する可能性がない ・UIの再利用性が高い ・コンフリクトの発生を抑制できる ・作成中の画面のPreviewをみることができるためデバッグが早い |
・iOS13以上である必要がある ・新しい技術のためノウハウが蓄積されていない |
結論
これから新規で開発するならSwiftUI + UIKitを採用するのが良い