2016年2月6日土曜日

アカウント名等の入ったソースをGitHubにアップしないようにする工夫

アカウント名などをベタ書きで指定している場合に、誤ってGitHubにその部分のソースを公開しないようにするための工夫。

→Parameters.swiftのようなクラスを作って、そのソースだけを.gitignoreで管理対象外にしています。これだとリモートリボジトリ上のソースだけではビルドが通らないのですが、うっかり公開してしまう恐れは減ります。

Parameters.swiftで

class Parameter: NSObject {
    static var sharedManager: Parameter = {
        return Parameter()
    }()
    private override init() {

    }
    let username = "user123"
}

のようにしておいて、

使いたい場所で、
let string = Parameter.sharedManager.username
のようにして取り出します。


terminalを開いて
$ touch .gitignore
$ vim .gitignore
i
Parameters.swift
[esc]
: wq
とすると、コミットを作るときにParameters.swiftを選択できなくなっています。

ファイルとして見えないのであれ?作れたのかな?と不安になりますが、vimで開いて保存されていれば実体としては保存できていると納得できますね。

Parameters.swiftだけを共同作業者に共有してプロジェクトに追加してもらえば、通常どおりビルドできるという流れになります。

最終的にはKeychainで管理することになるかと思いますが、デバッグ中はベタ書きで済ますことが多いと思うので、簡易手段としてこんなやり方をしています。

Parameterの中でKeychainの取得操作を行うようにアップデートすることで、後で文字列をセットする部分を書き直ししなくてよいというメリットもありますね。

El CapitanでCarthageを導入する手順

El Capitan上の開発環境でCocoaライブラリ管理ツールのCarthageを導入しました。

CocoaPodsよりもビルド時間を短縮できることがメリットです。Podsの場合はビルド毎にライブラリ分もビルドするため、ちょっとしたコードの修正を行って再ビルドしたときでもトータルの時間がかかってしまいます。Cartageは一度ビルドすれば、それを再利用できるので、そこの時間をカットできるのです。
開発期間中はおびただしい回数のビルドを行うので、ちょっとした時間の短縮でも大きなメリットになります。


さて、導入手順ですが、基本的には下記の記事で説明されている通りに進めました。

・ HomebrewはEl Capitanへアップグレートする前に入れておく

・Carthageを使ってビルド時間を短縮しよう

全体の流れとしては、Homebrewのインストール/アップデート→Carhtageの導入という流れになります。

まず、Homebrewの準備からです。

El Capitanのインストール後にHomebrewをupdateしたかったのですが、一発で出来なかったので、次のように作業しました。

brew updateを実行すると、
Error: The /usr/local directory is not writable.
というメッセージが出ました。

権限の修正。
sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
もう一度、
brew updateを実行

brew install carthageを実行すると、
Warning: carthage-0.12 already installed, it's just not linked

"not liked"!?

brew doctorでヒントを表示。
brew link carthage
brew prune /usr/local/bin/apm
brew prune /usr/local/bin/atom
を実行。
おしまい。

次に、Carthageの準備です。

Run scriptで、Run script only when installingに✔を入れて、
Embeded frameworkにもフレームワークを登録しました。
これでビルドが通りました。

実際にビルドをしてみると、とても快適です。メジャーなOSSは、Carthageに対応しているようなので、今後はCarthageを積極的に使っていこうと考えています。