Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Article information
RevisionsShow article in Markdown
Report article
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

This post is Private. Only a writer or those who know its URL can access this post.

posted at

updated at

チーム開発でXcodeGenを使う目的とメリット

環境

今回実施する千葉の環境
OS:10.14.6
Xcode:11.3.1
Swift:5.1.3

本日お話、実践すること

XcodeGenとはなにか?
どうしてiOSアプリのチーム開発にXcodeGenを使うのか?
XcodeGenを使わなかった場合、使った場合の実践

XcodeGenとは?

Xcode用のプロジェクトジェネレーターツールです
できることや詳細は公式ページ参照
https://github.com/yonaskolb/XcodeGen

XcodeGenを使用せずにチーム開発で発生すること

iOSアプリをチームで開発するにあたり、コンフリクトが発生することが多々あります。
意図的に避けられる運用方法次第で意図的にコンフリクトの発生を減らすことはできますが
Xcodeの(仕組み/構造)上ファイルやグループを移動、追加した際にproject.pbxprojの内容が書き換えられてしまいます。
project.pbxprojが無いとXcode上でアプリを開くことはできませんがそれが故に人によって内容が変わってしまい
結果的にコンフリクトが多発してしまうことになってしまいます。

XcodeGenを利用すると何がどう変わるのか?メリデメは?

前述したようにproject.pbxprojをgitで管理しなければいけないという構造上コンフリクトを避けるためにはそれなりのコストが必要となっていました。
しかし、XcodeGenを利用することによりproject.pbxprojをgitの管理対象から外し、必要に応じて作成し直すということが可能となります!

XcodeGenで実施すること

project.pbxprojをgitで管理しない代わりにproject.ymlというYAML形式の設定ファイルを作成し、XcodeGenのコマンドを実行することで
project.ymlからproject.pbxprojの作成をすることが可能となります。
コマンドを実行することで都度project.ymlの設定を読み込みproject.pbxprojを作成することになるので結果、コンフリクトを防ぐことが可能となります!
project.ymlはプロジェクトの構成を記載するものとなるので一度設定位をしてしまえばプロジェクトの構成が変わらない限り変更することが少ないファイルとなります!

メリデメ

  • メリット
    • project.pbxproj関連でのコンフリクトを防ぐことができるようになる
  • デメリット
    • ブランチを変更した際など都度XcodeGenのコマンドを実行し、project.pbxprojを生成し直す必要がある

まとめ

短めではありますが何故チーム開発でXcodeGenを利用するのかを説明しました。
これからXcodeGenを利用しなかった場合とした場合での実践をしていきます!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Article information
RevisionsShow article in Markdown
Report article
Help us understand the problem. What are the problem?