SlideShare a Scribd company logo
1 of 17
Download to read offline
Frameworkについて	
Bitz Co., Ltd. 村上幸雄	

!

2013/12/7
• 村上幸雄	

• @m_yukio	

• ビッツ有限会社

http://www.bitz.co.jp/!
本日の内容	

✤ 

Frameworkについて!

✤ 

SimpleChartについて!

✤ 

SimpleChartのFramework化
Frameworkについて
✤ 

ライブラリとヘッダーファイル、リソース、ドキュメントをパッ
ケージ化できて、利用者の取り扱いが楽になる。!

✤ 

ライブラリが利用している他のライブラリを自身のライブラ
リに含めたくない場合に便利。
最も簡単なフレームワークのディレクトリ構成
	

MyFramework.framework/	
Frameworks
- Versions/Current/Frameworks	
Headers
- Versions/Current/Headers	
MyFramework - Versions/Current/MyFramework	
Resources
- Versions/Current/Resources	
Versions/	
A/	
Frameworks/	
OtherFramework.framework	
Headers/	
MyHeader.h	
MyFramework	
Resources/	
English.lproj/	
Documentation	
InfoPlist.strings	
Info.plist	
Current - A

!
SimpleChartについて
S7GraphView
!

http://code.google.com/p/s7graphview/
!

残念ながらサイトは閉鎖されている
SimpleChart
!

https://github.com/murakami/SimpleChart !

ソースファイルはヘッダを含めて2個のため、ソース
ファイルをプロジェクトに追加して利用を想定。
SimpleChartのFramework化
プロジェクトの生成
プロジェクトのディレクトリ構成
Info.plist
!
フレームワーク用ターゲット Aggregate
!
スクリプトを追加
#!/bin/sh!
!

# ==============================!
# 変数設定!
# ==============================!
#FRAMEWORK_NAME=$(/usr/libexec/PlistBuddy -c Print CFBundleName ${INFOPLIST})!
FRAMEWORK_NAME='SimpleChart'!
INFOPLIST=${FRAMEWORK_NAME}/Resources/Info.plist!
BUILD_TARGET_NAME=${FRAMEWORK_NAME}!
#FRAMEWORK_BUILD_CONFIGURATION= ${CONFIGURATION}!
FRAMEWORK_BUILD_CONFIGURATION=Release!
FRAMEWORK_VERSION_NUMBER=$(/usr/libexec/PlistBuddy -c Print CFBundleShortVersionString ${INFOPLIST})!
FRAMEWORK_VERSION=A!
FRAMEWORK_BUILD_PATH=Framework!
FRAMEWORK_DIR=${FRAMEWORK_BUILD_PATH}/${FRAMEWORK_NAME}.framework!
PACKAGENAME=${FRAMEWORK_NAME}.${FRAMEWORK_VERSION_NUMBER}.zip!
!

# ==============================!
# ビルド!
# ==============================!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} clean!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} clean!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET}!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET}!
[ $? != 0 ]  exit 1!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET}!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET}!
[ $? != 0 ]  exit 1

!

	

実機分とシミュレータ
分
# ==============================!
# ディレクトリ作成!
# ==============================!
[ -d ${FRAMEWORK_BUILD_PATH} ]  rm -rf ${FRAMEWORK_BUILD_PATH}!
mkdir -p ${FRAMEWORK_DIR}!
mkdir -p ${FRAMEWORK_DIR}/Versions!
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}!
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/Resources!
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/Headers!
ln -s ${FRAMEWORK_VERSION} ${FRAMEWORK_DIR}/Versions/Current!
ln -s Versions/Current/Headers ${FRAMEWORK_DIR}/Headers!
ln -s Versions/Current/Resources ${FRAMEWORK_DIR}/Resources!
ln -s Versions/Current/${FRAMEWORK_NAME} ${FRAMEWORK_DIR}/${FRAMEWORK_NAME}!
!
# ==============================!
# framework作成!
# ==============================!
lipo -create !
build/${FRAMEWORK_BUILD_CONFIGURATION}-iphoneos/lib${FRAMEWORK_NAME}.a !
build/${FRAMEWORK_BUILD_CONFIGURATION}-iphonesimulator/lib${FRAMEWORK_NAME}.a !
-o ${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}!

	

