🍣

XcodeGen ってなんだっけ

に公開

project.yml なる設定ファイルに、Xcodeプロジェクトの構成情報を書いておくと、後々 xcodegen generate なるコマンドを叩くだけで、.xcodeproj を生成してくれるツール。

そもそもなぜ必要か

.xcodeproj を Xcode の GUI からいじっていくより、project.ymlなどで定義する方がいいのは主に以下の二つの理由。

  • 宣言的なので、何がどのような設定になっているかわかりやすい。(まあ、エンジニア的に見ると)

  • project.ymlxcogegen generate っていう感じで、.xcodeproj を生成していくので、コンフリクトが起きづらい

    • もちろん、.xcodeproj.gitignore に突っ込んでおく。お前なんか見なくても、みんなで足並み揃えるツールがあるんだ!

.xcodeproj とはなんなのか

拡張子のようなものがついているけど、大前提こいつはまずディレクトリ。そんでもってそのディクトりに入っているのが、以下の三つ。

  • project.pbxproj(プロジェクトの中核となるファイル)
  • xcuserdata/
  • xcshareddata/

project.pbxproj

こいつが唯一骨のある、中核的なファイル。ビルド設定だったり、依存関係だったり、ソースファイルの参照とか、重要なことは全てここにのっている。でもファイルの中は、基本的に人間様が直接いじれる代物ではないので、Xcode 上の GUI から設定してくのが一般的。なんか前に、このプロジェクトファイルを直接編集していくやばやばエンジニアがいただけど。

xcuserdata/

これは各開発者ごとの情報を保存するディレクトリ。例えば、開いたファイルとか、検索履歴とか、多分そういうやつ。まあ、基本的にチーム開発ではいらないので、.gitignore するよね。

xcshareddata/

これはチームでスキームとかランチャー設定を入れるディレクトリ。これはバージョン管理下に置くよね。

ランチャー設定っていうのは、スキームをどのように実行するかっていうあれ。実行時の環境変数とか、デバッガ設定とか、実行バイナリ設定とか、そういうやつ。

というかこれ XcodeGen 的なものは Apple さんから出ててもいいんじゃないかな

と、思ったけど、GUI の使い手である Apple 様なので、現時点ではそんなものはなさそう。宣言的UI!とかお話をされていたので、あるかと思ってたけど…

Discussion