この記事の最終更新日: 2026年6月5日

iOSアプリ開発を始めると、かなり早い段階で出てくるのが SwiftUI と UIKit という言葉です。
どちらもiPhoneアプリの画面を作るための仕組みですが、考え方やコードの書き方が大きく違います。
この記事では、初心者向けに
- SwiftUIとは何か
- UIKitとは何か
- SwiftUIとUIKitの違い
- これから学ぶならどちらがよいか
をわかりやすく解説します。
SwiftUIとは?
SwiftUI とは、Appleが提供しているUIフレームワークです。
簡単に言うと、iPhoneアプリやApple Watchアプリなどの画面を、Swiftというプログラミング言語で作るための仕組みです。
Apple公式ドキュメントでは、SwiftUIはアプリのUIと動作を宣言するためのフレームワークとして説明されています。ビュー、コントロール、レイアウト構造を使ってUIを作れるのが特徴です。(Apple Developer)
たとえば、SwiftUIでは次のように画面を書けます。
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("こんにちは")
.font(.title)
Button("ボタン") {
print("タップされました")
}
}
}
}
このコードでは、
Textで文字を表示するButtonでボタンを表示するVStackで縦に並べる
という形で、画面の見た目をシンプルに表現しています。
SwiftUIの大きな特徴は、「画面がどういう状態であるべきか」を書く ことです。
UIKitとは?
UIKit もAppleが提供しているUIフレームワークです。
SwiftUIよりも前から使われており、長い間iOSアプリ開発の中心的な存在でした。現在でも多くの既存アプリではUIKitが使われています。
Apple公式ドキュメントでは、UIKitはiOS、iPadOS、tvOSアプリの基本的な構造を作るための機能や、画面を構成するためのコンポーネントを提供するフレームワークとして説明されています。(Apple Developer)
UIKitでは、画面は主に UIViewController や UIView を使って作ります。
たとえば、UIKitでは次のようなコードになります。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "こんにちは"
label.font = .systemFont(ofSize: 24)
label.textAlignment = .center
view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
}
SwiftUIと比べると、UIKitは
- ラベルを作る
- 設定する
- 画面に追加する
- 制約を設定して配置する
というように、手順を細かく書いていくイメージです。
SwiftUIとUIKitの一番大きな違い
SwiftUIとUIKitの一番大きな違いは、画面の作り方の考え方 です。
| 項目 | SwiftUI | UIKit |
|---|---|---|
| 考え方 | 宣言的 | 命令的 |
| 書き方 | 「こういう画面である」と書く | 「この部品を作って、ここに置く」と書く |
| コード量 | 比較的少なめ | 比較的多めになりやすい |
| 学習しやすさ | 初心者にも入りやすい | iOS開発の基礎理解が必要 |
| 既存アプリでの利用 | 新規開発で増えている | 既存アプリに多い |
| 細かい制御 | 苦手な場面もある | 柔軟に対応しやすい |
SwiftUIは、画面を「状態」から組み立てます。
たとえば、カウントアップする画面を作る場合、SwiftUIでは次のように書けます。
import SwiftUI
struct CounterView: View {
@State private var count = 0
var body: some View {
VStack {
Text("カウント: \(count)")
.font(.title)
Button("増やす") {
count += 1
}
}
}
}
count の値が変わると、SwiftUIが自動的に画面を更新してくれます。
一方、UIKitでは値が変わったあとに、ラベルの文字も自分で更新する必要があります。
import UIKit
class CounterViewController: UIViewController {
var count = 0
let label = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
label.text = "カウント: \(count)"
let button = UIButton(type: .system)
button.setTitle("増やす", for: .normal)
button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
}
@objc func didTapButton() {
count += 1
label.text = "カウント: \(count)"
}
}
このように、SwiftUIは「データが変われば画面も変わる」という流れを作りやすいです。
SwiftUIは初心者に向いている?
結論から言うと、これからiOSアプリ開発を始めるなら、SwiftUIはかなり学びやすい選択肢です。
理由は、画面を作るコードが短く、見た目とコードの対応関係がわかりやすいからです。
たとえば、SwiftUIでは以下のように書けば、
VStack {
Text("タイトル")
Text("説明文")
Button("開始") {
print("開始")
}
}
「文字が2つあって、その下にボタンがある」という画面構造がそのまま読めます。
初心者にとっては、コードを見たときに画面をイメージしやすいことが大きなメリットです。
ではUIKitはもう不要なのか?
UIKitが不要になったわけではありません。
むしろ、実務ではUIKitの知識が必要になる場面もまだ多いです。
理由は、既存のiOSアプリにはUIKitで作られているものが多く、画面遷移、細かいUI制御、古いライブラリとの連携などでUIKitが登場することがあるからです。
また、SwiftUIとUIKitは完全に分断されているわけではありません。たとえば、UIKitの中にSwiftUIの画面を組み込む場合は UIHostingController を使えます。Apple公式ドキュメントでも、UIHostingController はSwiftUIビューをUIKitのビュー階層へ統合するために使うものと説明されています。(Apple Developer)
逆に、SwiftUIの中でUIKitのViewControllerを使いたい場合は UIViewControllerRepresentable を使えます。これはSwiftUIの画面内でUIKitの UIViewController を作成・管理するための仕組みです。(Apple Developer)
つまり、SwiftUIとUIKitはどちらか一方しか使えないものではなく、必要に応じて組み合わせることもできます。
SwiftUIのメリット
SwiftUIのメリットは、主に次の通りです。
1. コードが短くなりやすい
SwiftUIは、少ないコードで画面を作りやすいです。
UIKitでは、部品を作って、設定して、配置して、制約を書く必要があります。
SwiftUIでは、Text、Button、VStack、HStack などを組み合わせて、画面構造を直感的に書けます。
2. 状態管理と画面更新がわかりやすい
SwiftUIでは、@State などを使って画面の状態を管理します。
値が変わると、SwiftUIが自動的に画面を再描画してくれます。
@State private var isOn = false
このような状態を持たせることで、スイッチのON/OFFや、入力フォームの値、ボタンを押したあとの表示変更などを扱いやすくなります。
3. プレビューが便利
SwiftUIでは、Xcodeのプレビュー機能を使って、コードを書きながら画面の見た目を確認できます。
毎回アプリをビルドしてシミュレーターで確認しなくても、ある程度見た目を確認できるため、UIの調整がしやすいです。
4. Appleの複数プラットフォームに対応しやすい
SwiftUIは、iOSだけでなく、iPadOS、macOS、watchOS、tvOSなど、Appleの複数プラットフォームで使えることを意識して作られています。Appleの技術概要でも、SwiftUIは宣言的なモデルで、複数のAppleプラットフォーム向けアプリを構築するために使えると説明されています。(Apple Developer)
もちろん、各プラットフォームごとの調整は必要ですが、考え方を共通化しやすいのは大きなメリットです。
SwiftUIのデメリット
SwiftUIにもデメリットはあります。
1. 細かい制御が難しい場面がある
SwiftUIはシンプルに書ける反面、細かいUI制御をしたいときに、UIKitの方がやりやすい場面があります。
たとえば、
- 複雑な画面遷移
- 細かいスクロール制御
- 既存のUIKitベースのライブラリとの連携
- 特殊なアニメーション
- 古いコードとの統合
などでは、UIKitの知識が役に立ちます。
2. UIKit前提の情報もまだ多い
iOS開発の歴史ではUIKitの期間が長いため、検索するとUIKit前提の記事やサンプルコードが多く出てきます。
初心者が調べものをすると、
「SwiftUIで知りたいのに、UIKitのコードが出てきた」
ということもあります。
そのため、SwiftUIだけを学んでいると、古い記事や既存プロジェクトのコードを読むときに戸惑うことがあります。
3. 実務ではUIKitの理解が求められることもある
新規の個人アプリならSwiftUIだけで作れるケースも多いです。
しかし、会社の既存アプリに入る場合、UIKitで書かれたコードを読む可能性は十分あります。
そのため、実務でiOSエンジニアを目指すなら、最終的にはUIKitの基本も理解しておくと安心です。
UIKitのメリット
UIKitのメリットは、実績と柔軟性です。
長く使われてきたフレームワークなので、情報量が多く、対応できる範囲も広いです。
特に、
- 既存アプリの保守
- 細かいUI制御
- 複雑な画面構成
- UIKitベースのライブラリ利用
- 古いiOSバージョンを考慮した開発
では、UIKitが必要になることがあります。
また、UIKitを理解していると、iOSアプリの画面構造やライフサイクルの理解も深まりやすいです。
UIKitのデメリット
UIKitのデメリットは、初心者にとってコードがやや難しく見えやすいことです。
たとえば、ラベルを1つ表示するだけでも、
UILabelを作るview.addSubview()で追加する- Auto Layoutの制約を書く
- 必要に応じて
UIViewControllerのライフサイクルを理解する
といった知識が必要になります。
そのため、最初に画面を作る楽しさを感じるまでに、少しハードルがあります。
初心者はSwiftUIとUIKitのどちらから学ぶべき?
これからiOSアプリ開発を始めるなら、基本的には SwiftUIから学ぶ のがおすすめです。
理由は次の通りです。
- コードが読みやすい
- 画面を作る流れが直感的
- 小さなアプリを作りやすい
- Xcodeプレビューで確認しやすい
- 個人開発との相性がよい
特に、個人でアプリを作りたい人や、まずはiOSアプリを完成させたい人は、SwiftUIから始める方が挫折しにくいです。
ただし、将来的に仕事としてiOS開発をしたい場合は、UIKitの基礎も学んでおくべきです。
おすすめの学習順序は次の通りです。
Swiftの基本
↓
SwiftUIで簡単な画面を作る
↓
状態管理を学ぶ
↓
画面遷移やフォーム入力を作る
↓
UIKitの基本を学ぶ
↓
SwiftUIとUIKitの連携を学ぶ
最初からUIKitを完璧に理解しようとするよりも、まずはSwiftUIでアプリを作る経験を積む方が実践的です。
SwiftUIとUIKitの使い分け
実際の開発では、次のように考えるとわかりやすいです。
SwiftUIが向いているケース
- 新規でアプリを作る
- 個人開発で素早く作りたい
- シンプルな画面が多い
- Apple Watch対応も考えている
- UIを宣言的に管理したい
- 状態に応じて画面を変えたい
UIKitが向いているケース
- 既存アプリがUIKitで作られている
- 細かいUI制御が必要
- 複雑な画面遷移が多い
- UIKit前提のライブラリを使う
- 古いコードを保守する
- SwiftUIだけでは実装しにくいUIがある
SwiftUIとUIKitは対立関係ではない
SwiftUIとUIKitは、どちらが完全に正しいというものではありません。
SwiftUIは新しく、書きやすく、個人開発や新規開発に向いています。
UIKitは歴史が長く、柔軟で、既存アプリや細かい制御に強いです。
つまり、
SwiftUI = 新しく画面を作りやすい
UIKit = 実績があり細かい制御に強い
という理解で問題ありません。
初心者が最初に学ぶならSwiftUIがおすすめですが、UIKitを知っていると対応できる範囲が広がります。
まとめ
SwiftUIとは、Appleが提供している、iOSアプリなどの画面を作るためのUIフレームワークです。
UIKitも同じくAppleのUIフレームワークですが、SwiftUIとは考え方が異なります。
SwiftUIは、画面を「こういう状態で表示したい」と宣言的に書きます。
一方、UIKitは「この部品を作って、設定して、画面に追加する」というように、手順を細かく書いていくスタイルです。
初心者がこれからiOSアプリ開発を始めるなら、まずはSwiftUIから学ぶのがおすすめです。
ただし、実務ではUIKitの知識が必要になる場面もあるため、SwiftUIに慣れてきたらUIKitの基本も学んでおくとよいでしょう。
SwiftUIとUIKitは対立するものではなく、状況に応じて使い分けるものです。
まずはSwiftUIで小さなアプリを作りながら、必要に応じてUIKitも学んでいくのが、初心者にとって現実的な進め方です。

大阪のエンジニアが書いているブログ。



コメント