Swift (プログラミング言語)

| 並列スクリプト言語の「Swift」とは異なります。

|

Swift

Swiftのロゴ

パラダイム|  関数型プログラミング、命令型プログラミング、オブジェクト指向プログラミング、マルチパラダイムプログラミング、block-structured programming、宣言型プログラミング
登場時期|  2014年6月2日 (2014-06-02)
開発者|  クリス・ラトナー、Apple
最新リリース|  6.1.2 / 2025年5月28日[1]
型付け|  強い静的型付け、型推論
影響を受けた言語|  Rust、Haskell、Ruby、Objective-C、Python、C Sharp、CLU、C++、Java、Scala、Smalltalk、Groovy、D言語
プラットフォーム|  macOS、iOS、Linux、Microsoft Windows 10、iPadOS、tvOS、watchOS、Microsoft Windows、visionOS
ライセンス|  Apache-2.0、Apache License
ウェブサイト|

* https://swift.org/

拡張子|  swift
テンプレートを表示

プログラミング言語

>>他のプログラミング言語

■カテゴリ / ■テンプレート

Swift（スウィフト）は、AppleのiOSおよびmacOS、Linux、Windowsで利用出来るプログラミング言語である。Worldwide Developers Conference (WWDC) 2014で発表された。Apple製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存できるように、共通のObjective-Cランタイムライブラリが使用されている[2]。

Swiftは、動的ディスパッチ（英語版）や動的バインディング等のObjective-Cの特長を受け継いでいる一方で、Objective-Cより「安全」にバグを捕捉できることも意図している。また、タイプや構造体、クラスに適用可能なプロトコルによるシステムの拡張性の概念は「プロトコル指向プログラミング」と呼ばれる[3] 。

Swiftは、マルチパラダイムのコンパイラプログラミング言語であるが、XcodeのPlaygroundsの上やターミナルでインタラクティブにデバッグする事が可能である。

LLVMコンパイラが使われており、ライブコーディングに対応していることが特徴[4]。

## 歴史

[編集]

Swiftは2010年にLLVMとClangの始祖であるChris Lattner（英語版）によって開発が始められた。ChrisはSwiftについて「Objective-C、Rust、Haskell、Ruby、Python、C#、CLU、その他多くの言語からアイデアを得た」と述べている[5]。

その後Apple社内での4年間の開発期間を経て、2014年のWWDCにおいて一般に発表され、同時にAppleに開発者登録している開発者に対してベータ版の提供が開始された。

2014年9月9日、SwiftはXcode 6.0ゴールデンマスター版でマイルストーン1.0に到達した[6]。

2015年12月3日、SwiftはApache 2.0ライセンスのもとでオープンソース化され、プロジェクトのホストとして Swift.org[※ 1] が作成された。

WWDC 2016の基調講演で、AppleはSwiftでのコード作成方法を教えることを目的とした、Swift Playgroundsという名称のiPad専用アプリ開発を発表した。2016年9月にリリースされた[7]このアプリは3Dビデオゲームのようなインタフェースで表示され、コードの行が特定の順序で配置され実行されたときにフィードバックを提供する。2017年3月21日、Swift 3.1に対応し、日本語を含め5カ国語に対応したことを発表[8]。Swift 3.1は、2017年3月27日にリリースされた[9]。

2017年、Project Leadは、Chris Lattner同様にLLVMとClangの開発者である、AppleのTed Kremenekである[10]。

2017年9月19日、Xcode 9.0とともにSwift 4がリリースされた[11]。組み込みのクラスやデータ構造に変更が加えられている。Swift 3で書かれたソースコードはXcodeに搭載された移行機能を使って更新できる。その後、2018年3月29日に、Xcode 9.3とともにSwift 4.1が[12]、2018年6月4日にXcode 10 betaとともにSwift 4.2がリリースされた[13]。

2019年3月25日、Xcode 10.2とともにSwift 5がリリースされた。バイナリインタフェースの安定化が図られ、Appleが提供するOSにSwiftランタイムが標準で含まれることになる[14]。ソースコードはSwift 4.xと互換性がある。

