知ってる知らないで変わる
 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ファイル群
ご清聴
ありがとうございました

20120826i phonedeveloperworkshop