SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
iOSでのFramework導入のおさらい
@ikesyo
関西モバイルアプリ研究会!#4,!2015)07)21!Tue
#関モバ
@ikesyo
!ikesyo_nnid
いけしょー/池田翔
京都でフリーランスのiOSエンジニア
(時々Android)しています
現在はフリュー㈱のモバイル開発の
チームにジョイン中。
Swi$/Reac*veCocoaで書いています。
Reac%veCocoa/Carthageの
コミッター(Collaborator)やってます2✨
HimotokiというJSONデコーダーを作ってます
• GitHub
• SlideShare
⛵!世はSwi%/Dynamic!Framework時代!⛵
私、iOS$7のサポートを切れるようになったら
Frameworkでライブラリを導入するんだ。$!
でもXcode&4/5の時代からのプロジェクトに
どうやったらFrameworkを導入できるの?&!
Frameworkの導入方法
• !"CocoaPods((>=(0.36)
• ""Carthage
• #"CocoaSeeds(for(iOS(7
1.#CocoaPods
• みんな大好きCocoaPods先生
• 0.36から-use_frameworks!-というオプションでFrameworkの導入に
対応
• CocoaPods-0.36-4-Framework-and-Swi8-Support-4-CocoaPods-Blog
• 一番簡単です
# Podfile
use_frameworks!
pod "Alamofire", "~> 1.2.0"
1.#CocoaPods
後はソース内で!import!するだけ
import Alamofire
Alamofire.request(.GET, "http://httpbin.org/get")
2.#Carthage
• CocoaPodsのブラックボックス感が好きじゃないという人に
• 依存性管理・ビルドはしてくれるけどプロジェクトへの組み込みは自分で
設定する
• 名前の由来は“パッケージ(Package)”と発音が似てるから(英語の発音はカ
ーセッジみたいな感じです)
• [Ques3on]6Why6name6Carthage?6<6Issue6#549
I6suggested6“Carthage,”6because6it’s6vaguely6like6“package”6with6some6
consonants6swapped6out.
2.#Carthage
• Cartfileで依存ライブラリを定義したら$ carthage updateで
ライブラリを取得、ビルド
• Carthage/Build/iOSにFrameworkができあがっている
# Cartfile
github "Alamofire/Alamofire" ~> 1.2.0
2.#Carthage
• Xcodeのターゲット設定の“General”./>.“Linked.Frameworks.and.
Libraries”に各.frameworkをドラッグ&ドロップ
• Xcodeのターゲット設定の“Build.Phases”の+アイコンから“New.Run.
Script.Phase”を選択し、スクリプトの中身として以下をペースト
/usr/local/bin/carthage copy-frameworks
してから“Input.Files”に各Frameworkのパスを追加する
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
ここで注意点
• “Framework+Search+Paths”+(FRAMEWORK_SEARCH_PATHS)
• Xcode+6では.frameworkをドラッグ&ドロップ時にパッケージのあるディレ
クトリのパスが追加されるが、Xcode+7+beta+3時点では追加されないように
なっている(バグ?)ので、自分で
$(SRCROOT)/Carthage/Build/iOS
を追加する必要がある。
• Linker+Error+:+Library+not+found+D+Issue+#615+D+Carthage/Carthage
• Carthage+install+documentaMon+missing+step?+D+Issue+#347+D+Quick/Quick
ここで注意点
• “Runpath*Search*Paths”*(LD_RUNPATH_SEARCH_PATHS)
• Xcode*6以降で作成したプロジェクト、ターゲットの場合は設定
済みだが、それ以前からのプロジェクトの場合は設定されてい
ない(かもしれない)。その場合は
$(inherited) @executable_path/Frameworks
を追加する必要がある。
• Linker*Error*:*Library*not*found*@*Issue*#615*@*Carthage/Carthage
ここで注意点
• “Embed(Frameworks”(ビルドフェーズ
• “Build(Phases”に該当のフェーズがない場合(これもXcode(6以前からのプロジェクトの場
合?)、+アイコンから“New(Copy(Files(Phase”を選択し、
• “Des@na@on”に“Frameworks”を選択
• リストに各Frameworkを追加して“Code(Sign(On(Copy”にチェックを入れる
必要がある。
• Linker(Error(:(Library(not(found(I(Issue(#615(I(Carthage/Carthage
• Library(not(loaded:(@rpath/Alamofire.framework/Alamofire(I(Issue(#616(I(Carthage/Carthage
!!Dynamic!Frameworkの設定方法に
詳しくなれましたね!!
でもまだiOS$7のサポート
切れないんだけど……$!
そんなあなたに!!
3.#CocoaSeeds)for)iOS)7
• devxoul/CocoaSeeds
Git$Submodule$Alterna1ve$for$Cocoa.$Inspired$by$CocoaPods.
• CocoaPodsみたいにプロジェクトへの組み込みを行うが、ソースファイルを追
加してアプリと一緒にビルドする)=>)iOS)7でもSwi1のライブラリが使える)✨
• @usamik26)がさっそくPRしてます)"
• Adapt)for)mul?ple)files)op?on)by)usamiEk)F)Pull)Request)#13
• 他のFrameworkに依存して)import FooBar)しているライブラリだと困る。
3.#CocoaSeeds)for)iOS)7
• $ [sudo] gem install cocoaseeds
• 以下のようにSeedfileを定義して
# Seedfile
# seeds for all targets
github "Alamofire/Alamofire", "1.2.0", :files => "Source/*.{swift,h}"
# seeds for specific target
target :MyAppTest do
github "Quick/Quick", "v0.3.1", :files => "Quick/**.{swift,h}"
end
• $ seed install
!!快適なFrameworkライフを
お過ごし下さい!"
参考URL
• Run%Path*Dependent*Libraries
• Xcode*%*Library*not*loaded*エラー?ここを見直そう*%*Qiita
• mikeash.com:*Friday*Q&A*2009%11%06:*Linking*and*Install*
Names
• @executable*path,*@load*path*and*@rpath*L*wincent.com
Ques%ons❓
ありがとうございました!

Contenu connexe

Tendances

Tendances (20)

Embedded framework and so on
Embedded framework and so onEmbedded framework and so on
Embedded framework and so on
 
マルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layoutマルチデバイスに対応するためのAuto layout
マルチデバイスに対応するためのAuto layout
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
 
Flex入門
Flex入門Flex入門
Flex入門
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
 
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
 
Oss written in swift
Oss written in swiftOss written in swift
Oss written in swift
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
 
Introduction of ios-chart in oss-labs#3
Introduction of ios-chart in oss-labs#3Introduction of ios-chart in oss-labs#3
Introduction of ios-chart in oss-labs#3
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
 
HTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionicHTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionic
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
React way at_eight
React way at_eightReact way at_eight
React way at_eight
 

Similaire à iOSでのFramework導入のおさらい #関モバ

[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata
VOYAGE GROUP
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
Masakazu Muraoka
 

Similaire à iOSでのFramework導入のおさらい #関モバ (20)

SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門
 
[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata[20130624]最近の開発環境について話してみる sakata
[20130624]最近の開発環境について話してみる sakata
 
Time for Xcode Behavior
Time for Xcode BehaviorTime for Xcode Behavior
Time for Xcode Behavior
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術
 
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
Getting a packet trace
Getting a packet traceGetting a packet trace
Getting a packet trace
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
Cocoa関西勉強会#49
Cocoa関西勉強会#49Cocoa関西勉強会#49
Cocoa関西勉強会#49
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発! SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
 
CoderDojo福井の取り組み
CoderDojo福井の取り組みCoderDojo福井の取り組み
CoderDojo福井の取り組み
 
FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?FxOSはウェアラブルデバイスの夢を見るか?
FxOSはウェアラブルデバイスの夢を見るか?
 

iOSでのFramework導入のおさらい #関モバ