SwiftUIを学ぶ最初のステップとして、シンプルな「カウンターアプリ」を作るのがおすすめです。このアプリでは、ボタンをタップすると数値が増減するシンプルなUIを実装します。
- カウンターアプリのポイント
- カウンターアプリのコード
- 解説
- 1.
import SwiftUI
- 2.
struct ContentView: View
- 3.
@State private var count = 0
- 4.
var body: some View
- 5.
VStack(spacing: 20) { ... }
- 6.
Text("カウンター: \(count)")
- 7.
Button(action: { count += 1 }) { Text("+") }
- 8.
.frame(width: 80, height: 80)
- 9.
.background(Color.blue.opacity(0.7))
- 10.
.foregroundColor(.white)
- 11.
.clipShape(Circle())
- 12.
struct ContentView_Previews: PreviewProvider
- 1.
- まとめ
- 次に学ぶべきこと
カウンターアプリのポイント
- SwiftUIの基本構造を理解できる
@State
の使い方を学べる(状態管理)Button
やText
などの基本的なViewを使う- レイアウトを
VStack
で組む
カウンターアプリのコード
import SwiftUI
struct ContentView: View {
@State private var count = 0 // 状態変数
var body: some View {
VStack(spacing: 20) {
Text("カウンター: \(count)")
.font(.largeTitle)
.padding()
HStack {
Button(action: { count -= 1 }) {
Text("−")
.font(.largeTitle)
.frame(width: 80, height: 80)
.background(Color.red.opacity(0.7))
.foregroundColor(.white)
.clipShape(Circle())
}
Button(action: { count += 1 }) {
Text("+")
.font(.largeTitle)
.frame(width: 80, height: 80)
.background(Color.blue.opacity(0.7))
.foregroundColor(.white)
.clipShape(Circle())
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
解説
SwiftUIのコードの各用語について、初心者でもわかりやすいように解説します。
1. import SwiftUI
🔹 SwiftUIライブラリをインポート
SwiftUIを使うために必要なライブラリを読み込んでいます。UIKitのようにimport UIKit
とするのと同じ役割です。
2. struct ContentView: View
🔹 画面(ビュー)を定義するための構造体
SwiftUIでは、画面のデザインやロジックをView
プロトコルに準拠した struct
で作ります。
struct ContentView: View {
このコードは、「ContentView
は View
というルールに従うよ」と宣言しています。
3. @State private var count = 0
🔹 状態管理をするための変数 (@State
)
@State private var count = 0
@State
は、SwiftUIで画面の変化をトラッキングするための特別な変数です。count
を変更すると、SwiftUIが自動的に画面を再描画してくれます。private
を付けることで、このビューの中だけで使える変数になります。
4. var body: some View
🔹 画面の見た目を定義する
var body: some View {
body
はView
のルールとして必ず必要なプロパティsome View
は「body
には何かしらのView
が入るよ」という意味body
の中にレイアウトやUI要素を記述する
5. VStack(spacing: 20) { ... }
🔹 縦に並べるレイアウト (VStack
)
VStack(spacing: 20) {
VStack
は「縦に要素を並べる」レイアウトspacing: 20
で要素間のスペースを20ポイントに設定
6. Text("カウンター: \(count)")
🔹 テキストを表示する (Text
)
Text("カウンター: \(count)")
Text
は、文字を表示するためのSwiftUIのビュー"\(count)"
は文字列補間でcount
の値を埋め込んでいる.font(.largeTitle)
で文字の大きさを変更
7. Button(action: { count += 1 }) { Text("+") }
🔹 ボタンの作成 (Button
)
Button(action: { count += 1 }) {
Text("+")
}
Button
は押すと何かの処理を実行するUI要素action: { count += 1 }
の部分で「ボタンを押したらcount
を1増やす」という処理を記述{ Text("+") }
の部分で、ボタンの見た目を定義
8. .frame(width: 80, height: 80)
🔹 大きさを指定 (frame
)
.frame(width: 80, height: 80)
- 幅80、高さ80のサイズに指定
Text
だけだと小さいので、これでボタンの大きさを調整
9. .background(Color.blue.opacity(0.7))
🔹 背景色をつける (background
)
.background(Color.blue.opacity(0.7))
- 背景色を青 (
Color.blue
) にする .opacity(0.7)
で透明度70%に設定
10. .foregroundColor(.white)
🔹 文字色を指定 (foregroundColor
)
.foregroundColor(.white)
- ボタン内の
Text
の色を白 (.white
) に設定
11. .clipShape(Circle())
🔹 形を丸くする (clipShape
)
.clipShape(Circle())
Circle()
を使って、ボタンを円形にクリップ(切り取る)
12. struct ContentView_Previews: PreviewProvider
🔹 プレビュー用のコード (PreviewProvider
)
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
PreviewProvider
は Xcode のプレビュー機能 を提供する仕組み- これがあると、Xcodeのプレビュー画面で
ContentView
をすぐに確認できる
まとめ
用語 | 説明 |
---|---|
import SwiftUI | SwiftUIライブラリをインポート |
struct ContentView: View | 画面を表す View を作る |
@State private var count = 0 | 状態管理のための変数 |
var body: some View | 画面のデザインを定義 |
VStack(spacing: 20) {} | 縦に並べるレイアウト |
Text("カウンター: \(count)") | テキストを表示 |
Button(action: { count += 1 }) {} | ボタンを作成 |
.frame(width: 80, height: 80) | ボタンの大きさを指定 |
.background(Color.blue.opacity(0.7)) | 背景色を指定 |
.foregroundColor(.white) | 文字色を指定 |
.clipShape(Circle()) | ボタンを丸くする |
struct ContentView_Previews: PreviewProvider | Xcodeのプレビュー用 |
この基本を理解すれば、SwiftUIの基本的なアプリは作れるようになります!
次はこのカウンターアプリを改造して、リセットボタンを追加したり、アニメーションを加えたりするともっと理解が深まりますよ💡
次に学ぶべきこと
このアプリが作れたら、次は以下の機能を追加するとより理解が深まります:
✅ @State
から @ObservedObject
に変更してみる
✅ リセットボタンを追加する
✅ アニメーションを加えてみる
試しに自分で改造しながら学ぶのが大切!まずはこのカウンターアプリを作ってみよう💡