ブログ


初めてのSwiftUIでTodoアプリ開発!学んだ5つのこと
こんにちは!M.Hです。
StoryboardでのiOSアプリ開発に慣れ親しんだ私が、初めてSwiftUIを触ってみました。
簡単なTodoアプリ作りでさえ、Auto LayoutやIBOutletといった“当たり前”が覆される良い体験でした!
この記事では、Storyboard経験者だからこそ感じるSwiftUIの良いところと学びを書いていきます。
作成したアプリは非常にシンプルです。
見た目はStoryboardで作成したアプリと変わりませんが、中身の実装思想が全く異なります。
目次
環境
- macOS: Sequoia 15.5
- Xcode: 16.3
- Swift: 6.1
主な実装
ここからは、実際にどのように実装したのかを3つのステップに分けて解説します。
ステップ1:データを管理する部品 (Model) を作る
まず、タスクの情報を管理するための「型」を定義します。
今回はタスクの文字列と、それがユニークであることを示すためのIDを持つようにstruct(構造体)で定義しました。
// Todo項目一つ分を表すデータ構造
struct Task: Identifiable {
let id = UUID() // ユニークなIDを自動で生成
var title: String
}
ポイントはIdentifiable
プロトコルに準拠させることです。
これによって、SwiftUIのListが各項目をユニークに識別できるようになります。
ステップ2:画面を作る (View)
次に、ユーザーが見る画面を作成します。
Listを使ってタスク一覧を表示し、TextFieldで新しいタスクを入力できるようにしました。
struct ContentView: View {
// 状態を管理する変数は後で追加します
var body: some View {
NavigationView {
VStack {
// タスク入力欄と追加ボタン
HStack {
TextField("新しいタスクを入力", text: .constant(""))
.textFieldStyle(RoundedBorderTextFieldStyle())
Button(action: {
// ボタンが押された時の処理
}) {
Text("追加")
}
}
.padding()
// タスク一覧を表示するリスト
List {
// ここにタスクを並べる
}
}
.navigationTitle("Todoリスト")
}
}
}
VStack
で要素を縦に、HStack
で横に並べています。
このようにUI部品を組み合わせるだけで、直感的にレイアウトが組めるのがSwiftUIの面白いところです。
ステップ3:データを画面に反映させる (State)
最後に、ユーザーの操作によってデータが変更され、画面が自動で更新される「状態管理」の仕組みを作ります。@State
というプロパティラッパを使うのが基本です。
struct ContentView: View {
// @Stateを付けることで、この変数が変更されるとUIが自動で更新される
@State private var tasks = [Task]() // タスクの配列
@State private var newTaskTitle = "" // 入力中のテキスト
var body: some View {
NavigationView {
VStack {
HStack {
TextField("新しいタスクを入力", text: $newTaskTitle) // $を付けてデータをバインディング
.textFieldStyle(RoundedBorderTextFieldStyle())
Button(action: {
// ボタンが押されたら新しいタスクを追加
let newTask = Task(title: newTaskTitle)
tasks.append(newTask)
newTaskTitle = "" // 入力欄をクリア
}) {
Text("追加")
}
}
.padding()
List(tasks) { task in
Text(task.title)
}
}
.navigationTitle("Todoリスト")
}
}
}
@State
をつけたtasks配列に新しい要素を追加するだけで、Listが自動的に再描画され、画面に新しいタスクが表示されます。
TextFieldのtext:引数に$newTaskTitle
と$
を付けて渡すことで、テキストフィールドへの入力がnewTaskTitle変数にリアルタイムで反映されます。これをデータバインディングと呼びます。
まとめ:学んだ5つのこと
今回の簡単なTodoアプリ開発を通して、SwiftUIの基本的な考え方を学ぶことができました。
- 1.宣言的なUI
- 画面に「何があるべきか」をコードで書くだけでUIが作れる。
- 2.@Stateによる状態管理
- @Stateを付けるだけで、データの変更が自動でUIに反映される。
- 3.データバインディング
- $を使うと、UI(TextField)とデータ(@State変数)を簡単につなげられる。
- 4.Identifiableの重要性
- Listなどで動的にデータを扱う際には、各要素をユニークに識別する仕組みが不可欠。
- 5.まずは小さく作る
- 最初から完璧を目指さず、まずは「追加」機能だけ作ることで、一つ一つの仕組みを集中して学べました。
ご紹介したように、SwiftUIを使えば、少ないコードでiOSアプリを形にすることができます!
特に、コードを書くとリアルタイムで画面が変化するため、開発が非常にスムーズに進むと実感しました。これまでiOSアプリ開発にハードルを感じていた方も、SwiftUIの直感的な開発スタイルなら、楽しみながら挑戦できるはずです。少しでも参考になれば幸いです!
株式会社ウイングドアは福岡のシステム開発会社です。
現在、私達と一緒に"楽しく仕事が出来る仲間"として、新卒・中途採用を絶賛募集しています!
ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、
お気軽にお問い合わせ下さい!