WWDC 2019にて、Appleのプラットフォーム向けの新しいフレームワークとしてSwiftUIが提唱された[15]。

2019年9月20日、Xcode 11.0とともにSwift 5.1がリリースされた。モジュールの安定化が図られ、Swiftの将来のバージョンで機能するバイナリフレームワークの作成、共有が可能になる[16]。

2020年3月24日、Xcode 11.4とともにSwift 5.2がリリースされた[17]。

2020年9月16日、Swift 5.3がリリースされ[18]、その約1週間後の9月22日、Windowsが公式にサポートされた[19]。

2021年のWWDCで、Appleから正式に発表された Swift 5.5 は、Async/awaitの言語サポートを大幅に拡張し、また独自のバージョンのアクターモデルを導入している [20]。

2024年3月5日、Swift 5.10がリリースされた[21]。言語の並行処理モデルが改善され、データ競合回避のために完全にデータ分離を行うことが可能になっている。これはSwift 6になる前の最後のリリースである。

2024年9月17日、Swift 6.0がリリースされた[22]。コンパイル時のメモリへの並行アクセス診断、型付き `throws` 文、コピー不可能な型を定義する `~Copyable` プロトコルの拡張、128ビット整数型の導入などが含まれる。

## 特徴

[編集]

AppleはSwiftの発表に際して「モダン、安全、高速、インタラクティブ」を大きな特徴として挙げた[2]。

モダン
クロージャやタプル、ジェネリックプログラミング、Optional型の採用などが挙げられる。

静的な型チェック、変数の初期化の強制、数値型のオーバーフローの検査、自動参照カウント（英語版）によるメモリ管理などが挙げられる。
また、if文のブレースの省略禁止、switch-case文は明示的に指定されない限りフォールスルーしないなど、既存のプログラミング言語において記述ミスによるバグが発生しやすかった部分を文法的に解決している。
インタラクティブ
Swiftはコンパイラ言語でありながら、インタプリタとしてスクリプトを実行することも可能で、対話実行環境 (REPL) も用意されている。
Swiftと同時に発表されたXcodeバージョン6では、コードの実行結果をグラフィカルに確認しながら開発できるPlaygroundsが実装された。

クレイグ・フェデリギは、Swiftの発表時に「C言語の荷物のないObjective-C」と表現している[2]。

## サンプルコード

[編集]

### Hello World

[編集]

print( "Hello, World!" )  // これだけで動いて、Hello, World! と出力される。

### 他

[編集]

* コメントはCスタイルの複数行コメントと…

// C++スタイルの一行コメントの双方をサポートしている

// var name: Type = value でType型の変数nameを宣言し、valueで初期化する
var explicitDouble: Double = 70 // 70.0

/// 型が省略された場合は、型推論により初期値の型が適用される
var implicitInteger = 70    // Int
var implicitDouble = 70.0   // Double

// let name:Type = value でType型の定数nameにvalueを設定する。
// 型推論可能な場合、型の表記は省略できる。
let theAnswer = 42

// 識別子にはたいていのUnicode文字を用いることができる。
let リンゴの数 = 3
let みかんの数 = 5

// 文字列リテラル"..."の中にある\(expr)には、式exprの内容が展開される
let リンゴ説明 = "私は\(リンゴの数)個のリンゴを持っている。"  // ”私は3個のリンゴを持っている。"
let 果物説明 = "私は\(リンゴの数 + みかんの数)個の果物を持っている。" //"私は8個の果物を持っている。"

// Swiftでは辞書も組み込みでサポートされている。
// 以下は Dictionary<String, Int> 型の定数辞書の定義の一例である。
let people = ["Anna": 67, "Bety": 8, "Jack": 33, "Sam": 25]

