LoginSignup
8
3

【Swift】Main.Storyboardを消して開発する

Last updated at Posted at 2023-07-13

はじめに

どうも、プログラミング未経験で学習中のはるさんです。
今回はMain.Storyboardを消して開発するについて説明していきたいと思います。

UIKitを使ったアプリ開発において、その特徴の一つがStoryboardを使ったレイアウト設計です。
しかし、これが実務レベルにおいては結構曲者であると言うのが現役エンジニアさん達の見解のようです。
曰く、Git&GitHubを用いたチーム開発においてはMain.Storyboardを使用すると
コンフリクトが発生しやすく、その解消に余計な手間が発生してしまうようなのです。

よって個人の練習プロジェクト、個人開発アプリにおいてはそのまま
Main.Storyboardを使用しても問題はないでしょう。
しかしポートフォリオとして提出する場合やこれから就職して現場でコーディングを行う方は
習得必須の技術のようです。

記事の対象者

  • Swift学習を初めたばかりの方
  • iOSエンジニアとして企業で就職したい方

記事を執筆時点での筆者の環境

  • Xcode 14.3.1
  • Swift 5.8.1
  • iOS 16.4

1. Main.StoryboardとviewControllerの削除

Move to trashで削除しましょう。
スクリーンショット 2023-07-12 17.09.11.png
スクリーンショット 2023-07-12 17.08.51.png

2. 新しくstoryboardとviewControllerを作成

今回はHomeView.storyboardとHomeViewController.swiftを作成しました。
スクリーンショット 2023-07-12 17.12.47.png

分かりやすくするためにUILabelを配置しています。
スクリーンショット 2023-07-12 17.22.46.png

また忘れがちですので以下の設定も行いましょう

  • HomeView.storyboardのCustomClassの設定
  • Storyboard IDの設定
  • Is Initial View Controllerのチェックを入れる
    スクリーンショット 2023-07-12 17.12.31.png
    スクリーンショット 2023-07-12 17.12.16.png

3. Main storyboard file base nameからMainを削除

プロジェクト名のファイル>>Info>> Main storyboard file base nameのMainを
マイナスボタンをクリックして削除しましょう。

スクリーンショット 2023-07-12 17.29.17.png

ちなみに次に説明するInfo.plistからMainを削除を先にしてから
Main storyboard file base nameからMainを削除しても
何故かMain storyboard file base nameが復活してしまいます。
必ずMain storyboard file base nameからMainを削除を先に行いましょう

4. Info.plistからMainを削除する

Info.plist >> Storyboard Nameのマイナスマークをクリックして削除します
スクリーンショット 2023-07-12 17.30.42.png

5. SceneDelegateで起動経路を確保する

このままだとアプリを起動しても最初に表示する画面が決まっていない状態です。
SceneDelegateで最初に表示する画面を指定します。以下のように書き換えてください。
スクリーンショット 2023-07-12 18.05.04.png

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // guard let _ をwindowSceneに書き換え
        guard let windowScene = (scene as? UIWindowScene) else { return }
        //Windowをインスタンス化
        window = UIWindow(windowScene: windowScene)
        //rootViewControllerにStoryboardをHomeViewに指定して初期ビューコントローラーをインスタンス化
        window?.rootViewController = UIStoryboard(name: "HomeView", bundle: nil).instantiateInitialViewController()
        //ウィンドウ表示を実行
        window?.makeKeyAndVisible()
    }

ここまできたらシミュレーターを実行してみましょう。
正しく表示されれば完了です。

終わりに

いかがだったでしょうか。
少々手間ではあるものの、上記の手順を行うとチーム開発でコフリクトに見舞われる危険が抑えられると
思います。実務に入る前の初学者だとなかなか実感はできないと思いますが、この知識を知っているか
否かで実務での混乱も抑えられると思います。是非試してみてください。

ちなみにさらに上級者、または現場によってはそもそもStoryboardを使わない開発も行われるようです。
その際はSceneDelegateの記述方法も少々違います。
詳細は以下の参考記事「Storyboardを使わないiOSアプリ開発」をご覧ください。

この記事が初学者の方々の学習において、少しでもお役にたてれば幸いです。

参考記事

8
3
2

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
8
3