SlideShare a Scribd company logo
知ってる知らないで変わる
 XCode開発の小技集
    朔 洋一郎
    (@saku2saku)
iPhone Developer Workshop
           とは?
 iPhoneアプリ開発者の交流
 技術情報の交換
 比較的初心者の方も多いです
  というか自分もそこまで熟練者ではないです
 そのため、もしかしたら間違ったことを言ってしま
 うかもしれませんがご容赦ください


 一緒にアプリ開発の勉強をしていきましょう!
自己紹介
名前
 朔 洋一郎
趣味
 漫画を読みあさる
 プログラミング
 料理
 趣味創り
製作
iPhoneアプリ
   世界夜景旅行 for iPhone
   MusicPlayerSleepTimer
   MusicPlayerSleepTimerFree
   世界名作アプリ
iPadアプリ
   世界夜景旅行
   工場夜景探検
   夜桜花見旅行
Web
   さくさく日記
      http://iphonework.biz/
   iPhone Developer Workshop
      http://workshop.iphonework.biz/
知ってる知らないで変わる
 XCode開発の小技集
今回の小技集
キーバインド
   キー入力の効率化による開発スピードアップ
Build Settingの利用
   プリプロセッサマクロとその組み合わせ
スキーマの作成
   Build Settingとの組み合わせによる
   ワンクリックでの環境選択
info.plistのスイッチング
   Build Settingの応用
素材準備の効率化
   @2xのファイルを1/2に一括リネーム縮小
サンプルコード置き場
サンプルコードを以下においてあります
 http://workshop.iphonework.biz/files/
 2012/08/20120826iPhoneDevWS.zip


 http://workshop.iphonework.biz/files/
 2012/08/20120826Automator.zip
キーバインド
皆さんはいつもはどのようなキーバインドで操作をし
ていますか?
 Emacs or vi ? or その他?
 私は KeyRemap4MacBook を使っています
何故キーバインドか?
 キーボードからマウスやパッドに手を動かすとその
 分の時間コストがかかります
 時間コスト = キーボード・マウス間の移動時間 x 2
 (一操作あたり)
特に良く使うキーバインド
キーの上下左右移動:Ctrl + p, n, b, f
行の先頭・最後に移動: Ctrl + a, e
マークセット:Ctrl + Space
行削除: Ctrl + k
切り取り・貼付け: Ctrl + w, Ctrl + y
ショートカットの活用
先程のキーバイントと組み合わせてXCodeのショート
カットを利用するとさらに効率アップ

 Ctrl + 5:同階層のファイルの選択
 Ctrl + 6:ファイル内のメソッド選択
 (さらにキー入力で絞り込み可能)
   + Shift + F:プロジェクト内の検索
   + F:ファイル内の検索
   + L:指定した行数へのジャンプ
Build Setting の利用
Build Setting とは?
 その名のとおり、Build時の設定を保存しておける
 プリセット
どんな時に役に立つ?
 プリプロセッサマクロを設定して本番/開発で
 環境をかえたいとき
 それに合わせて次のスキーマも活用する
 必要がある
Build Setting の利用
メジャーどころの活用としてプリプロセッサマクロの
設定を見てみましょう
 TARGETSからアプリを選択して、Build Settingsを
 開く
 「Preprocessor Macros」を見る
   検索窓に「prep」まで入力すると簡単
   今のXCodeの設定では Debug プロファイルには
   DEBUG=1が設定されている
   Releaseプロファイルには何もない状態
プリプロセッサマクロは
    どう活用するの?
#ifdef ∼ #elif ∼ #else ∼ #endif を活用
  ∼の部分には条件式を書きます
  ∼の部分にプリプロセッサマクロの値を書くと、
  マクロの定義がされていれば真と判定されます

       #ifdef DEBUG
        DEBUGが設定されている場合の処理
       #elif HOGEHOGE
        HOGEHOGE設定されている場合の処理
       #else
        DEBUGもHOGEHOGEも設定されていない場合の処理
       #endif
