SlideShare a Scribd company logo
1 of 24
Download to read offline
Carthageについて知りたいn個のこと
@ikesyo
関西モバイルアプリ研究会!#5,!2015(08(26!Wed
#関モバ
@ikesyo
!ikesyo_nnid
いけしょー/池田翔
京都でフリーランスのiOSエンジニア
(時々Android)しています
フリュー㈱のモバイル開発の
チームにジョイン中。
Reac%veCocoa/Carthageの
コミッター(Collaborator)やってます2✨
HimotokiというJSONデコーダーを作ってます+!
• GitHub
• SlideShare
今日はCarthageについて話します(!
CarthageCocoaプラットフォーム用の
分散型依存性管理ツール
名前の由来
• “パッケージ(Package)”と発音が似てるから(英語の発音はカー
セッジみたいな感じです),!
• [Ques1on],Why,name,Carthage?,:,Issue,#549
I,suggested,“Carthage,”,because,it’s,vaguely,like,“package”,with,
some,consonants,swapped,out.
—"Rob"Rix"(@robrix)
Cartfile
# Require version 2.3.1 or later
github "ReactiveCocoa/ReactiveCocoa" >= 2.3.1
# Require version 1.x
github "Mantle/Mantle" ~> 1.0 # (1.0 or later, but less than 2.0)
# Require exactly version 0.4.1
github "jspahrsummers/libextobjc" == 0.4.1
# Use the latest version
github "jspahrsummers/xcconfigs"
# Use the branch
github "jspahrsummers/xcconfigs" "branch"
# Use a project from GitHub Enterprise
github "https://enterprise.local/ghe/desktop/git-error-translations"
# Use a project from any arbitrary server, on the "development" branch
git "https://enterprise.local/desktop/git-error-translations2.git" "development"
# Use a local project
git "file:///directory/to/project" "branch"
Cartfile
• !"次のバージョンからGitHub"EnterpriseのリポジトリもGitHub
同様に扱えるようになります"!
• 実装しました"✨"Add"support"for"GitHub"Enterprise"by"ikesyo"
5"Pull"Request"#657
github "https://enterprise.local/ghe/desktop/git-error-translations"
Cartfile.private
テストターゲット用の依存性などFramework自体のビルドに必要
ないものはこちらに。
github "Quick/Quick" ~> 0.3.1
github "Quick/Nimble" "v1.0.0-rc.1"
github "AliSoftware/OHHTTPStubs" ~> 4.2.0
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"
Commands
carthage update
carthage bootstrap
carthage checkout
carthage build
carthage archive
carthage copy-frameworks
carthage(checkout
• --use-ssh:#チェックアウト時にHTTPSではなくSSHを使用する。
• --use-submodules:#依存プロジェクトをGitのサブモジュールとして追加する。#
• --no-use-binaries:#ビルド済みバイナリーのダウンロードをせず、必ずロー
カルでビルドさせる。
• --use-submodules#を指定してもこれを指定しないと、ビルド済みバイナリ
ーが使われてサブモジュールが使われないので要注意。
• 次のバージョンで変わります:#h,ps://github.com/Carthage/Carthage/pull/
692
carthage(update/bootstrap
• --configuration:#DebugやReleaseの指定。
• --platform:#ios,#mac,#watchosなどプラットフォーム指定。
今のところ1つだけ。
• --no-build:#Cartfile.resolvedの更新、チェックアウト
はするがビルドはしない。
• carthage checkoutのオプション一式
carthage(build
• --configuration
• --platform
• --no-skip-current:#依存ライブラリに加えて、(Cartfileを持
っている)自分自身のプロジェクトもビルドする。
carthage(archive
carthage build --no-skip-current
carthage archive YourFrameworkName
とすることで!YourFrameworkName.framework.zip!が生成さ
れるので、これをGitHub!Releaseに添付すればビルド済みバイナ
リーとして使ってくれるようになります。!!
carthage(copy,frameworks
• iOSで“Embedded+Binaries”に追加する代わりに使用するもの。
App+Storeへのサブミット時の不具合を回避するために必須。
• 不具合とは:+.frameworkにシミュレーター用バイナリーが含
まれていると申請できない。
• h<p://www.openradar.me/radar?id=6409498411401216
GitHubのアクセストークン
• ビルド済みバイナリーのダウンロードの関係でGitHub(APIを使用し
ている。
• その際に使用するアクセストークンを(GITHUB_ACCESS_TOKEN(環
境変数で指定できる。
• GITHUB_ACCESS_TOKEN=XXXXXXXXXXXXX carthage update
•
GITHUB_ACCESS_TOKEN="github.com=XXXXXXXXXXXXX,ent
erprise.local/ghe=YYYYYYYYY" carthage update
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の対応
した人です。
!!快適なCarthageライフを
お過ごし下さい!"
Ques%ons❓
Thank&you❗"

More Related Content

What's hot

Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目cct-inc
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例Tetsutaro Watanabe
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと増田 亨
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
 
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送Google Cloud Platform - Japan
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOpsMariOhbuchi
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのかJDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか株式会社MonotaRO Tech Team
 
アドテク勉強会
アドテク勉強会アドテク勉強会
アドテク勉強会Shoho Kozawa
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考えるAtsushi Nakamura
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Takeshi Fukuhara
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントNaoto Tamiya
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる虎の穴 開発室
 

What's hot (20)

Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送
[Cloud OnAir] BigQuery で実現する Smart Analytics Platform 2019年10月24日 放送
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのかJDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか
JDMC LT#1 - なぜモノタロウでデータマネジメントが必要になったのか
 
マイクロソフトが考えるAI活用のロードマップ
マイクロソフトが考えるAI活用のロードマップマイクロソフトが考えるAI活用のロードマップ
マイクロソフトが考えるAI活用のロードマップ
 
アドテク勉強会
アドテク勉強会アドテク勉強会
アドテク勉強会
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
 

Viewers also liked

How to handle bitcode
How to handle bitcodeHow to handle bitcode
How to handle bitcodeSyo Ikeda
 
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバiOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバSyo Ikeda
 
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話将之 小野
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercariVishal Banthia
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x AndroidToshiyuki Hirata
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテストHiroshi Kikuchi
 

Viewers also liked (6)

How to handle bitcode
How to handle bitcodeHow to handle bitcode
How to handle bitcode
 
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバiOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
 
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
iOSアプリのライブラリ依存管理ツールとして Swift Package Managerを使うのは まだしばらく先かなと思った話
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
JUnit5とAndroidのテスト
JUnit5とAndroidのテストJUnit5とAndroidのテスト
JUnit5とAndroidのテスト
 

Similar to Carthageについて知りたいn個のこと

SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよSwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよSyo Ikeda
 
Dynamic frameworks tips
Dynamic frameworks tipsDynamic frameworks tips
Dynamic frameworks tipsSyo Ikeda
 
Himotoki: A type-safe JSON decoding library #関モバ
Himotoki: A type-safe JSON decoding library #関モバHimotoki: A type-safe JSON decoding library #関モバ
Himotoki: A type-safe JSON decoding library #関モバSyo Ikeda
 
Next.js Storybook Driven Development
Next.js Storybook Driven DevelopmentNext.js Storybook Driven Development
Next.js Storybook Driven DevelopmentTakuya Tejima
 
アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールアプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールKeishi Hosoba
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboHiroshi SHIBATA
 
20131210 QZSS Ideathon 2013
20131210 QZSS Ideathon 201320131210 QZSS Ideathon 2013
20131210 QZSS Ideathon 2013Taichi Furuhashi
 

Similar to Carthageについて知りたいn個のこと (7)

SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよSwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよ
 
Dynamic frameworks tips
Dynamic frameworks tipsDynamic frameworks tips
Dynamic frameworks tips
 
Himotoki: A type-safe JSON decoding library #関モバ
Himotoki: A type-safe JSON decoding library #関モバHimotoki: A type-safe JSON decoding library #関モバ
Himotoki: A type-safe JSON decoding library #関モバ
 
Next.js Storybook Driven Development
Next.js Storybook Driven DevelopmentNext.js Storybook Driven Development
Next.js Storybook Driven Development
 
アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールアプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツール
 
GitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO PepaboGitHub Enterprise with GMO Pepabo
GitHub Enterprise with GMO Pepabo
 
20131210 QZSS Ideathon 2013
20131210 QZSS Ideathon 201320131210 QZSS Ideathon 2013
20131210 QZSS Ideathon 2013
 

More from Syo Ikeda

Xcode and iTC submission topics
Xcode and iTC submission topicsXcode and iTC submission topics
Xcode and iTC submission topicsSyo Ikeda
 
Swift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSwift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSyo Ikeda
 
ObjectMapperでJSONマッピング
ObjectMapperでJSONマッピングObjectMapperでJSONマッピング
ObjectMapperでJSONマッピングSyo Ikeda
 
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18Syo Ikeda
 
var RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + Swiftvar RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + SwiftSyo Ikeda
 

More from Syo Ikeda (6)

SwiftLint
SwiftLintSwiftLint
SwiftLint
 
Xcode and iTC submission topics
Xcode and iTC submission topicsXcode and iTC submission topics
Xcode and iTC submission topics
 
Swift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSwift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansai
 
ObjectMapperでJSONマッピング
ObjectMapperでJSONマッピングObjectMapperでJSONマッピング
ObjectMapperでJSONマッピング
 
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
 
var RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + Swiftvar RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + Swift
 

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