Menu
Coddy logo textTech

Swift チートシート

最終更新

Hello World と基本

Swift はトップレベルで定型コードが不要で、1 行で動きます。

操作構文
1 行を出力print("Hello, World!")
改行なしで出力print("Hi", terminator: "")
文字列補間print("Hi \(name)")
コメント// this is a comment
複数行コメント/* ... */
モジュールをインポートimport Foundation
ファイルを実行swift run または swift main.swift

変数 (let / var) と型

定数には let、変更可能な値には var を使います。型は通常推論されます。

操作構文
定数let age = 30
変数var count = 0
明示的な型let name: String = "Ada"
基本型Int, Double, String, Bool, Character
型変換Double(i), String(n), Int("42")
タプルlet pair = (1, "a")
型エイリアスtypealias ID = Int
型を調べるvalue is String, value as? String

オプショナル

オプショナルは値が存在しない可能性を表します。使う前にアンラップします。

操作構文
オプショナルを宣言var name: String? = nil
オプショナルバインディングif let n = name { ... }
guard でアンラップguard let n = name else { return }
nil 合体let n = name ?? "default"
オプショナルチェーンuser?.address?.city
強制アンラップ (危険)name!
暗黙的アンラップvar name: String!
オプショナルを mapname.map { $0.count }

文字列

文字列は値型で、完全な Unicode をサポートします。

操作構文
長さs.count
大文字 / 小文字s.uppercased(), s.lowercased()
連結"foo" + "bar"
補間"Total: \(price)"
含むかどうかs.contains("ell")
接頭辞 / 接尾辞を持つs.hasPrefix("he")
分割s.split(separator: ",")
置換s.replacingOccurrences(of: "a", with: "b")
複数行文字列""" ... """

コレクション (Array、Dictionary、Set)

3 つの中核コレクション型で、いずれも値型です。

操作構文
配列リテラルvar nums = [1, 2, 3]
追加nums.append(4)
アクセス / 個数nums[0], nums.count
map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
辞書リテラルvar ages = ["Ada": 30]
辞書へのアクセスages["Ada"] はオプショナルを返す
集合リテラルvar ids: Set = [1, 2, 3]
集合に挿入ids.insert(4)
辞書を反復for (k, v) in ages { ... }

制御フロー

条件にかっこは不要で、switch は網羅的でなければなりません。

操作構文
if / elseif x > 0 { ... } else { ... }
三項演算子let r = x > 0 ? "pos" : "neg"
switchswitch n { case 1: ...; default: ... }
範囲付きの switchcase 1...5: ...
for-in ループfor i in 0..<10 { ... }
配列の for-infor item in items { ... }
while ループwhile x < 100 { ... }
repeat-whilerepeat { ... } while x < 100
break / continuebreak, continue

関数とクロージャ

関数はラベル付きの引数を持ち、クロージャは自己完結したコードブロックです。

操作構文
関数を定義func add(a: Int, b: Int) -> Int { a + b }
外部ラベルfunc greet(to name: String) { ... }
デフォルト引数func greet(name: String = "World") { ... }
可変長引数func sum(_ nums: Int...) -> Int { ... }
複数の戻り値 (タプル)func bounds() -> (min: Int, max: Int) { ... }
クロージャ式let f = { (x: Int) -> Int in x * x }
末尾クロージャnums.map { $0 * 2 }
省略引数{ $0 + $1 }

構造体とクラス

構造体は値型 (コピーされる) で、クラスは参照型 (共有される) です。

操作構文
構造体を定義struct Point { var x: Int; var y: Int }
クラスを定義class Person { var name: String }
クラスのイニシャライザinit(name: String) { self.name = name }
インスタンスを生成let p = Point(x: 1, y: 2)
mutating な構造体メソッドmutating func move() { x += 1 }
クラスメソッドfunc greet() { ... }
継承 (クラスのみ)class Student: Person { ... }
算出プロパティvar area: Int { width * height }
静的メンバstatic let shared = Manager()

列挙型

列挙型は関連する値をまとめ、付随データを持てます。

操作構文
列挙型を定義enum Direction { case north, south }
ケースを使うlet d = Direction.north
列挙型で switchswitch d { case .north: ... }
生の値enum Status: Int { case ok = 200 }
生の値にアクセスStatus.ok.rawValue
生の値から初期化Status(rawValue: 200)
付随値case result(Int, String)
列挙型のメソッドfunc label() -> String { ... }

最もよく使う Swift の構文を 1 ページにまとめました。この Swift チートシートは、言語の中核のクイックリファレンスです。定数と変数、オプショナル、文字列、コレクション、制御フロー、関数とクロージャ、そして iOS や macOS アプリを作るための構造体、クラス、列挙型を収録しています。

ここに載っているものはすべて標準の Swift で、公式のツールチェーンでコンパイルできます。必要なものをコピーするか、Swift プレイグラウンドですべてのスニペットをその場で試してみてください。Xcode は不要です。

Swift チートシート よくある質問

この Swift チートシートは無料ですか?
はい。この Swift チートシートは完全に無料で、登録も不要です。ブックマークしておけば、オプショナルのパターンやクロージャの構文、コレクションのメソッドを調べたいときにいつでも戻ってこられます。
Swift でオプショナルをアンラップするには?
オプショナルは値か nil を持つので、使う前にアンラップします。安全な方法は、オプショナルバインディング (if let n = name { ... })、関数の冒頭での guard let、nil 合体演算子 (name ?? "default")、オプショナルチェーン (user?.name) です。name! による強制アンラップも使えますが、値が nil だとクラッシュするので、確実なときだけ使いましょう。
Swift の構造体とクラスの違いは何ですか?
struct は値型で、代入や受け渡しでコピーが作られるため、変更しても元には影響しません。class は参照型で、コピーは同じインスタンスを共有し、継承をサポートするのはクラスだけです。Apple の指針は、既定では構造体を優先し、共有された変更可能な状態や継承が必要なときにクラスを使う、というものです。
Swift をオンラインで練習できますか?
はい。Swift プレイグラウンドを開けば、このチートシートのどのスニペットもブラウザ上で実行できます。Xcode のインストールは不要です。体系的に学びたいときは、Coddy の無料インタラクティブ Swift コースが、オプショナルとコレクションから構造体、クラス、列挙型まで段階的に導いてくれます。
このチートシートは初心者に向いていますか?
はい。最もよく使うトピック (変数、オプショナル、制御フロー) から高度なもの (クロージャ、構造体とクラス、列挙型) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。
Coddy programming languages illustration

CoddyでSwiftを学ぼう

始める