carthageについて知りたいn個のこと

24
Carthageについて知りたいn個のこと @ikesyo 関西モバイルアプリ研究会 #5, 2015(08(26 Wed #関モバ

Upload: syo-ikeda

Post on 16-Apr-2017

9.595 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Carthageについて知りたいn個のこと

Carthageについて知りたいn個のこと@ikesyo

関西モバイルアプリ研究会!#5,!2015(08(26!Wed

#関モバ

Page 2: Carthageについて知りたいn個のこと

@ikesyo

!ikesyo_nnid

いけしょー/池田翔京都でフリーランスのiOSエンジニア(時々Android)しています

フリュー㈱のモバイル開発のチームにジョイン中。

Page 3: Carthageについて知りたいn個のこと

Reac%veCocoa/Carthageのコミッター(Collaborator)やってます2✨

Page 4: Carthageについて知りたいn個のこと
Page 5: Carthageについて知りたいn個のこと

HimotokiというJSONデコーダーを作ってます+!

• GitHub

• SlideShare

Page 6: Carthageについて知りたいn個のこと

今日はCarthageについて話します(!

Page 7: Carthageについて知りたいn個のこと

CarthageCocoaプラットフォーム用の分散型依存性管理ツール

Page 8: Carthageについて知りたいn個のこと

名前の由来• “パッケージ(Package)”と発音が似てるから(英語の発音はカーセッジみたいな感じです),!

• [Ques1on],Why,name,Carthage?,:,Issue,#549

I,suggested,“Carthage,”,because,it’s,vaguely,like,“package”,with,some,consonants,swapped,out.

—"Rob"Rix"(@robrix)

Page 9: Carthageについて知りたいn個のこと
Page 10: Carthageについて知りたいn個のこと

Cartfile

# Require version 2.3.1 or latergithub "ReactiveCocoa/ReactiveCocoa" >= 2.3.1

# Require version 1.xgithub "Mantle/Mantle" ~> 1.0 # (1.0 or later, but less than 2.0)

# Require exactly version 0.4.1github "jspahrsummers/libextobjc" == 0.4.1

# Use the latest versiongithub "jspahrsummers/xcconfigs"

# Use the branchgithub "jspahrsummers/xcconfigs" "branch"

# Use a project from GitHub Enterprisegithub "https://enterprise.local/ghe/desktop/git-error-translations"

# Use a project from any arbitrary server, on the "development" branchgit "https://enterprise.local/desktop/git-error-translations2.git" "development"

# Use a local projectgit "file:///directory/to/project" "branch"

Page 11: Carthageについて知りたいn個のこと

Cartfile

• !"次のバージョンからGitHub"EnterpriseのリポジトリもGitHub

同様に扱えるようになります"!

• 実装しました"✨"Add"support"for"GitHub"Enterprise"by"ikesyo"

5"Pull"Request"#657

github "https://enterprise.local/ghe/desktop/git-error-translations"

Page 12: Carthageについて知りたいn個のこと

Cartfile.private

テストターゲット用の依存性などFramework自体のビルドに必要ないものはこちらに。github "Quick/Quick" ~> 0.3.1github "Quick/Nimble" "v1.0.0-rc.1"github "AliSoftware/OHHTTPStubs" ~> 4.2.0

Page 13: Carthageについて知りたいn個のこと

Cartfile.resolved

Gemfile.lockやPodfile.lockと同様のもの。リポジトリにコミットしましょう。

github "robrix/Box" "1.2.2"github "Quick/Nimble" "v0.4.2"github "jdhealy/PrettyColors" "v2.0.0"github "Quick/Quick" "v0.3.1"github "thoughtbot/Runes" "v2.0.0"github "jspahrsummers/xcconfigs" "0.8.1"github "Carthage/ReactiveTask" "0.7-beta.3"github "antitypical/Result" "0.4.4"github "Carthage/Commandant" "0.6.1"github "ReactiveCocoa/ReactiveCocoa" "v3.0-RC.1"github "thoughtbot/Argo" "v1.0.4"

Page 14: Carthageについて知りたいn個のこと

Commands

carthage updatecarthage bootstrapcarthage checkoutcarthage buildcarthage archivecarthage copy-frameworks

Page 15: Carthageについて知りたいn個のこと

carthage(checkout

• --use-ssh:#チェックアウト時にHTTPSではなくSSHを使用する。

• --use-submodules:#依存プロジェクトをGitのサブモジュールとして追加する。#

• --no-use-binaries:#ビルド済みバイナリーのダウンロードをせず、必ずローカルでビルドさせる。

• --use-submodules#を指定してもこれを指定しないと、ビルド済みバイナリーが使われてサブモジュールが使われないので要注意。

• 次のバージョンで変わります:#h,ps://github.com/Carthage/Carthage/pull/

692

Page 16: Carthageについて知りたいn個のこと

carthage(update/bootstrap

• --configuration:#DebugやReleaseの指定。

• --platform:#ios,#mac,#watchosなどプラットフォーム指定。今のところ1つだけ。

• --no-build:#Cartfile.resolvedの更新、チェックアウトはするがビルドはしない。

• carthage checkoutのオプション一式

Page 17: Carthageについて知りたいn個のこと

carthage(build

• --configuration

• --platform

• --no-skip-current:#依存ライブラリに加えて、(Cartfileを持っている)自分自身のプロジェクトもビルドする。

Page 18: Carthageについて知りたいn個のこと

carthage(archive

carthage build --no-skip-currentcarthage archive YourFrameworkName

とすることで!YourFrameworkName.framework.zip!が生成されるので、これをGitHub!Releaseに添付すればビルド済みバイナリーとして使ってくれるようになります。!!

Page 19: Carthageについて知りたいn個のこと

carthage(copy,frameworks

• iOSで“Embedded+Binaries”に追加する代わりに使用するもの。App+Storeへのサブミット時の不具合を回避するために必須。

• 不具合とは:+.frameworkにシミュレーター用バイナリーが含まれていると申請できない。

• h<p://www.openradar.me/radar?id=6409498411401216

Page 20: Carthageについて知りたいn個のこと

GitHubのアクセストークン• ビルド済みバイナリーのダウンロードの関係でGitHub(APIを使用している。

• その際に使用するアクセストークンを(GITHUB_ACCESS_TOKEN(環境変数で指定できる。

• GITHUB_ACCESS_TOKEN=XXXXXXXXXXXXX carthage update

•GITHUB_ACCESS_TOKEN="github.com=XXXXXXXXXXXXX,enterprise.local/ghe=YYYYYYYYY" carthage update

Page 21: Carthageについて知りたいn個のこと

Universal*framework*target

• OS$X,$iOS,$watchOSのマルチプラットフォームを1つのターゲットでビルドできるターゲット設定。

• PRがマージされたので次のバージョンでビルドできるようになります。

• Support$universal$framework$targets.$by$neonichu$@$Pull$Request$#622

• こんなのが使えます

• hEps://github.com/mrackwitz/xcconfigs

• 豆知識:$この作者さんはCocoaPods$0.36でSwiO/Dynamic$Frameworkの対応した人です。

Page 22: Carthageについて知りたいn個のこと

!!快適なCarthageライフをお過ごし下さい!"

Page 23: Carthageについて知りたいn個のこと

Ques%ons❓

Page 24: Carthageについて知りたいn個のこと

Thank&you❗"