15.

Swift入門|iOS・macOSアプリ開発言語の特徴とObjective-Cとの違い

編集
この記事の要点
  • Swift はアップルが 2014 年の WWDC で発表した、iOS / macOS / watchOS / tvOS / Linux 向けのモダンなプログラミング言語
  • Objective-C / Objective-C++ / C と共存でき、Xcode 上で直接アプリ開発に使える
  • コンパイラ基盤は LLVM。Xcode の Playgrounds でインタラクティブに試せる
  • 型推論・オプショナル型・guard / defer・値型構造体・プロトコル指向など、安全性と表現力の高い文法を備えるマルチパラダイム言語
  • UI フレームワークは従来の UIKit / AppKit に加え、宣言的 UI の SwiftUI が現代の主流

Swift

Swift とは

Swift(スウィフト)は Apple が 2014 年の WWDC で発表したプログラミング言語です。iOS / iPadOS / macOS / watchOS / tvOS、さらに Linux でも動作し、現在の iPhone アプリ開発の標準言語として広く使われています。

従来 Apple 製 OS のアプリ開発に使われていた Objective-C / Objective-C++ / C 言語共存できるように設計されており、既存資産を活かしながら徐々に Swift へ移行できます。

主な特徴

項目内容
パラダイムマルチパラダイム(オブジェクト指向 / プロトコル指向 / 関数型 / 命令型)
コンパイラLLVM ベース。AOT コンパイルで高速
型システム静的型付け + 強力な型推論
null 安全オプショナル型String?)で「値がないかもしれない」を型で表現
メモリ管理ARC(自動参照カウント)
対話実行Xcode の Playgrounds、ターミナルの swift REPL でライブ実行
主要 UIUIKit / AppKit に加え、宣言的 UI の SwiftUI
主用途iOS / macOS / watchOS / tvOS アプリ、サーバサイド(Vapor 等)

Hello, World

// 最短バージョン
print("Hello, World!")

拡張子は .swift。Playground にこの 1 行を貼り付ければそのまま動きます。

変数・定数

let name = "Taro"      // 定数(再代入不可)
var age  = 20          // 変数
age += 1

// 型を明示することも可能
let pi: Double = 3.14

原則 let(定数)を使い、必要なときだけ var(変数)にするのが Swift スタイルです。

オプショナル型 と guard / if let

Swift の特徴的な機能が オプショナル型です。値が「あるかもしれないし、無いかもしれない」を型で表現することで、null 安全を実現します。

let raw: String? = readLine()        // String? は nil の可能性あり

// if let で安全に開封
if let s = raw {
    print("入力: \(s)")
} else {
    print("入力なし")
}

// guard で早期 return
func greet(_ name: String?) {
    guard let n = name else {
        print("名前がありません")
        return
    }
    print("こんにちは \(n) さん")
}

構造体(値型)とクラス(参照型)

// 値型: コピーされる
struct Point {
    var x: Int
    var y: Int
}

// 参照型: 同じインスタンスを共有
class Counter {
    var count = 0
    func incr() { count += 1 }
}

var p1 = Point(x: 1, y: 2)
var p2 = p1          // コピー
p2.x = 99
print(p1.x, p2.x)    // 1 99

let c1 = Counter()
let c2 = c1          // 同じ参照
c2.incr()
print(c1.count, c2.count)   // 1 1

「迷ったらまず struct」が Swift の基本方針です。アイデンティティ(同一性)が必要な場合だけ class を選びます。

SwiftUI で UI を書く

SwiftUI は宣言的に UI を書ける現代の標準フレームワークです。

import SwiftUI

struct ContentView: View {
    @State private var count = 0

    var body: some View {
        VStack(spacing: 16) {
            Text("カウント: \(count)")
                .font(.title)
            Button("+1") {
                count += 1
            }
        }
        .padding()
    }
}

Objective-C との違い

観点Objective-CSwift
文法C 言語ベース + 角括弧メッセージ式モダン構文 / セミコロン省略可
null 安全nil でメッセージ送信可だが落とし穴多いオプショナル型で型レベルに保護
ジェネリクス後付け(軽量ジェネリクス)言語に組み込み
パフォーマンス動的ディスパッチ中心静的ディスパッチ可能で高速
主な UIUIKit / AppKitUIKit / AppKit / SwiftUI

学習ロードマップ

  1. Xcode をインストールして Playground で文法を体験する
  2. 変数・制御構文・関数・オプショナル・構造体・クラスの基本を写経する
  3. UIKit のサンプル iPhone アプリ(カウンタ / TODO リスト等)を 1 本動かす
  4. SwiftUI に切り替えて宣言的 UI を学ぶ
  5. Combine / async-await で非同期処理、Core Data や SwiftData で永続化を学ぶ
  6. App Store へ実機リリースしてアプリ配布フロー全体を体験する

関連

編集
Post Share
子ページ
  1. print でデバッグ出力
  2. 変数の宣言
  3. 定数の宣言
  4. データ型
  5. 配列の宣言/追加/削除
  6. クラスとメソッドの作り方と呼び出し方
  7. 繰り返し制御
  8. if文による条件分岐
  9. エラー一覧
同階層のページ
  1. Java
  2. PHP
  3. Python
  4. C#
  5. C++
  6. Ruby
  7. Go
  8. HTML
  9. CSS
  10. JavaScript
  11. TypeScript
  12. VBA
  13. Google Apps Script
  14. Julia
  15. Swift
  16. オブジェクト指向言語共通
  17. Gen

最近更新/作成されたページ