Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hisaya-sugita/015ecdee0320e25d81f7e2a27dd5847e to your computer and use it in GitHub Desktop.
Save hisaya-sugita/015ecdee0320e25d81f7e2a27dd5847e to your computer and use it in GitHub Desktop.

これ見ればiOSアプリの環境構築に必要なツールの導入とプロジェクト毎のセットアップができます。 ※セットアップはプロジェクトのルートフォルダで作業することを想定。

必要環境(必要なツール)

  • rbenv
  • bundler
  • carthage、cocoapods
  • swiftlint
  • swiftgen
  • mergepbx

rbenv

Rubyのバージョンを管理してくれるやつ。 (たいていは開発者全員でRubyのバージョンを揃えて開発に取り組む)

複数のRubyのバージョンを入れて、たとえばプロジェクトに合わせてバージョンを自由に変えることができる(MacOSに標準でインストールされているRubyではバージョンを選べない)。

具体的には… 特定のディレクトリ配下に特定のバージョンを適応するといった制限を掛けてくれる。それによって指定したディレクトリ(プロジェクト)外には影響を与えず、環境を隔離することができる。

<導入方法>

rbenvとそのプラグインruby-buildをインストール。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

以下を .bash_profile に追記。

.bash_profile

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

変更内容をPCに反映 $ source ~/.bash_profile

正常にインストールできているか確認

$ rbenv --version 
rbenv 0.0.0

<セットアップ>

$ rbenv local 0.0.0

rbenvを使ってrubyのバージョンの切り替える

bundler

gemパッケージ(Gemfileに書くやつ)の管理ツール。

例)cocoapods、fastlane...

<導入方法>

bundlerのインストール $ gem install bundler rbenvをリフレッシュ $ rbenv rehash 正常にインストールされたか確認

$ bundle -v 
Bundler version 0.0.0

<セットアップ>

Gemfileを生成 $ bundler init

Gemfileにリスト化したgemを一括インストール $ bundle install --path .bundle ※パス指定オプションを付けないとグローバルにインストールされてしまうので注意

carthage、cocoapods

ライブラリを管理するやつ。

  • carthage:ライブラリを入れるのがcocoapodsよりちょっとめんどい(慣れれば簡単)。事前にGitからごっそりとってきてビルドするので、cocoapodsよりも毎回のビルド時間が短縮できる。ライブラリを入れるたびにupdateが必要(めっちゃ時間かかる…)。"カーセッジ"と呼ぶ人もいれば、"カルタゴ"と呼ぶ人もいる。
  • cocoapods:ライブラリを入れるのが簡単。ビルドするたびにGitからライブラリをとってくるので、毎回のビルドにcarthageよりも時間がかかる。ライブラリを入れるたびにupdateが必要(時間かからない)

みたいな違いがある。

基本的にはcarthageで管理、carthageで配布されてないライブラリはcocoapodsで管理すると結構効率が良い。

<導入方法>

carthage

carthageをインストール $ brew install carthage

cocoapods

cocoapodsをインストール $ gem install cocoapods

cocoapodsをセットアップ $ pod setup

<セットアップ>

carthage

Cartfileを生成 $ touch Cartfile

Cartfileに必要なライブラリを記述してから、ビルド。 $ carthage bootstrap --platform iOS --no-use-binaries

Xcodeに反映 Xcodeのプロジェクトにビルドしたライブラリを導入する

cocoapods

Podfileを生成 $ pod init

Podfileに必要なライブラリを記述してから、ビルド。 $ bundle exec pod install

swiftlint

文法などのコードレビューを勝手にやってくれるやつ。 怪しいところとか、バグになりそうなところ、古いコードなど、ガンガン指摘してくれる。超便利。

※Homebrewで導入するとあとあと面倒なことの原因になったりするので、cocoapodsで入れることを推奨。

※SwiftLintの警告の内容がよくわからないって時はこちら → SwiftLintの全ルール集

<導入方法・セットアップ>

Podfileに以下の文言を追加 pod 'SwiftLint'

cocoapodsをビルド $ bundle exec pod install

Build Phasesに下記文言を追加してXcodeをビルド

Build Phases_Script

if which "${PODS_ROOT}/SwiftLint/swiftlint" >/dev/null; then
"${PODS_ROOT}/SwiftLint/swiftlint"
else
echo "SwiftLint does not exist, download from https://github.com/realm/SwiftLint"
fi

swiftgen

プロジェクト内のリソース管理を楽にしてくれます。 (コードから簡単に呼び出せるようになります)

参考:[SwiftGenとは] (https://qiita.com/usamik26/items/292ae8ab7cb491309932)

<導入方法・セットアップ>

Podfileに以下の文言を追加 pod 'SwiftGen'

cocoapodsをビルド $ bundle exec pod install

Build Phasesに下記を追加してXcodeをビルド

Build Phases_Script

$PODS_ROOT/SwiftGen/bin/swiftgen

Build Phases_Output Files

$(SRCROOT)/{プロジェクト名}/Resources/Generated/LocalizableStrings.swift
$(SRCROOT)/{プロジェクト名}/Resources/Generated/StoryboardScenes.swift 
$(SRCROOT)/{プロジェクト名}/Resources/Generated/StoryboardSegues.swift
$(SRCROOT)/{プロジェクト名}/Resources/Generated/Assets.swift

swiftgen.ymlを追加

ib:
  inputs: {プロジェクト名}/UserInterface
  outputs:
    - templateName: scenes-swift4
      output: {プロジェクト名}/Resources/Generated/StoryboardScenes.swift
    - templateName: segues-swift4
      output: {プロジェクト名}/Resources/Generated/StoryboardSegues.swift
xcassets:
  inputs:
    - {プロジェクト名}/Resources/Assets.xcassets
  outputs:
    - templateName: swift4
      output: {プロジェクト名}/Resources/Generated/Assets.swift
strings:
    inputs: {プロジェクト名}/Resources/Strings/Localizable.strings
    outputs:
        templateName: structured-swift4
        output: {プロジェクト名}/Resources/Generated/LocalizableStrings.swift

mergepbx

xcodeのプロジェクトファイル(XXX.xcodeproject)のコンフリクトが発生した時に、マージを簡単にしてくれる(といっても難しい)やつ。 複数人で開発してるとプロジェクトファイルが嫌になるほどコンフリクト起こすので、必須。

<導入方法>

margepbxをインストール

$ git clone https://github.com/simonwagner/mergepbx
$ cd mergepbx/
$ ./build.py
$ sudo cp mergepbx /usr/local/bin/

.gitconfigに以下を追加

# driver for merging Xcode project files
[merge "mergepbx"]
name = XCode project files merger
driver = mergepbx %O %A %B

<セットアップ>

.gitattributesに以下を追加

*.pbxproj binary
*.pbxproj merge=mergepbx

TODO

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment