秘密鍵の取り扱い
大前提として、秘密鍵をファイルにそのまま平文で書くことは全く推奨されません。
そのファイルが洩れれば、即座にセキュリティが崩壊することになるからです。
一般的には.env
などで対応することが多いと思うのですが、Xcode にはそんな嬉しい機能がありません。
正確には起動時に実行されるスキーマを変更すれば環境変数を設定することができるのですが、それをしても秘密鍵が書き込まれるのが*.swift
になるか*.xcodeproj
になるかの違いしかないので意味がありません。
ソースコード自体がプライベートなら別に問題ないのですが、誰しもが利用できるオープンソースでありたいわけです。
じゃあどうするか
たとえばSecrets.swift
というファイルを作成し、そこに秘密鍵を書き込んでおいてそのファイルをgit
の管理から外してしまうという手があります。
一件、これで問題なさそうなのですが、これをやるとプロジェクトをクローンした人がファイルを作成することがわからなければビルドエラーがでてしまいます。
つまり、ファイルはgit
で管理しないが、何も知らずにビルドしてもビルドエラーがでないようにしたい、というわけです。そういう無理難題、通す方法があるのでしょうか。
Pre-actions を利用する
Xcode にはビルド時などに、ビルドが走る前にスクリプトを実行できるという神機能があります。スクリプトが実行できるので、スクリプト内から Python を走らせたりもできます。
これが利用できないでしょうか?
つまり、Secrets.swift
があるなら何もしない、なければ空のテンプレートファイルを作成するというようなスクリプトを書いておけば、ビルドすれば勝手に秘密鍵として空文字が指定されたファイルが作成され、そのファイルでビルドが進むという具合です。
秘密鍵が空なら当然どこかでエラーがでるのですが、これも秘密鍵のパラメータが空なら警告を出すようなスクリプトを書いておけばよいわけです。