RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

【超入門】Xcodeのインストール方法-iosアプリを実機にインストールするまで

f:id:tech-rakus:20201008171058p:plain

はじめに

社会人として2年目になろうというタイミング(今年の4月)で急遽、スマホアプリの開発を担当することになりました。 スマホアプリは初めての開発だったため、AndroidiOS それぞれの開発の学習を行いました。

両方の学習を終えて振り返ってみると、Android より Xcodeを用いたiOSの開発の方が新しい発見が多く、面白く感じました。そこで今回は、Xcodeで開発したiOSアプリを 実機/iPhone でデバック・動作確認を行うまでの流れを解説しようと思います。


※記事作成時の環境

そもそもX-codeとは

f:id:crowd_k:20201006120346p:plain

Xcode」とは、MacOSで使用できる開発ツールの一つで、様々なApple製品(iOSiPhone、watchOS/Apple Watch、etc...)で使用できるアプリを作成することができます。
Xcodeに記述していくプログラミング言語である「Swift」または「Objective-C」を用いてコードを記述していき、実機・エミュレーターを使った動作確認や、開発に必須なテスト・デバックも簡単に実行可能です。
App Store」に様々なアプリが公開されていますが、そのほとんどが Xcode で作成されていると言っても過言ではありません。つまり、この Xcode を使いこなすことができれば、iPhone アプリなどを自作することができるということです。

ダウンロード・インストール

Xcodeの一番手軽なインストール方法は MacBook の「App Store」からのダウンロードです。
App Store で 「Xcode」と検索すれば出てきます。

f:id:crowd_k:20201007131448p:plain

※すでにXcodeがインストール済みのため「アップデート」になっていますが、未インストールであれば「インストール」が表示されます

「インストール」を押すと、MacBookにダウンロード・インストールが開始されます。(約8Gあるので時間がかかります。)
これで最新版のXcodeをインストールでき、さらに新しいバージョンのXcodeが公開されたときも、「App Store」から簡単にバージョンアップが可能となります。

作業時の落とし穴

「とても簡単!」と思うかもしれませんが、実はここまでで一つ落とし穴があります。
これから解説する以下の点を疎かにすると危険ですので、作業前に必ずご一読ください。

1. Xcodeをインストールできない場合がある

お使いのMacBookの「MacOSのバージョン」によって、インストールできる「Xcodeのバージョン」に"上限"があり、昔のバージョンのMacOSを使用していると、特定のバージョン以降のXcodeがインストールできなくなります。

2. XcodeとSwiftのバージョンの組み合わせは決まっている

XcodeをインストールするとSwiftも自動的にインストールされるため、そのままSwiftのコードを記述することができます。
裏を返すと、インストールする際にSwiftのバージョンを選ぶことができません。


整理すると、MacOSXcode、Swift それぞれのバージョンの組み合わせに制約があるこということになります。
App Storeには最新版が公開されているので、

  • 最新のMacOSでなければインストールできない可能性が高い
  • 最新のバージョンのSwiftがインストールされる

ということになります。

「バージョンなんて気にしない/しなくても良い」という方は、 App Store での管理が一番楽だと思います。
しかし、環境の影響でMacOSを自由にアップデートできない・指定のバージョンのSwiftを使用したい といったケースは少なくないと思います。

そういった場合は、「App Store」からではなく、Apple Developerサイトからから任意のバージョンのXcodeを直接ダウンロードしてください。
f:id:tech-rakus:20201020160503p:plain https://developer.apple.com/download/more/
ダウンロードしたファイルを実行することでインストールを行うことができます。

ここでも一つ注意しなければいけないことがあります。
Xcodeのバージョン」によってデバック・動作確認することができる「実機のOSのバージョン」に上限があります。つまり、古いXcodeを使うと、iPhoneiOSのバージョンによって開発したアプリをインストールできないケースがあるのです。

このパートをまとめると、Xcodeをインストールする前に以下のそれぞれのバージョンを確認し、条件にあったバージョンを選択する必要があるということです。

  • MacOSのバージョン
  • 接続するデバイスOSバージョン
  • 使用したいSwiftのバージョン

何も意識せず、Xcodeをインストールするとハマる場合があるのでご注意ください。
※各バージョンがどのように紐づいているかは、ググれば簡単に出てくると思います。

プロジェクトを作成する/選択する

Xcodeを起動すると、以下の画面が表示されます。
※ここからの画面画像はXcodeのバージョンによって若干異なることが多々あります。

f:id:crowd_k:20201006112057p:plain

  • Create a new Xcode project:新規プロジェクトを作成する。新しくアプリを作成する場合はここから。
  • Clone an existing project:Git Repositoryからプロジェクトを作成する。
  • Open a project or file:ローカルにあるプロジェクトを開きます。

プロジェクトを初めて作成する場合は「Create a new Xcode project」を押下します。

Xcode11には「Get started with a playground:Swiftプログラムを記述し動作確認を行うモード」があり、練習に使ってましたがXcode12で消えてしまいました、、、(探したらあるかもしれない)

次に、以下のような画面が表示されます。

f:id:crowd_k:20201006121855p:plain

ここでは、開発するOSとそのテンプレートを選択します。

  • OS
    • 開発しようとしているアプリのOSを選択してください。
  • テンプレート
    • はじめてXcodeを触る方でとりあえず実機でのデバックを行いたい(Hellow Worldを表示させたい)ということであれば、「Single View app」を選択します。
      作成するアプリが決まっている方は任意に選んでいただいて構いません。


