LoginSignup
17
13

More than 3 years have passed since last update.

世界一詳細に全部日本語でXcode11で作った新規プロジェクトをiOS12以前で実行できるところまで解説する

Last updated at Posted at 2020-02-24

追記

初心者の方から「そもそもターゲットってなんだよ」という質問をいただきました
ターゲットを指定すると それ以降のバージョンで動く というものになります
iOS11をターゲットにしてると、2020/02/27現在, iOS11, iOS12, iOS13で動きます
デフォルトのiOS13をターゲットにしてると、iOS13だけでしか動かせません

そもそも

ここしばらく新規プロジェクトを作ったことなかったので気付きませんでしたが、2020/02/24現在、最新のXcode11で新規プロジェクトを作成するとそのままではiOS12以前では動かない状態のものが作成されました
いくらSwiftUIを普及させたいからって初心者殺しも大概にせいよってことでiOS12以前でも動かせるようになるまでを手順にしてみました
初心者への分かりやすさを優先したつもりですので、実際そういうことじゃないという箇所がありましても大目に見てください :bow:

環境
Xcode version 11.3.1
レイアウト Autolayout
ターゲット iOS 11.0

Xcodeを起動する

1は最近起動したプロジェクトが並びますので初めて起動した人は少し画面が違うかもしれません
2のCreate a new Xcode projectをクリックします

プロジェクト を作成する

テンプレートを選択する

こういう画面になりますので、まず1のようにiOSを選択します
次に、2のようにSingle View Appを選択します
最後に3のNextを押します

補足、ここでは何をしたか

プログラムにはだいたいどれも同じようなことを書く定型文があります。
テンプレートとはその定型文のことであり、ここではどの定型文を使うのか選択しています。
XCodeは iOS専用開発ツールではなく、MacやAppleWatchといったメジャーなApple製品全般で動くソフトウェアを開発できるツールです
そのため、まず1で iOSアプリを作る時の定型文を選びましたよという選択をしてます

プロジェクトを保存する箇所を選択する

このような画面になるので好きな場所を選択してCreateボタンを押してください
その指定した保存場所にソースコードなどが配置されます

Targetを変更する

Targetを確認する

このような画面になると思いますが選択されている状態によっては真ん中あたりが違う画面になってるかもしれません
この画面にするためには
1のプロジェクト名の部分を選択します
2のTargetsの中にあるプロジェクト名の部分を選択します
3のGeneralを選択します
これで今度こそ上記の画面になるかと思います

そして4のTargetがiOS XXXになってること確認します
このXXXはiOSのバージョン番号が書かれています

Targetを選択する

上記のようにiOS XXXの部分を選択すると他のiOSバージョンが一覧で並びます
今回はiOS 11.0を選択します

補足、ここでは何をしたか

アプリが動くiPhone本体やiOS自身もどんどんバージョンアップをしています
そのため、古いOSや端末では使えない機能があります
具体例だと顔認証の機能はiOS11.1で初めて追加されました
なので、顔認証のプログラムを組み込んでアプリを出したらiOS11以前のバージョンでは動きません
そのためXcodeで最低限どのバージョンで動かすようにするのかというものを指定する必要があります
逆に古すぎるiOSをターゲットにするとどんどん追加された便利な機能が使えません

補足の補足

Appleとしてはなるべく最新のOSを使って欲しいので新しいOSがデフォルトで選択されています
しかしアプリ開発者はユーザ数を増やしたいのでなるべく古いOSを指定したいものです
具体的な正解はなくその時々でiOSのバージョンの普及率などをネットで調べてTargetを指定してください

iOS11で動くようにソースコードや設定を書き換える

SceneDelegate.swiftを開く

1でSceneDelegate.swiftを選択すると上のような画面になると思います
2がSceneDelegate.swiftの中身のソースコードで赤くなってる部分がエラーを意味しています
エラーになっている原因はさきほどTargetiOS11.0にしたからで、このSceneDelegate.swift自体がiOS11では動きません
3でプロジェクト全体のエラーの総数を表しています

SceneDelegate.swiftを削除する

iOS11で使えないファイルなので削除します
削除したいファイル(SceneDelegate.swift)を選択中に「command」 + 「delete」を同時に押すと上記のようなアラートが出ます
Move to Trashを選択してください

削除はこのような状態になります

1でSceneDelegate.swiftが消えて2でアラートが減ったことが分かると思います

補足、ここでは何をしたのか

プログラムのファイルは当然PCの中にありますが、Xcodeはさらにどのファイルが今のプロジェクトに関係のあるファイルなのか設定されています
アラートの中のRemove Referenceは「Xcodeの管理から外すけどMacには残す」ということになり、Move to Trashは「Xcodeの管理から外すしMacからもファイルを消すよ(ゴミ箱に入れる)」ということになります
いらないファイルを残しておく意味もないのでMove to Trashを選択しました

AppDelegate.swiftを開く

1のAppDelegate.swiftを開くと真ん中が2のようになると思います
これがAppDelegate.swiftに書かれているソースコードの内容です
2の中に赤マルが4と書かれている部分が「ここでエラーが4つ分あるぞ」という意味です
3で分かる通り残りのエラーは6つなのでこのファイルに全てのエラーがあります
これを修正していきます

AppDelegate.swiftにwindowを追加する

上記のように1のvar window: UIWindow?を追加します

AppDelegate.swiftから不要なコードを消す

上記の1で囲われたふたつのfuncを消します

エラーが消えたことを確認する

funcの削除が終わると上記の画面になります
1でエラーが消えたことを確認できます

補足、ここでは何をしたか

iOSが動くにはlet window: UIWindow?というコードが必要なのですが、元はさきほど削除したSceneDelegate.swiftにそれが書かれていました
そのlet window: UIWindow?AppDelegate.swiftに移し、さらにiOS11では動かない不要なコードを削除しました

info.plistを開く

上記のように1のinfo.plistを選択します
真ん中の画面がinfo.plistの内容を表示したものに変わるので2のApplication Scene Manifestを選択します
キーボードのdeleteを押して削除します

削除後の画面はこのようになります

補足、ここでは何をしたか

これもSceneDelegate.swift, AppDelegate.swiftと同様にiOS11では使えない設定を削除しました

プログラムをシミュレータで動かす

プログラムが動く状態になったので実際にiPhoneシミュレータを選択してアプリを動かします

iOS Deviceを選択する

上記の1を選択すると画面が下記のようにシミュレータが一覧で表示されます(シミュレータの数や種類は実際のものとは違うかもしれません)

この中からこれから動かしたいiPhoneを選択します、今回はiPhone8(11.4)を選択しました
(11.4)はOSのバージョンを表しています
選択すると画面は下記のようになります

選択したシミュレータでアプリを動かす

上記の1を押ししばらく待ちます

しばらくすると上記の1のようにシミュレータが立ち上がり画面が真っ白になれば成功です
2を押すと起動中のアプリが終了します

補足、ここでは何をしたのか

iPhone開発ではMacでプログラムを書きiPhoneで動かしますが、プログラムを1行書き変える度にiPhoneにプログラムを転送していては時間がかかります
またiPhoneにも8やXや11など種類がありますが全ての端末を揃えるにはお金がかかります
そのためMacの中に仮想のiPhone(シミュレータ)があるので、そこでプログラムの動作を確認します

以上です

初心者が新規プロジェクト作成してから5分もかからず動かせたら嬉しいです

17
13
1

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
17
13