実機とシミュレータの
統合

!

!

cp -Rf ${BUILD_TARGET_NAME}/Headers/* ${FRAMEWORK_DIR}/Headers/!
cp ${BUILD_TARGET_NAME}/Resources/* ${FRAMEWORK_DIR}/Resources/!
cp ${INFOPLIST} ${FRAMEWORK_DIR}/Resources/!
cd ${FRAMEWORK_BUILD_PATH}!
chmod -fR 777 ${FRAMEWORK_NAME}.framework!
zip -ry ${PACKAGENAME} $(basename $FRAMEWORK_DIR)!

!

# End Of File

	

ヘッダーとリソースの
配置

More Related Content

Similar to Frameworkについて

Windows Azure Storage:Best Practices and Internals
Windows Azure Storage:Best Practices and InternalsWindows Azure Storage:Best Practices and Internals
Windows Azure Storage:Best Practices and Internals
Takekazu Omi
 
Ver10部品データの共有方法について
Ver10部品データの共有方法についてVer10部品データの共有方法について
Ver10部品データの共有方法について
Quadcept
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
Toru Makabe
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack Documentation
Kimihiko Kitase
 
baserCMSにみられるCakePHPノウハウ蓄積法
baserCMSにみられるCakePHPノウハウ蓄積法baserCMSにみられるCakePHPノウハウ蓄積法
baserCMSにみられるCakePHPノウハウ蓄積法
Ryuji Egashira
 

Similar to Frameworkについて (20)

7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
 
osc_tokyo20100226
osc_tokyo20100226osc_tokyo20100226
osc_tokyo20100226
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!ARMテンプレートでサーバーレスに挑む!
ARMテンプレートでサーバーレスに挑む!
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
 
Windows Azure Storage:Best Practices and Internals
Windows Azure Storage:Best Practices and InternalsWindows Azure Storage:Best Practices and Internals
Windows Azure Storage:Best Practices and Internals
 
Ver10部品データの共有方法について
Ver10部品データの共有方法についてVer10部品データの共有方法について
Ver10部品データの共有方法について
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
 
Microsoft Azure Storage 概要
Microsoft Azure Storage 概要Microsoft Azure Storage 概要
Microsoft Azure Storage 概要
 
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポートHBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
 
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
 
play framework 勉強会 in 関西
play framework 勉強会 in 関西play framework 勉強会 in 関西
play framework 勉強会 in 関西
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack Documentation
 
実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation library
 
WordPressテーマ作成
WordPressテーマ作成WordPressテーマ作成
WordPressテーマ作成
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
 
baserCMSにみられるCakePHPノウハウ蓄積法
baserCMSにみられるCakePHPノウハウ蓄積法baserCMSにみられるCakePHPノウハウ蓄積法
baserCMSにみられるCakePHPノウハウ蓄積法
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 

More from 幸雄 村上

More from 幸雄 村上 (20)

アプリケーション識別子.pdf
アプリケーション識別子.pdfアプリケーション識別子.pdf
アプリケーション識別子.pdf
 
圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf
 
分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する
 
え!それって参照渡し?
え!それって参照渡し?え!それって参照渡し?
え!それって参照渡し?
 
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
 
AppleScriptなど
AppleScriptなどAppleScriptなど
AppleScriptなど
 
MojaveのDark Mode
MojaveのDark ModeMojaveのDark Mode
MojaveのDark Mode
 
AppleScriptとは何ぞや
AppleScriptとは何ぞやAppleScriptとは何ぞや
AppleScriptとは何ぞや
 
Web API 通信の符号化について
Web API 通信の符号化についてWeb API 通信の符号化について
Web API 通信の符号化について
 
Master-Detail App を実装する
Master-Detail App を実装するMaster-Detail App を実装する
Master-Detail App を実装する
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する
 
Getting a packet trace
Getting a packet traceGetting a packet trace
Getting a packet trace
 
The Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKitThe Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKit
 
RUDP
RUDPRUDP
RUDP
 
Swiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装するSwiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装する
 
ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦
 
IBM Watson Services for Core ML
IBM Watson Services for Core MLIBM Watson Services for Core ML
IBM Watson Services for Core ML
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス
 

Recently uploaded

Recently uploaded (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Frameworkについて