具体的な活用例
よく使われるのはDEBUG時のみNSLog出力する
ような設定
 Log4j風味の ヘッダファイルを作成してみた
  FATAL > ERROR > WARN > INFO > DEBUG > TRACE
 挙動について
  フラグ無し: ERROR 以上を出力
  WARNを設定: WARN 以上を出力
  以下同様
スキーマの設定
スキーマとはXCodeの左上に表示されているもの



これを設定すると何が嬉しいのか?
 先程のBuild Setting との合わせ技で
 複数環境に対しての設定変更をクリックひとつで
 変えられます
実例
以前関わったあるプロジェクトにおいて、Webとの連携があ
り、本番環境と試行環境で別々の接続情報を保持していた

   // baseURL
   #define baseURL @"http://hogehoge.example.com/"
   //#define baseURL @"http://development.example.com/" // devlopment

   // hostname
   #define hostname @"hogehoge.example.com"
   //#define hostname @"development.example.com" // devlopment

   // facebook app id
   #define facebookAppId @"129387101XXXXX???"
   //#define facebookAppId @"119382XXXXXX????" // devlopment




環境を切り替えるたびにコメントアウトを設定していたが
結構面倒だったりする
スキーマの作成
スキーマを作ると、Run, Test, Profile, Archiveなどでそれぞ
れに自分の作った Build Settings を選択できる
 この機能により、様々な状態をワンクリックで
 切り替えることが可能になる
 具体例
  iPhoneDevWS & Run : 本番かつDEBUG有り
  iPhoneDevWS & Release : 本番かつDEBUG無し
  iPhoneDevWSDev & Run : 開発環境かつDEBUG有り
  iPhoneDevWSDev & Release : 開発環境かつDEBUG無し
TIPS
スキーマ設定を他の開発者とGitやSubversion上で
共有するとき


スキーマ設定画面での Shared にチェックを付けると
スキーマ設定もコミット対象のリストに出るように
なります
info.plistのスイッチング
以下の場面で必要になりました
 Facebook との連携があるため、アプリスキーマの
 設定を開発用と本番用で変えたい
 実機上のアプリアイコン名を開発用と本番用で変え
 たい

Build Setting の応用で可能です!
 Build Settings の Info.plist File の設定で
 ビルド設定毎に読み込むファイルを指定可能です
画像素材の準備効率化
Automatorを使って効率化します
何気に結構色々なことができたりします


画像ファイルが少ない場合は手打ちも
いいですが、多くなってくると煩雑です
 Automatorを使って一気に自動処理してしまいま
 しょう
 用意するもの:Automator, @2xファイル群
ご清聴
ありがとうございました

More Related Content

PDF
TestFlight自動化でらくらくチームテスト
PPT
Android Hacks - Hack18 ~ Hack20
PDF
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
PDF
Android カスタムROMの作り方
PDF
milkcocoa入門@milkcocoa meetup#1
PDF
Xcode 7で始めるCI
PDF
ロリ化で進化するJCROM
PDF
Scrum with Redmine Backlogs
TestFlight自動化でらくらくチームテスト
Android Hacks - Hack18 ~ Hack20
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
Android カスタムROMの作り方
milkcocoa入門@milkcocoa meetup#1
Xcode 7で始めるCI
ロリ化で進化するJCROM
Scrum with Redmine Backlogs

What's hot (10)

PPTX
【Swift】 それ、enumとstructでやってみましょう!!
PDF
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
PDF
iPhoneアプリ無料勉強会 vol2
PDF
iPhoneアプリ無料勉強会 vol1
PDF
SEゼミ2015 - リーダブルコード勉強会のまとめ
PDF
【PlayFab】UnityAdsのリワード広告を統合する方法
PDF
iPhoneアプリ無料勉強会 vol3
PDF
さわってみよう Firefox OS in 大阪
PDF
Redmineを快適に使うためのおすすめ初期設定
PDF
プログラマー
【Swift】 それ、enumとstructでやってみましょう!!
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
iPhoneアプリ無料勉強会 vol2
iPhoneアプリ無料勉強会 vol1
SEゼミ2015 - リーダブルコード勉強会のまとめ
【PlayFab】UnityAdsのリワード広告を統合する方法
iPhoneアプリ無料勉強会 vol3
さわってみよう Firefox OS in 大阪
Redmineを快適に使うためのおすすめ初期設定
プログラマー
Ad