次の画面です。

f:id:crowd_k:20201006124050p:plain

  • Product Name:プロジェクトの名前です(任意の値に設定)
  • Team:プロジェクトを作成するアカウント・チームを選択します
    • Xcodeに設定したApple IDで選択可能なチームから選択できます(後ほどログインに関して説明します)
    • Noneでも開発可能ですが実機でデバックすることができません(後から変更可能)
  • Organization Identifier:アプリを一意に識別する”Bundle Identifier”に用いられる
    • 今回は任意の名称で構いません。アプリを公開する場合には、慎重に作成してください。
    • Organization Identifier + . + Product Name になる
  • Interface:SwiftUIかstoryboardから選択できます
  • Life Cycle:SwiftUI App か、UIKit App Delegate から選択できます
  • Language:コーディングする際の言語を選択する(SwiftとObject-Cから選択可能)

上記の設定が完了すると、プロジェクトを作成する場所(保存先)の設定画面に進みますので、任意の場所を選択してください。


ここまでの設定が完了すると、いよいよXcodeの開発画面が表示されます。

f:id:crowd_k:20201006150357p:plain

実機でデバックするための設定

昔は"Apple Developer Program"という有料プラン(年間 11800円)に加入していることが必須でしたが、現在は無料で実機にデバックすることができます。(ただし以下の制限があります)

  • デバックのみ(リリースは不可能)
  • アプリの有効期限は7日
  • プッシュ通知機能を使用することができない

今回は、無料の方法を説明していきます。
有料/無料の違いで、手順が異なるようです。

1:Apple ID でログインする Xcodeで、Appleのアカウントにログインする必要があります。
メニューバー > Xcode > Preferences > Accounts 画面へ進み、左下の「+」→「Apple ID」→「Continue」の順にクリックします。
f:id:crowd_k:20201007113334p:plain Apple IDの情報を入力し、登録処理を完了させてください。


2:証明書を作成し、キーチェーンに登録する
f:id:crowd_k:20201007112017p:plain メニューバー > Xcode > Preferences > Accounts 画面へ進み、右下の「Manage Certificates…」をクリックします。
f:id:crowd_k:20201007112411p:plain 左下の「+」ボタン →「iOS Development」を選択 → 「Done」をクリックします。

これで、実機でデバックを行うための証明書が作成され、キーチェーンに登録されます。


3:iPhoneに開発元を信用させる

f:id:crowd_k:20201006185419p:plain

上記の部分を接続している自分のiPhoneを選択して実行することでデバックが可能となります。

f:id:crowd_k:20201007133734p:plain

まず、iPhoneMacをUSBで接続します。
そして、接続した実機を選択します。(ここで、任意のエミュレーターを選択すれば画面上で動作を確認することもできます)
再生ボタン:▶ を押下すると実機に対してインストールを行い、デバックが可能となるはずですが、このタイミングでエラーが発生することが多いです。
一例の解決方法を紹介します。


3.1:Bundle Identifierが重複している f:id:crowd_k:20201007120404p:plain
Bundle Identifierが重複しないように複雑なものに変更してください。

3.2:「Team」が指定されていない f:id:crowd_k:20201007121309p:plain
「Team」の設定が"None"になっていたら、登録した自分のApple ID に変更してください。(または、「Team」設定に問題がないか確認してください)


f:id:crowd_k:20201007115711p:plain 上記エラーは初めての操作の場合、必ず発生します。
以下の手順を「接続しているiPhone」で行うとアプリが実行可能になります。

f:id:crowd_k:20201007123059p:plain 1. 「設定」 > 「一般」 > 「プロファイルとデバイス管理」画面を開く
2. 「デベロッパApp」の欄に表示されている「登録したAppleアカウント」をタップする
3. 再び「登録したAppleアカウント」をタップする
4. 表示されるダイアログで「信頼」をタップする


ここまで完了すると、ホーム画面(アプリ一覧画面)でインストールしたアプリの動作確認ができます。
f:id:crowd_k:20201007123406p:plain

おまけ:Provisioning Profile とは

Xcodeを使って、実機に対してビルドする際に必要なのが、Provisioning Profileです。
Provisioning Profile とは、アプリ情報、Apple ID、証明書、実行可能デバイスの情報が紐づいたデータで、Xcode上でアプリを実機用にビルドする際に必要なものになります。

ビルド時に、Provisioning Profile の情報から以下を確認し、問題がない場合はビルドされます。

  • 開発者として登録した証明書がキーチェーンに登録されたPCであること
  • 開発機として登録されているデバイスがインストール対象であること

このような制限を設けることで、アプリが不正に配布されることを防いでいます。

無料でデバックする場合は、プロビジョニングファイルを意識する必要がありませんでしたが、おそらく 「実機でデバックするための設定」の1~3の手順を踏んでいる裏で 作成されているのではないかと推測します。(違っていたらごめんなさい、、、)

"Apple Developer Program"に登録している場合は、Apple DeveloperサイトにUDID(デバイス情報)などを登録し、同サイトで作成、Macへダウンロードする必要があるみたいです。(こちらも詳しく確認したかったのですが、お金に余裕ができてからにします、、、)

さいごに

自作したアプリが自分のiPhoneで動かせるようになると、開発のモチベーションになると思います。
私も便利なアプリを自作し、お金に余裕ができたら"Apple Developer Program"に登録しようと思います!

Copyright © RAKUS Co., Ltd. All rights reserved.