// 辞書の内容の列挙は for (key, value) in dict { ... }
for (name, age) in people {
print("\(name) is \(age) years old.")

// メソッドや関数は "func"文法を使って宣言する。
// パラメータ名の付け方に注意。-> で戻り値の型を宣言する
func sayHello(to personName: String) -> String {
let greeting = "こんにちは、" + personName + "さん"
return greeting

// "こんにちは、サーバーさん"を出力
print(sayHello(to: "サーバー"))

## メモリ管理 (Automatic Reference Counting)

[編集]

この節の加筆が望まれています。 （2014年9月）

|

Swiftでは自動参照カウント (Automatic Reference Counting) ARCでアプリが使うメモリを追跡管理する。ARCはクラスインスタンスが使われなくなった時に自動的にそれが使っていたメモリを開放する。Objective-Cで参照カウント方式を使用する場合のように、明示的に`release`、`retain`を記述する必要はなく、そもそも記述することができない。

循環参照を回避する方法として、Swiftでは弱い参照を示す修飾子`weak`、`unowned`が提供される。また、キャプチャリストを使用して、クラス内のクロージャにおける強い参照サイクルを回避することができる[23]。

## 相互運用性

[編集]

この節の加筆が望まれています。 （2014年9月）

|

SwiftはCocoaやObjective-Cをシームレスに使えるように設計されている[24]。SwiftとObjective-Cの間はどちらのAPIからでもお互いに使う事が出来る。

モジュールとしてアクセス可能などんなObjective-Cフレームワーク（又はCライブラリ）でもSwiftに直接インポートできる。

import Foundation

初期化の例 Objective-C

UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

Swift

let myTableView: UITableView = UITableView(frame: .zero, style: .Grouped)

Xcode 6以降では、Objective-CとSwiftの相互利用のためのブリッジヘッダーを生成する機能が提供される。ブリッジヘッダーファイルが生成された時点で、Swift側ではObjective-C側で定義された型、関数、変数を、Swiftで書かれたかのように参照できる[25]。Objective-C側では、自動生成ヘッダーファイルをインポートすることでSwiftコードを利用できる[26]。なお、Swiftで書かれたクラスをObjective-C側でサブクラス化することはできない[27]。

### C言語APIとの互換

[編集]

この節の加筆が望まれています。 （2014年9月）

|

SwiftからLibcを呼ぶ例

puts("Hello from libc")
let fd = open("/tmp/scratch.txt", O_WRONLY|O_CREAT, 0o666)

if fd < 0 {
perror("could not open /tmp/scratch.txt")
} else {
let text = "Hello World"
write(fd, text, strlen(text))
close(fd)

## その他の実装、開発

[編集]

Swift 2.2から、Ubuntuディストリビューション向けの公式ダウンロードが利用可能である。さらに、Swift 5.2.4からはCentOS、Amazon Linux等の多くのディストリビューションが追加されている[28]。

Swiftがオープンソース化されたことにより、他環境に移植されることが期待されている[29]。Webフレームワークとしては、IBMによるKitura（英語版）、Vapor（英語版）等がすでに存在する。また、Appleによって公式の「Server APIs」ワークグループも開始されており、Swiftの開発メンバーが中心的な役割を担っている[30]。

Androidで利用可能な非公式のツールチェーンも存在する[31]。

2020年5月29日、AWS LambdaでSwiftを利用可能にする「Swift AWS Lambda Runtime」が公開された[32]。

## 注釈

[編集]

1. ^ Swift.org - Welcome to Swift.org

## 出典

[編集]

1. ^ 出典URL: https://github.com/swiftlang/swift/releases/tag/swift-6.1.2-RELEASE, 閲覧日: 2025年6月1日, 題名: Release 6.1.2, 出版日: 2025年5月28日
2. ^ a b c Williams, Owen (2014年6月2日). “Apple announces Swift, a new programming language for iOS”. The Next Web. 2014年6月2日閲覧。
3. ^ Protocol-oriented Programming in Swift. Apple Inc. YouTube.
4. ^ “Introducing Swift”. Apple. 2014年6月2日閲覧。
5. ^ Chris Lattner's Homepage (2020年6月24日)
6. ^ Swift Has Reached 1.0 - Swift Blog - Apple Developer
7. ^ Swift Playgrounds、App Storeで提供開始
8. ^ Swift Playgrounds、さらに5か国語に対応
9. ^ Swift 3.1 Released! \- swoft.org (2017年3月27日)
10. ^ [swift-evolution Update on the Swift Project Lead] - Chris Lattner (2017年1月10日)
11. ^ Swift 4.0 Released! \- Ted Kremenek (2017年9月19日)
12. ^ “「Xcode」をMac App Storeで”. Mac App Store. 2018年4月2日閲覧。
13. ^ Xcode 10 includes Swift 4.2, which compiles your software more quickly, helps you deliver faster apps, and generates even smaller binaries. “Xcode 10” (英語). Developer. 2018年6月12日閲覧。
14. ^ “Swift.org - Swift 5 Released!” (英語). 2020年3月18日閲覧。
15. ^ “Introducing SwiftUI: Building Your First App - WWDC 2019 - Videos - Apple Developer” (英語). 2020年3月23日閲覧。
16. ^ “Swift.org - Swift 5.1 Released!” (英語). 2020年11月2日閲覧。
17. ^ “Swift.org - Swift 5.2 Released!” (英語). 2020年11月25日閲覧。
18. ^ “Swift.org - Swift 5.3 released!” (英語). 2021年4月13日閲覧。
19. ^ “Introducing Swift on Windows” (英語). 2020年11月2日閲覧。
20. ^ Hudson, Paul (2021年6月6日). “What's new in Swift 5.5?”. HackingWithSwift.com. Hacking with Swift. 2021年7月29日閲覧。
21. ^ “Swift.org - Swift 5.10 Released” (英語). 2024年4月11日閲覧。
22. ^ “Swift.org - Announcing Swift 6” (英語). 2024年12月20日閲覧。
23. ^ “Automatic Reference Counting — The Swift Programming Language (Swift 5.2)” (英語). 2020年5月25日閲覧。
24. ^ “Using Swift with Cocoa and Objective-C” (HTML). Apple Inc.. 2014年9月2日閲覧。
25. ^ “Importing Objective-C into Swift”. Apple Inc.. 2020年6月22日閲覧。
26. ^ “Importing Swift into Objective-C”. Apple Inc.. 2020年6月22日閲覧。
27. ^ “Migrating Your Objective-C Code to Swift”. Apple Inc.. 2020年6月22日閲覧。
28. ^ “Swift.org - Download Swift”. 2020年11月2日閲覧。
29. ^ “IBM brings Swift to the cloud, releases web framework Kitura written in Apple’s programming language”. 2020年3月23日閲覧。
30. ^ Inc., Apple. “Server APIs Work Group”. Swift.org. https://swift.org/blog/server-api-workgroup/ 2020年5月25日閲覧。  `{{cite news}}`: `|last=`に無意味な名前が入力されています。 (説明)⚠
31. ^ “Swift for Android: Our Experience and Tools”. 2021年3月24日閲覧。
32. ^ “Swift.org - Introducing Swift AWS Lambda Runtime”. https://swift.org/blog/aws-lambda-runtime/ 2020年9月24日閲覧。

## 外部リンク

[編集]

英語版ウィキブックスに本記事に関連した解説書・教科書があります。

Swift Introduction

日本語版ウィキブックスに本記事に関連した解説書・教科書があります。

Swift

* Swift.org - Welcome to Swift.org 公式ウェブサイト
* Swift - Apple Developer
* The Swift Programming Language (Swift 4), Apple Inc. (2017年9月19日)
* iBooks Store / HTML
* Using Swift with Cocoa and Objective-C, Apple Inc. (2014)
* iBooks Store / HTML
* iOS Standard Library, Apple Inc. (2014)
* Swift 公式BLOG , Apple Inc. (2014)
* Run Swift \- iSwift Playground
* Online Swift Playground \- Online Swift Playground
* Swift Playgrounds \- Apple
* Swift Playgrounds \- App Store

* 表
* 話
* 編
* 歴

macOS

バージョン|

* Public Beta
* 10.0
* 10.1
* 10.2
* 10.3
* 10.4
* 10.5
* 10.6
* 10.7
* 10.8
* 10.9
* 10.10
* 10.11
* 10.12
* 10.13
* 10.14
* 10.15
* 11
* 12
* 13
* 14
* 15
* 26

アプリケーション|

* Automator
* DVD プレーヤー
* FaceTime
* Finder
* Font Book
* Image Playground（英語版）
* iPhoneミラーリング
* Launchpad
* Mac App Store
* News（英語版）
* Photo Booth
* QuickTime Player
* Safari
* Siri
* TV
* カレンダー
* 株価
* 計算機
* 探す
* 写真
* 辞書
* システム設定
* ショートカット
* スティッキーズ
* チェス
* テキストエディット
* 天気
* 時計
* パスワード（英語版）
* ヒント
* ブック
* フリーボード
* プレビュー
* ホーム
* ボイスメモ
* ポッドキャスト
* マップ
* ミュージック
* メール
* メッセージ
* メモ
* リマインダー
* 連絡先

廃止|

* Dashboard
* Front Row
* iChat
* iPhoto
* iSync
* iTunes

ユーティリティ|

* AirMacユーティリティ
* Audio MIDI 設定
* Bluetoothファイル交換
* Boot Campアシスタント
* ColorSyncユーティリティ
* Digital Color Meter
* Grapher
* Mission Control
* Time Machine
* VoiceOverユーティリティ
* アーカイブユーティリティ
* アクティビティモニタ
* 移行アシスタント
* イメージキャプチャ
* 拡張スロットユーティリティ
* 画面共有
* キーチェーンアクセス
* コンソール
* システム情報
* スクリプトエディタ
* スクリーンショット
* ターミナル
* チケットビューア
* ディスクユーティリティ
* ディレクトリユーティリティ
* デスクビュー
* フィードバックアシスタント
* フォルダアクション設定
* プリントセンター
* ワイヤレス診断

廃止|

* Sherlock
* グラブ
* ネットワークユーティリティ

テクノロジーおよび
インタフェース|

* AirDrop
* AirPlay
* AirPrint
* Apple Pay
* Apple File System
* Apple Intelligence
* Apple Remote Desktop
* AppleScript
* Apple Type Services for Unicode Imaging
* Appleシリコン
* Appleでサインイン
* Aqua
* Audio Units
* AVFoundation
* Bonjour
* Boot Camp
* bridgeOS
* Cocoa (API)
* ColorSync
* Core Animation
* Core Audio
* Core Data
* Core Foundation
* Core Text
* Core Image
* CUPS
* Darwin
* Dock
* FileVault
* Game Center
* Gatekeeper
* Genmoji（英語版）
* Grand Central Dispatch（英語版）
* Keychain
* launchd
* Liquid Glass
* Mac Catalyst
* Mach-O
* Metal
* Mission Control
* Night Shift（英語版）
* Open Directory
* plist
* Preferred Executable Format
* Push Notifications
* Quartz
* Quartz Compositor
* Quick Look
* Rosetta 2
* Secure Enclave
* Shazam
* Siri
* Spotlight
* Swift
* Time Machine
* Touch ID
* Uniform Type Identifier
* Universal Binary
* VoiceOver
* WebKit
* XNU
* XQuartz
* アップルメニュー
* アプリケーションパッケージ
* コントロールセンター
* システム整合性保護
* スクリーンタイム
* 通知センター
* 日本語入力プログラム
* ファミリー共有（英語版）
* マルウェア削除ツール
* 文字ビューア

非推奨|

* Carbon (API)
* HFS Plus • HFSX
* OpenGL
* OpenCL

廃止|

* Apple Filing Protocol
* Backup
* Classic
* Cover Flow
* Dashcode
* Inkwell
* Project Builder
* QuickTime X
* QuickTime 7
* Rosetta
* Spaces
* Xgrid
* ことえり
* ペアレンタルコントロール
* 32ビットアプリケーション

開発ツール|

* Apple Developers Tools
* Interface Builder
* iOS SDK
* iPhone Simulator
* Swift Playgrounds
* Xcode

その他|

* Macのオペレーティングシステム
* WWDC

* 一覧
* カテゴリ

* 表
* 話
* 編
* 歴

iOS

バージョン|

* iPhone OS 1
* iPhone OS 2
* iPhone OS 3
* iOS 4
* iOS 5
* iOS 6
* iOS 7
* iOS 8
* iOS 9
* iOS 10
* iOS 11
* iOS 12
* iOS 13
* iOS 14
* iOS 15
* iOS 16
* iOS 17
* iOS 18
* iOS 26

派生OS|

| iPadOS|

* iPadOS 13
* iPadOS 14
* iPadOS 15
* iPadOS 16
* iPadOS 17
* iPadOS 18
* iPadOS 26

|

* watchOS
* tvOS
* audioOS
* visionOS

アプリケーション|

* App Store
* FaceTime
* Image Playground（英語版）
* iTunes Store
* News（英語版）
* Photo Booth
* Safari
* TV
* Watch
* ウォレット
* カレンダー
* カメラ
* 株価
* 拡大鏡
* 計算機
* 計測（英語版）
* コードスキャナー
* コンパス
* 探す
* 写真
* ショートカット
* ジャーナル（英語版）
* 設定
* 天気
* 電話
* 時計
* パスワード（英語版）
* ヒント
* ファイル
* ブック
* フリーボード
* フィットネス（英語版）
* フィードバックアシスタント
* ヘルスケア
* ボイスメモ
* ポッドキャスト
* ホーム
* 翻訳（英語版）
* マップ
* ミュージック
* メール
* メッセージ
* メモ
* リマインダー
* 連絡先

廃止|

* iPhoneを探す
* Newsstand
* 友達を探す

機能|

* AirDrop
* AirPlay
* AirPrint
* Apple Intelligence
* Appleでサインイン
* AVFoundation
* CarPlay
* Cocoa Touch
* Core Animation
* Core Image
* Face ID
* Genmoji（英語版）
* iOS SDK
* Night Shift（英語版）
* Optic ID
* Secure Enclave
* Shazam
* Siri
* Spotlight
* SpringBoard
* Touch ID
* VoiceOver
* WebKit
* アニ文字
* コントロールセンター
* スクリーンタイム
* スタンバイ
* 通知センター
* ファミリー共有（英語版）

廃止|

* Cover Flow

サービス|

* Apple Arcade
* Apple Card
* Apple Music
* Apple Pay
* Cash
* Apple TV
* Apple TV+
* Apple TVオリジナル番組
* Game Center
* iCloud
* iMessage
* News
* News+
* Push Notifications
* iTunes Connect（英語版）
* TestFlight（英語版）

終了|

* Cards
* iAd
* iDisk
* MobileMe
* iTunes Radio（英語版）

その他|

* Appleシリコン
* Darwin
* FairPlay
* iFund
* iPhone Simulator
* iPhoneの歴史
* Liquid Glass
* Metal
* Swift Playgrounds
* Swift
* WWDC
* 論争
* 300ページのiPhone請求書
* アンテナ問題
* バッテリー問題（英語版）

* 一覧
* カテゴリ

* 表
* 話
* 編
* 歴

コンピュータ・プログラミング言語

低水準言語|

* 機械語
* アセンブリ言語

高水準言語|

| 1950年代|

* FORTRAN
* ALGOL
* RPG
* COBOL

|

1960年代|

* LISP
* CPL
* BASIC
* PL/I
* APL
* BCPL
* Simula
* LOGO
* B

1970年代|

* Forth
* Pascal
* C
* Prolog
* Smalltalk
* Scheme
* ML
* AWK
* Ada
* Modula-2

1980年代|

* C++
* Objective-C
* Common Lisp
* Eiffel
* Erlang
* Esterel
* Lustre
* Perl
* Mathematica
* J

1990年代|

* Python
* Tcl
* Haskell
* Visual Basic
* Ruby
* Lua
* Delphi
* Java
* ECMAScript (JavaScript)
* PHP
* OCaml
* SuperCollider
* R

2000年代|

* C#
* VB.NET
* Scala
* Clojure
* D
* F#
* Go
* Nim

2010年代|

* Dart
* Ceylon
* Elixir
* Crystal
* Hack
* Swift
* Rust
* Raku
* Elm
* Julia
* Kotlin
* Zig

架空の言語|

* 擬似言語
* CASL
* CAP-X

* 年表
* パラダイム
* 一覧

典拠管理データベース: 国立図書館 |

* フランス
* BnF data
* ドイツ
* イスラエル
* アメリカ

|