Viewers also liked (8)

PDF
20120422i phonedeveloperworkshoppublished
PDF
20111030i phonedeveloperworkshoppublished
PDF
20120219i phonedeveloperworkshoppublished
PDF
20120616i phonedeveloperworkshop
PDF
CoreDataをバックグラウンドで扱うためのTips
PDF
XcodeのTargetについてのTIPS
PDF
CoreData 非同期データ処理
PDF
javascript を Xcode でテスト
20120422i phonedeveloperworkshoppublished
20111030i phonedeveloperworkshoppublished
20120219i phonedeveloperworkshoppublished
20120616i phonedeveloperworkshop
CoreDataをバックグラウンドで扱うためのTips
XcodeのTargetについてのTIPS
CoreData 非同期データ処理
javascript を Xcode でテスト
Ad

Similar to 20120826i phonedeveloperworkshop (20)

PDF
iPhone develop for Beginner
PDF
DevLOVE iPhoneアプリ勉強会
PDF
Start up xcode ver JP
KEY
iPhoneアプリ開発を楽に楽しくするサイトまとめ
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
PDF
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
KEY
キーボードで完結!ハイスピード Xcodeコーディング
PDF
iOSアプリ開発 脱初心者に向けて
PDF
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
PDF
LLNagoya Apple
PDF
「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4
KEY
1.29.user,user,user
PPTX
Macで開発環境を整える170420
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
PDF
第3回yidev coding guideline読み
PDF
Cocoa Pro5
PDF
8F Emacs seminar 1st
PDF
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
PDF
⑬I phoneアプリを作ってみよう!(超初心者向け)
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
iPhone develop for Beginner
DevLOVE iPhoneアプリ勉強会
Start up xcode ver JP
iPhoneアプリ開発を楽に楽しくするサイトまとめ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
キーボードで完結!ハイスピード Xcodeコーディング
iOSアプリ開発 脱初心者に向けて
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
LLNagoya Apple
「変化と戦うロガー開発(iOS_App_Extensions編)」#yjdsw4
1.29.user,user,user
Macで開発環境を整える170420
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
第3回yidev coding guideline読み
Cocoa Pro5
8F Emacs seminar 1st
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
⑬I phoneアプリを作ってみよう!(超初心者向け)
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題

More from Yoichiro Sakurai (13)

PDF
Objective-C/Swift コードの共用
PDF
Xcode で gulp を使うお話
PDF
開発を加速させるRetty式チーム開発術 Reloaded
PDF
チームを加速させるRetty式開発術
PDF
1人でも頑張れる!Retty式開発環境
PDF
NSInvocationの便利さとハマりどころ
PDF
Google admobmediationで広告最適化
PDF
Crashlyticsでクラッシュ撲滅作戦
PDF
20130216 workshop
KEY
20121028i phonedeveloperworkshop
KEY
20120413 nestakabaneworkshop
PDF
20120316 designerworkshoppublished
KEY
20110424i phonedeveloperworkshoppublish
Objective-C/Swift コードの共用
Xcode で gulp を使うお話
開発を加速させるRetty式チーム開発術 Reloaded
チームを加速させるRetty式開発術
1人でも頑張れる!Retty式開発環境
NSInvocationの便利さとハマりどころ
Google admobmediationで広告最適化
Crashlyticsでクラッシュ撲滅作戦
20130216 workshop
20121028i phonedeveloperworkshop
20120413 nestakabaneworkshop
20120316 designerworkshoppublished
20110424i phonedeveloperworkshoppublish

20120826i phonedeveloperworkshop

Editor's Notes