SwiftUI入門:「ContentView」とbodyの正体を理解する

要約
SwiftUIの基礎を徹底解説!ContentViewとbodyの正体、some Viewの意味、NavigationStackでの画面遷移までスッキリ理解。
意見はこのエリアに表示されます
アイキャッチ画像

SwiftUIを触り始めると必ず出会うのが、以下のコードです。

「これはいったい何をしているんだろう?」と最初に疑問を持つ方は多いと思います。
この記事では、ContentView 構造体と body プロパティが何を意味するのかを丁寧に解説します。

1. struct ContentView: View とは?

ContentView は Swiftの構造体型です。
さらに : View と書くことで、SwiftUIが用意している View プロトコルに準拠しています。

つまり ContentView は「SwiftUIにおける1つの画面(UI部品)」を表現しているわけです。

  • struct ContentView → 型定義(画面を表す設計図)
  • : View → SwiftUIのViewプロトコルに準拠(画面部品として利用可能にする)

2. var body: some View の意味

View プロトコルに準拠するには、body プロパティを必ず実装しなければなりません。
この body が、その画面が描画する中身を表します。

この場合、返しているのは Text 型。
でも戻り値の型は some View となっています。

3. some View とは?

some は 不透明な戻り値型(opaque return type) を意味します。

  • body が返す具体的な型(Text, VStack> など)はコンパイラは知っている
  • しかし呼び出し側には「Viewプロトコルに準拠した何か」とだけ伝える

これにより、コードはシンプルに保たれ、内部では最適化された具体型が使われます。

4. 実際の型はどうなっている?

例えば以下のように複数の要素を配置すると……

実際の返り値の型はとても複雑です。

これを毎回書くのは現実的ではないため、some View が使われています。

5. スタック構造による画面遷移

SwiftUI では NavigationStack を使うことで画面遷移を管理します。
これは内部的に「スタック(積み重ね)」の仕組みを持っていて、push(積む) と pop(戻る) が可能です。

  • NavigationStack → 遷移履歴を管理する枠組み
  • NavigationLink → 「次の画面へ進む」ボタン

戻るボタンが自動的に表示されるのは、このスタック構造のおかげです。

6. まとめ

  • ContentView は「1つの画面」を表す構造体
  • body はその画面の中身を返す必須プロパティ
  • some View は「具体的な型を隠してView準拠の何かを返す」仕組み
  • 複数のUI要素を組み合わせると、実際の型は非常に複雑
  • NavigationStack があるから push/pop で画面遷移や戻る処理が実現できる
Explore More
関連記事はありません。