SwiftUIとは何か?UIKitとの違いを初心者向けに解説

iOS
この記事は約11分で読めます。

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

iOSアプリ開発を始めると、かなり早い段階で出てくるのが SwiftUIUIKit という言葉です。

どちらも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では、画面は主に UIViewControllerUIView を使って作ります。

たとえば、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の一番大きな違いは、画面の作り方の考え方 です。

項目SwiftUIUIKit
考え方宣言的命令的
書き方「こういう画面である」と書く「この部品を作って、ここに置く」と書く
コード量比較的少なめ比較的多めになりやすい
学習しやすさ初心者にも入りやすい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では、TextButtonVStackHStack などを組み合わせて、画面構造を直感的に書けます。


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も学んでいくのが、初心者にとって現実的な進め方です。

コメント

タイトルとURLをコピーしました