3
1

More than 3 years have passed since last update.

コピペで乗り切るエンジニアがSwiftUIを勉強してみた(ファイル構成について)

Last updated at Posted at 2021-08-09

さて、前回SwiftUIの実行環境を用意しました。
SwiftUIのファイル構成と軽くソースの解析を
「Hello world」を使って確認していきます。
(前回:コピペで乗り切るエンジニアがSwiftUIを勉強してみた(環境構築編)

ファイル構成について

プロジェクトをつくった際にデフォルトでたくさんファイル作成される。

  • TestHelloWorld

    • TestHelloWorldApp.swift
      作成するアプリケーションのエントリポイント。
      @mainと記述された箇所が該当。
    • ContentView.swift
      作成するアプリケーションのビューの役割。
      画面に表示するボタンや文字を配置する。
    • Assets.xcassets
      アプリで使用する画像を格納するフォルダ。
      表示したいファイルはここに追加する。
    • info.plist
      アプリ内の共通設定。
      アイコンやバージョンの設定や権限まわりの設定を設定する。
    • Preview Content
      • Preview Assets.xcassets
  • TestHelloWorldTests
    XCTestフレームワークを使ったユニットテストを実装するためのもの。
    使い方はまだ分からないので一旦スルーで。

    • TestHelloWorldTests.swift
    • Info.plist
  • TestHelloWorldUITests
    XCTestフレームワークを使ったUIテストを記載します。
    こちらも使い方はまだ分からないのでスルーで。

    • TestHelloWorldUITests.swift
    • Info.plist
  • Products
    各種ビルド後のアプリケーション本体。

    • TestHelloWorld.app
    • TestHelloWorldTests.xctest
    • TestHelloWorldUITests.xctest

実行までの流れ

初期起動(エントリーポイント)

さて、上記のフォルダ構成で記載した通り、
SwiftUIでは初期起動(エントリーポイント)は
@main」で指定されるとのこと。
なので、「このプログラムはどこから始まるのかな?」となったら
まずは「@main」を探すと良いかと思います。

import SwiftUI

@main
struct TestMusicLibraryForSwiftUIApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

エントリポイントであるTestMusicLibraryForSwiftUIApp から呼び出された
ContentView も上記フォルダ構成で記載した通り、
画面レイアウトを記述していきます。
下記に記載の通り、Text("Hello, world!").padding()
で画面上に「Hello, world!」という文言を表示させます。
また、ContentView_Previews側はプレビュー表示の際に使用されます。

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

以上!ひとまずこのくらいで!

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1