iOS開発メモ2 (Xcodeの開発環境とプロジェクト構成)

とりあえず、自分の開発環境およびターゲットを以下として作業する予定。

項目 バージョンなど
Xcode 9.0
Swift 4.0
ターゲットiOS 10.3.3
ターゲット端末 iPhone6
Developer Program とりあえず未加入(無料デバッグまで)

プロビジョニング・プロファイルの作成

あくまで、Developer Program加入なしの無料版プロビジョニングファイルを使って、実機で動かすところまでを目的とする。Xcode7あたりから実機でデバッグするところまで無料化されたので、自分のようにやってみようと思った人も増えたかもしれない。

作成方法は、過去記事の「無料版ライセンスで、iPhoneの実機でデバッグする」あたりを参照する。

Windows版VisualStudio2017で、実機iPhoneでデバッグする

プロジェクトの構成

Xcodeから新規でプロジェクトを作成する。まずはSingle View Applicationを選択する。これは起動すると、1つのビューが画面いっぱいに表示されるのみのアプリである。

ss-2017-10-17-00.49.50

次のプロジェクトの基本設定を行う。

h1 h2
Project Name プロジェクト名(英語)
Term None
Organization Name 氏名または企業名
Organization Identifier [逆DNS]
Bundle Identifier [Organization Identifier] + [Project Name] ※自動決定
Language Swift
Devices iPhone

ss-2017-10-17-00.50.51

アプリケーション名は別途、ローカライズ対応も併せて日本語名で設定できるので、プロジェクト名はあくまでプロジェクトの名称をつけること。あと、プロジェクト名を後から変更するのが、大変らしいのでここで決めておく。

次にプロジェクト一式を保存する場所を指定する。

ss-2017-10-17-00.52.16

保存が完了すると、以下のようなファイル構成になる。
たとえば、SampleAppという名称のプロジェクトだと以下になる。

ss-2017-10-17-00.53.18

ディレクトリとファイル構成は、以下になる。

SampleApp
├ SampleApp
│ ├ AppDelegate.swift
│ ├ Assets.xcassets
│ │ └ AppIcon.appiconset
│ │    └ Contents.json
│ ├ Base.lproj
│ │    ├ LaunchScreen.storyboard
│ │    └ Main.storyboard
│ ├ Info.plist
│ └ViewController.swift
└ SampleApp.xcodeproj

Xcodeのプロジェクトナビゲータ上では、以下のようになる。

ss-2017-10-17-00.53.56

プロジェクト内の各ファイルやフォルダについて、順番に簡単な概要を記す

*.xcodeproj

プロジェクトファイル

ビルドオプションやターゲットiOS、プロビジョニングプロファイルの設定など、プロジェクトの設定全般に関する設定ファイル。
VisualStudioのプロジェクトファイルとほぼ同じようなもの。

また、VisualStudioでいうところのプロジェクトをまとめるソリューションファイルに相当するものもあり、**”ワークスペース”**と呼ばれる。機能の同じだが、ここでは扱わない。

Info.plist

アプリケーションの構成情報を記載する設定ファイル。

key=value形式のXMLファイルで、アプリケーションの設定に関する情報として、例えば、起動時の向き、バージョン、表示名など。

また、iOS10からは、端末のどんなデータにアクセスするかなどを明記する必要がある(カレンダー、写真、連絡先etc...)試してないが、明記してないデータにプログラムでアクセスするとエラーになると思われる。

*.storyboard

ユーザインタフェースの設計や画面遷移を視覚的に設定するファイル。

このファイルを選択すると、Xcode上で画面がユーザインタフェースの設計画面(インタフェースビルダー)に切り替わる。設定した内容がXML形式で保存される。Visual Studioのダイアログエディタのようなもの。

MainとLaunchScreenと2つあるが、Mainが画面設計のもので、LaunchScreenが起動時に少しだけ表示する画面を設計するときのファイルになる。

Assets.xcassets

リソースを管理する設定ファイル

ここでいうリソースはアプリのアイコンやアプリ内で使用する画像データやパラメータファイルなどユーザが直接操作しないファイルを管理する入れ物

Xcode上からこのAssetsにファイルをドラッグすると、コピーが登録されて、アプリ内から利用することができる。アプリケーションのインストールデータの一部になる。

AppDelegate.swift

アプリケーション本体のイベント処理クラス

アプリケーション本体というよりも、アプリケーションのさまざまな挙動だけを抜き出したイベント処理クラスのようなもので、アプリ起動中にコールされるものや、終了時にコールされるイベントなどが空っぽのまま実装されている。

必要に応じて、このイベントメソッド内に処理を追加する。
VisualStudioでフォームアプリケーションを作成したときのProgram.csあたりのような気がする。

ViewController.swift

アプリケーション本体のクラス

”View(画面)”の”Controller(コントローラー)”である機能を持つ。基本的にiOSの場合、1画面(View)ごとに、1つのコントローラを用意して緋も付けるの一般的である。
なので、3画面で構成されるアプリであれば、3つのViewControllerクラスを用意して実装する。(詳細は別の機会に)

”Single View Application"を選択すると、UIViewControllerを継承したViewControllerが作成されて、最低限必要な実装が自動で出力されている。

ViewControllerとは、N個のビューを貼り付けて表示することができる透明な入れ物のようなものであり、UIViewControllerから派生・特化したViewControllerクラスが幾つか用意されている。