前回、新規でプロジェクトファイルを作成しました。
Xcodeでプロジェクトを作成すると、自動で生成されるファイルがあります。
これらのファイルについて理解を深めれば、どんなファイルで何をするのかザックリ分かります。
Androidに触れていると、
すこし理解しやすいかもしれません!
この記事でわかること
以下のファイルについて触れます。
- AppDelegate.swift
- SceneDelegate.swift
- ViewController.swift
- Main.storyboard
- LaunchScreen.storyboard
- Info.plist
- project.pbxproj
- contents.xcworkspacedata
- IDEWorkspaceChecks.plist
- AppIcon.appiconset/Contents.json
最初に生成されるファイルの解説
AppDelegate.swift
アプリ全体のライフサイクルを管理するファイル。
アプリの状態によって、呼び出される関数が変わり、ユーザ情報などやりたいことが設定できます。
アプリをバックグラウンドにした時(applicationWillResignActive)に、タイマーのカウントダウンを止めるなどといった挙動が実装できます。
SceneDelegate.swift
iOS13から導入された、同一アプリに対して、複数のインスタンス生成ができるもの。
iPadOSから画面を分割し、複数のアプリを同時に実行させることができるようになるためそれに準じた機能(らしい)です。
Info.plistの設定によっては不要にできるため必須ではないです。
ViewController.swift
名前の通り、Viewを管理したり操作するのを担うファイル。
表示、非表示、配置やアニメーションなども行えます。
受け取ったデータを使って、Textなどを表示させたりボタンのデザインを切り替えたりすることも可能です。
基本的にはロジックを書くファイルになります。
Main.storyboard
起動時、最初に開かれる画面のレイアウトファイル。
トップ画面みたいなイメージです。
このファイルを削除して、独自のファイルを作り直すことも可能です。
LaunchScreen.storyboard
起動直後、ロゴ画像が数秒出るよくある画面のレイアウトファイル。
スプラッシュ画面とも呼びます。
Info.plist
アプリの実行ファイル(.ipa)のために必要な構成情報を記載するファイル。
AndroidでいうManifest.xmlみたいなもので、アイコンやアプリ名など指定することが可能です。
余談ですが……
「plist」は「プロパティリスト」の略称らしいです。
project.pbxproj
プロジェクトの設定や、ファイルを追加した時などに変更されるファイル。
ターゲットOSバージョンを変更した時や、ファイルの構造を変えた場合にも変更が加わります。
複数人開発だと特に厄介で、コンフリクト地獄になることも……。
注意が必要なファイルの1つです。
JSONに似た形式で記述されているので、読もうと思えば読むことも可能!
contents.xcworkspacedata
プロジェクト全体のデータを格納するXMLファイル。
Info.plistに似て、バージョン番号やプロジェクト名を保持しています。
また似たようなものに『project.xcworkspace』というファイルがあります。
これは、CocoaPodsを導入すると作成されるファイルです。
IDEWorkspaceChecks.plist
Workspace上で必要なチェック項目の状態保存するためのファイル。
Xcode9.3から導入されたファイルらしく、Git ignoreに追加せずコミットした方が良いと考えられています。
AppIcon.appiconset/Contents.json
アプリのアイコンを管理するためのファイル。
アイコンを差し替えると、このファイルも差し変わります。
【補足】トラブルシューティング
ちょっとだけ脱線して、実際に初心者(僕)が解決に時間がかかった点を紹介します。
レイアウトを指しているコマンドエラー
なんとかコマンドエラー(レイアウトを指している)時は、storyboadをコード表記にし、keyCommandsタグを削除する。
ふとした拍子に、レイアウトに変更が加わってしまい、エラーになるため注意が必要。
レイアウトコンポーネントの追加はどこから?!
UILabelなどのコンポーネント、調べても画面右下からドラッグ&ドロップという記事ばかり。
Xcode11.2.1以降では、画面右上の「+」ボタンから行う。
端末によって画面のレイアウトが崩れる……
UILabelなどを配置したら、端末によってレイアウトが崩れる場合がある。
これは解像度による問題。
相対的に「画面中央に配置する!」のような制約をかけたい場合、AutoLayoutを使用する。
Auto Layoutとは
ちなみに、制約が増えれば増えるほど処理性能も低下しますので注意しましょう。
まとめ
iOSはもちろん、他のIDEを使えば基本的にプロジェクト立ち上げ時に自動生成されます。
それらの自動生成ファイルの意味が分かれば、あとはなんとなく作れ(ると思い)ますよ!