【Xcode】ビルドとは?実行(Run)との違いと仕組み

【Xcode】ビルドとは?実行(Run)との違いと仕組み

この記事からわかること

  • Xcodeビルド(build)とは?
  • 実行(Run)との違いショートカット
  • Xcodeにおけるビルドの仕組み
  • ビルドフェーズとは?
  • クリーンビルドとは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:Build system

Xcodeにおいて基礎的なビルドに関して知識を整理しておきたかったのでまとめていきます。

ビルドとは?

ビルドという単語はXcodeに限った話ではなくソフトウェア開発などにおいて使われる言葉の1つです。英単語としては「建築する」などといった意味を持つ言葉ですがIT用語としては「ソースコードを実行可能な状態に変換する」といった意味をもちます。

そもそもプログラミング言語は人間にとって扱いやすい形の言語であり、機械側からは読み取ることができません。ソフトウェアとして動作させるためにはこれを機械側から読み取れるデータに変換(コンパイル)する作業が必要になります。「コンパイル=ビルド」といわれることもあるので少しニュアンスが掴みやすいかと思います。

正確にはXcodeではこのビルドというフェーズの一部にコンパイルが含まれています。Xcodeのビルドではコンパイルだけでなくリソース(画像、音声ファイル、設定ファイルなど)のコピーやライブラリ、フレームワークのリンクといったプログラムをアプリとして実行可能な状態に変換するために必要な作業をまとめてビルドと呼んでいるようです。

Xcodeにおけるビルド

Xcodeにおいてのビルドは「スキーム(ビルド設定情報コレクション)で指定されたターゲットを実行可能なバイナリファイル(※)へ変換する」役割を持っているようです。

※バイナリファイル:「0」と「1」で表現されたデータ形式で機械側から読み込めるファイル形式のこと

Xcodeでは常に1つのスキームがアクティブになっており、そのスキーム情報に従い、対象として指定されたターゲットをビルド(またはRun:実行)しています。

ビルドが完了すると「Build Succeeded(=成功)」または「Build Failed(=失敗)」と表示されエラーを吐かずに正常にビルドが完了すればコードに不備がなく、リソースやリンクにも異常のない、「アプリケーションとして動作可能な状態」ということになります。

【Xcode】ビルドとは?実行(Run)との違いと仕組み

ここまでのまとめ

ビルドフェーズ

Xcodeではターゲットごとに指定されたビルドフェーズでビルド中に実行するべきタスクを管理しています。ターゲットを作成した際には自動でビルドフェーズも構成されますが、ここも開発者が自由に追加することが可能になっています。

Xcodeから「TARGET」>「Build Phases」を選択すると設定されているビルドフェースを確認することができます。

【Xcode】ビルドとは?実行(Run)との違いと仕組み

Target Dependencies

ターゲット間の依存関係を設定するためのフェーズ。例えばフレームワーク間の依存関係など

Run Build Tool Plug-ins

ビルドプロセス中に実行する外部ツールを指定するためのフェーズ

Compile Sources

コンパイルするソースコードを指定するためのフェーズ

Link Binary With Libraries

アプリケーションに必要なフレームワークやライブラリをリンクするためのフェーズ

Copy Bundle Resources

アプリケーションバンドルに含まれるリソースファイルをコピーするためのフェーズ

[CP] Check Pods Manifest.lock:CocoaPods使用時

CocoaPodsが管理するライブラリのバージョンを確認するフェーズ。Manifest.lockは、CocoaPodsが使用するライブラリのバージョンを保持するためのファイル。

[CP] Embed Pods Frameworks:CocoaPods使用時

CocoaPodsが管理するライブラリをアプリケーションに埋め込むためのフェーズ

ビルドと実行(Run)の違い

Xcodeでアプリを開発していると実行(Run)という言葉も登場します。両者の違いは以下の通りです。

ビルドはただプログラムを動作可能なファイルに変換するだけであり、実行はビルド後に実際に実行(動作)させます。Macアプリなら開発デバイス、iOSアプリなら接続した実機、もしくは選択したシミュレーターで実行されます。

また「Run」以外にも「Test」「Profile」「Analyze」「Archive」などを行う際にもビルドが行われます。

クリーンビルド

ビルドを行うとDerivedDataと呼ばれるフォルダが生成されます。これは中間データとも呼ばれ、ビルド時に自動で生成される、ログやキャッシュ、インデックスなどが格納されたフォルダのことです。

【Xcode】DerivedDataとは?「Build Failed」の解決方法!

一度ビルドすると生成され、次回のビルドから時間が短縮されるようになります。しかし容量をそれなりに圧迫するのでストレージ的な観点からや、なんらかの原因でビルドがうまくいかない場合などに削除することもあります。

XcodeではプロジェクトごとにDerivedData内のデータファイルを削除するためのクリーンビルドが用意されています。上部メニューの「Product」>「Clean Build Folder」をクリックすることで実行できます。

【Xcode】DerivedDataとは?「Build Failed」の解決方法!

ショートカットコマンド

Xcodeのプロジェクト内ではビルドや実行をすぐに行えるようにショートカットコマンドが用意されています。

「ビルドなし実行」は前回のビルドのまま実行だけをすることができるので時間のかかりがちなビルド時間を短縮することができます。

ビルドが必ず必要な場合はポップアップが表示され、「Build & Run」を促されるので問題ありません。

【Xcode】ビルドとは?実行(Run)との違いと仕組み

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index