swiftUI入門

SwiftUIを学ぶ最初のステップ「カウンターアプリ」

SwiftUIを学ぶ最初のステップとして、シンプルな「カウンターアプリ」を作るのがおすすめです。このアプリでは、ボタンをタップすると数値が増減するシンプルなUIを実装します。

カウンターアプリのポイント

  • SwiftUIの基本構造を理解できる
  • @State の使い方を学べる(状態管理)
  • ButtonText などの基本的な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 {

このコードは、「ContentViewView というルールに従うよ」と宣言しています。


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 {
  • bodyView のルールとして必ず必要なプロパティ
  • 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()
    }
}
  • PreviewProviderXcode のプレビュー機能 を提供する仕組み
  • これがあると、Xcodeのプレビュー画面で ContentView をすぐに確認できる

まとめ

用語説明
import SwiftUISwiftUIライブラリをインポート
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: PreviewProviderXcodeのプレビュー用

この基本を理解すれば、SwiftUIの基本的なアプリは作れるようになります!
次はこのカウンターアプリを改造して、リセットボタンを追加したり、アニメーションを加えたりするともっと理解が深まりますよ💡


次に学ぶべきこと

このアプリが作れたら、次は以下の機能を追加するとより理解が深まります:
@State から @ObservedObject に変更してみる
リセットボタンを追加する
アニメーションを加えてみる

試しに自分で改造しながら学ぶのが大切!まずはこのカウンターアプリを作ってみよう💡