Quantumleap
621 words
3 minutes
Xcodeで秘密鍵をソースコードにベタ書きしたいとき

秘密鍵の取り扱い#

大前提として、秘密鍵をファイルにそのまま平文で書くことは全く推奨されません。

そのファイルが洩れれば、即座にセキュリティが崩壊することになるからです。

一般的には.envなどで対応することが多いと思うのですが、Xcode にはそんな嬉しい機能がありません。

正確には起動時に実行されるスキーマを変更すれば環境変数を設定することができるのですが、それをしても秘密鍵が書き込まれるのが*.swiftになるか*.xcodeprojになるかの違いしかないので意味がありません。

ソースコード自体がプライベートなら別に問題ないのですが、誰しもが利用できるオープンソースでありたいわけです。

じゃあどうするか#

たとえばSecrets.swiftというファイルを作成し、そこに秘密鍵を書き込んでおいてそのファイルをgitの管理から外してしまうという手があります。

一件、これで問題なさそうなのですが、これをやるとプロジェクトをクローンした人がファイルを作成することがわからなければビルドエラーがでてしまいます。

つまり、ファイルはgitで管理しないが、何も知らずにビルドしてもビルドエラーがでないようにしたい、というわけです。そういう無理難題、通す方法があるのでしょうか。

Pre-actions を利用する#

Xcode にはビルド時などに、ビルドが走る前にスクリプトを実行できるという神機能があります。スクリプトが実行できるので、スクリプト内から Python を走らせたりもできます。

これが利用できないでしょうか?

つまり、Secrets.swiftがあるなら何もしない、なければ空のテンプレートファイルを作成するというようなスクリプトを書いておけば、ビルドすれば勝手に秘密鍵として空文字が指定されたファイルが作成され、そのファイルでビルドが進むという具合です。

秘密鍵が空なら当然どこかでエラーがでるのですが、これも秘密鍵のパラメータが空なら警告を出すようなスクリプトを書いておけばよいわけです。

Xcodeで秘密鍵をソースコードにベタ書きしたいとき
https://fuwari.vercel.app/posts/2022/09/xcode/
Author
tkgling
Published at
2022-09-21