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

Hello-iPhone iOS開発

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

Xcodeでプロジェクトを作成すると、自動で生成されるファイルがあります。

これらのファイルについて理解を深めれば、どんなファイルで何をするのかザックリ分かります。

僕
Androidに触れていると、
すこし理解しやすいかもしれません!

こちらの記事では、iOS開発についてさらに概略をまとめています!

【iOS開発入門】Xcode、iOSで押さえておくべき基本事項
業務中に学んだ、iOS開発で必要だと思ったことをまとめてみました。

今回わかること

以下のファイルについて触れます。

  • 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)に、タイマーのカウントダウンを止めるなどといった挙動が実装できます。

【iOS】AppDelegate.swiftってなにしてんの?(Qiita)

AppDelegateについて調べてみる(Qiita)

SceneDelegate.swift

iOS13から導入された、同一アプリに対して、複数のインスタンス生成ができるもの。

iPadOSから画面を分割し、複数のアプリを同時に実行させることができるようになるためそれに準じた機能(らしい)です。

Info.plistの設定によっては不要にできるため必須ではないです。

iOS 13 から導入されるSceneDelegateとは(Qiita)

【xcode 11】新たに導入されたsceneDelegateの各メソッドが呼ばれるタイミング(Qiita)

iOS13でSceneDelegateを使わないでアプリを作る(Qiita)

ViewController.swift

名前の通り、Viewを管理したり操作するのを担うファイル。

表示、非表示、配置やアニメーションなども行えます。

受け取ったデータを使って、Textなどを表示させたりボタンのデザインを切り替えたりすることも可能です。

基本的にはロジックを書くファイルになります。

SwiftでViewControllerを使う(Qiita)

Main.storyboard

起動時、最初に開かれる画面のレイアウトファイル。

トップ画面みたいなイメージです。

このファイルを削除して、独自のファイルを作り直すことも可能です。

LaunchScreen.storyboard

起動直後、ロゴ画像が数秒出るよくある画面のレイアウトファイル。

スプラッシュ画面とも呼びます。

iOSのスプラッシュ画面実装における注意点と実装方法(Qiita)

Info.plist

アプリの実行ファイル(.ipa)のために必要な構成情報を記載するファイル。

AndroidでいうManifest.xmlみたいなもので、アイコンやアプリ名など指定することが可能です。

僕
余談ですが……

「plist」は「プロパティリスト」の略称らしいです。

Info.plistとは(HACK NOTE)

Info.plistについて(iPhoneアプリ開発の虎の巻)

project.pbxproj

プロジェクトの設定や、ファイルを追加した時などに変更されるファイル。

ターゲットOSバージョンを変更した時や、ファイルの構造を変えた場合にも変更が加わります。

複数人開発だと特に厄介で、コンフリクト地獄になることも……。

注意が必要なファイルの1つです。

JSONに似た形式で記述されているので、読もうと思えば読むことも可能!

.xcodeproj/project.pbxproj を解読する(Qiita)

Xcode+gitのワークフロー考察

contents.xcworkspacedata

プロジェクト全体のデータを格納するXMLファイル。

Info.plistに似て、バージョン番号やプロジェクト名を保持しています。

また似たようなものに『project.xcworkspace』というファイルがあります。

これは、CocoaPodsを導入すると作成されるファイルです。

とある会社員
とある会社員
CocoaPodsって……。
あ〜アレね?
知ってる知ってる。うん。

そんな方は、こちらの記事をオススメします!
こっそり読んでください!

【iOS開発】 CocoaPodsが何なのか〜導入までまとめ
業務中よく聞くCocoaPodsに関して調べてまとめてみました。 導入後の注意点などもあります!

IDEWorkspaceChecks.plist

Workspace上で必要なチェック項目の状態保存するためのファイル。

Xcode9.3から導入されたファイルらしく、Git ignoreに追加せずコミットした方が良いと考えられています。

Apple公式ドキュメント

QAStackでの質問と回答

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が画面の大きさによってずれてしまう時の対処法 | Code Ocean
XcodeでUIViewを使ってみたもののデバイスのサイズが違ってくると空きスペースが出来てしまう・・・という場合の対処方法について紹介します。 UIViewがずれてしまうケース Appleが発売しているiPhoneですが、様々なケースがありますよね。

Auto Layoutとは

mixi-inc/iOSTraining
Training course repository for iOS app development - mixi-inc/iOSTraining

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

まとめ

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

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

僕
他にもファイルの種類はありますが、
無理せず少しずつ学んでいきましょう!

次にオススメ!

【iOS開発入門】新規のプロジェクトを作成する
初歩の初歩である、プロジェクトファイルの新規作成からiOS開発を学んでいきましょう!
【かんたん】IPAファイルのインストール方法
おそらく一番簡単なIPAファイルを端末にインストールする方法です。説明する必要もないくらい簡単です。
タイトルとURLをコピーしました