【iOS開発入門】プロジェクト作成時に自動生成されたファイルを理解する

iOSアプリ開発

前回、新規でプロジェクトファイルを作成しました。

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タグを削除する。

ふとした拍子に、レイアウトに変更が加わってしまい、エラーになるため注意が必要。

Key Commands must all have a Title, Key and Selector
I am receiving and error when trying to build, Xcode 8.0 Beta 4, and when I'm building it says "error: Illegal Configuration: Key Commands must all have a Title...

レイアウトコンポーネントの追加はどこから?!

UILabelなどのコンポーネント、調べても画面右下からドラッグ&ドロップという記事ばかり。

Xcode11.2.1以降では、画面右上の「+」ボタンから行う。

端末によって画面のレイアウトが崩れる……

UILabelなどを配置したら、端末によってレイアウトが崩れる場合がある。
これは解像度による問題。

相対的に「画面中央に配置する!」のような制約をかけたい場合、AutoLayoutを使用する。

[Xcode]UIViewが画面の大きさによってずれてしまう時の対処法
XcodeにてUIViewが画面の大きさによってずれてしまう時の対処法を紹介

Auto Layoutとは

Auto Layout入門
Training course repository for iOS app development - mixi-inc/iOSTraining

ちなみに、制約が増えれば増えるほど処理性能も低下しますので注意しましょう。

まとめ

iOSはもちろん、他のIDEを使えば基本的にプロジェクト立ち上げ時に自動生成されます。

それらの自動生成ファイルの意味が分かれば、あとはなんとなく作れ(ると思い)ますよ!

タイトルとURLをコピーしました