読者です 読者をやめる 読者になる 読者になる

cocoapods-keysでAPI KeyとかGithubに上げたくない値をプロジェクトから切り離す

ios iOSエンジニア育成計画 swift

まるで俺が考えた最強の〇〇みたいな感じになってますが、以下のQiitaの記事のパクリです・・・。

この記事読めばだいたい何がしたいのかわかるので、あまり細かいことは書かないです!

qiita.com


Google Map SDKを使ったプロジェクトをGithubに上げたいなーって思ったことが、この記事の原点になってます。

そのまま何も気にせず上げてしまうと、API KeyがPublicで全体に公開されてしまうんですよね。怖い怖い。

ちなみに、GMSServices.provideAPIKeyってGithubで検索するとAPI Keyがベタでいっぱい書いてあります。怖い怖い。

cocoapods-keysでAPI KeyとかGithubに上げたくない値をプロジェクトから切り離す

そこで出てくるのがcocoapods-keysです。Githubは以下になります。

github.com


インストール方法とかは上のQiitaの記事見るかGithubのREADMEを見れば書いてあります。

cocoapods-keysは何をしてくれるのか?

Qiitaの記事の内容を引用すると、以下のような問題を解決してくれそうなものです。

APIACCESS_KEYやSECRET_KEYなどの環境変数や、アプリ固有の設定値(KEY and VALUE)をソースコードやInfo.plistにハードコーディングせず、プロジェクトから切り離して管理できないか

要は、API KeyとかってハードコーディングしてGithubとかに上げてしまうとセキュリティ的に問題ですよね。

それらの値をプロジェクトから切り離して管理するために使うのが、cocoapods-keysってわけです。

設定した値はkeychainに保存されるみたいで、セキュアに管理されるようですね。あんまりココらへん詳しくないのであれですが・・・。


実際にGoogle Map SDKAPI Keyをプロジェクトから分割するために使ってみたサンプルプロジェクトをGithubに上げてます。

github.com


API Keyの設定を以下のような感じにできます。

GMSServices.provideAPIKey(GooglemapsampleKeys().googleApiKey())


Keys/GooglemapsampleKeys.hというのが実際には生成されており、そこからAPI Keyを参照するような仕組みになってます。

f:id:operando:20150728093646p:plain


ここまでの具体的に流れについては、上で紹介したQiitaの記事がとてもわかりやすくまとまっているので、Githubと合わせて参照してもらえると助かります。

使ってみて疑問に思ったこと

まずこの複数人で使う場合の話。要は仕事のプロジェクトで採用する場合とかですね。

色々考えてみたけど、keychainの扱いやiOSのプロジェクトに詳しくないので、ちゃんとした答えが出なかった。

とりあえず疑問に思ったことは、誰かに聞いてみよう。

まとめ

とりあえずセキュアな値をプロジェクトから分割できる方法があったのは大きな発見だった。

これが複数人で行うプロジェクトでも使えそうなら、結構いいものな気がする。素人感覚で言ってるけど。

こーゆー「セキュアな値Githubに上げたくないなープロジェクトから分割できる方法ないかなー」って考えてみて、調べてみることが大切ですよね。

大きな発見ができた気がして非常に楽しかった!