Xcode グループとフォルダー参照 #yhios

8,059 views

Published on

Xcode で誰もが目にするファイルの階層管理「グループ」と「フォルダー参照」の特徴と Xcode での扱われ方の紹介です。Xcode 5 で登場した画像管理「アセットカタログ」の機能・魅力も駆け足で紹介しています。

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,059
On SlideShare
0
From Embeds
0
Number of Embeds
205
Actions
Shares
0
Downloads
9
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Xcode グループとフォルダー参照 #yhios

  1. 1. Xcode 再⼊入⾨門 -‐‑‒ グループとフォルダー参照 -‐‑‒ Xcode 再⼊入⾨門 -‐‑‒ グループとフォルダー参照 -‐‑‒ EZ-‐‑‒NET  熊⾕谷友宏 @EasyStyleGK http://program.station.ez-‐‑‒net.jp/ 〜~それぞれの特徴の差をもう⼀一度度〜~〜~それぞれの特徴の差をもう⼀一度度〜~
  2. 2. ⾃自⼰己紹介 @EasyStyleGK EZ-‐‑‒NET  IP  Phone ⾳音で再配達ゴッド ⾳音で再配達 ⾳音でダイヤル いつもの電卓 for  iPad いつもの電卓 for  iPhone EZ-‐‑‒NET  熊⾕谷友宏 http://program.station.ez-‐‑‒net.jp/
  3. 3. はじめに 「グループ」とか 「フォルダー参照」って何? 「グループ」とか 「フォルダー参照」って何? プロジェクトで扱うファイルを 階層管理理する機能 プロジェクトで扱うファイルを 階層管理理する機能
  4. 4. はじめに フォルダーを登録するときに 誰もが⽬目にするアレ フォルダーを登録するときに 誰もが⽬目にするアレ
  5. 5. オフレコ そう思い⽴立立った、いつかの体験談そう思い⽴立立った、いつかの体験談 もしかしてもしかして フォルダー参照って 画像の管理理とかに便便利利かも? フォルダー参照って 画像の管理理とかに便便利利かも?
  6. 6. はじめに グループとフォルダー参照の 特徴の違いを整理理してみる グループとフォルダー参照の 特徴の違いを整理理してみる
  7. 7. 第1章 グループ Groups グループ Groups
  8. 8. グループの特徴 • ⻩黄⾊色で⾊色づけされている • Mac  フォルダーとは別管理理 • ファイルひとつひとつに着⽬目 • ⻩黄⾊色で⾊色づけされている • Mac  フォルダーとは別管理理 • ファイルひとつひとつに着⽬目
  9. 9. グループの特徴 (1/3) • Mac  ファインダーのフォルダーは⽔水⾊色 • つまり(?)別なもの • 階層は Xcode  内で独⾃自に管理理されている • Mac  ファインダーのフォルダーは⽔水⾊色 • つまり(?)別なもの • 階層は Xcode  内で独⾃自に管理理されている ⻩黄⾊色で⾊色づけされている⻩黄⾊色で⾊色づけされている
  10. 10. グループの特徴 (2/3) • グループ内のファイルの保存場所は グループ毎に Location  で指定されている • Location  が指定されていないときは 親グループと同じ場所に保存される • グループ内のファイルの保存場所は グループ毎に Location  で指定されている • Location  が指定されていないときは 親グループと同じ場所に保存される Mac  フォルダーとは別管理理Mac  フォルダーとは別管理理
  11. 11. グループの特徴 (3/3) • ファイル単位でプロジェクトに登録 – Mac  フォルダーだけに追加しても影響なし – Mac  フォルダーから削除するとリンク切切れ – ファイル毎に対象ターゲットを選択可能 • 各ファイルを Build  Phases  で処理理 – ソースファイルはコンパイルしてバイナリへ – リソースファイルは階層無視でバンドルへ • ファイル単位でプロジェクトに登録 – Mac  フォルダーだけに追加しても影響なし – Mac  フォルダーから削除するとリンク切切れ – ファイル毎に対象ターゲットを選択可能 • 各ファイルを Build  Phases  で処理理 – ソースファイルはコンパイルしてバイナリへ – リソースファイルは階層無視でバンドルへ ファイルひとつひとつに着⽬目ファイルひとつひとつに着⽬目
  12. 12. 第2章 フォルダー参照 Folder References フォルダー参照 Folder References
  13. 13. フォルダー参照の特徴 • ⽔水⾊色で⾊色づけされている • Mac  フォルダーそのもの • フォルダーそのものに着⽬目 • ⽔水⾊色で⾊色づけされている • Mac  フォルダーそのもの • フォルダーそのものに着⽬目
  14. 14. フォルダー参照の特徴 (1/3) • Mac  ファインダーのフォルダーも⽔水⾊色 • つまり(?)Mac  のと似たようなもの • Mac  ファインダーのフォルダーも⽔水⾊色 • つまり(?)Mac  のと似たようなもの ⽔水⾊色で⾊色づけされている⽔水⾊色で⾊色づけされている
  15. 15. フォルダー参照の特徴 (2/3) • プロジェクトには ルートフォルダーが登録される • フォルダー内の階層や内容は Mac  側のフォルダーで管理理する • プロジェクトには ルートフォルダーが登録される • フォルダー内の階層や内容は Mac  側のフォルダーで管理理する Mac  フォルダーそのものMac  フォルダーそのもの
  16. 16. フォルダー参照の特徴 (3/3) • フォルダー⾃自体をプロジェクトに登録 – フォルダーへの追加や削除が反映される – ルートフォルダーで対象ターゲットを選択 • フォルダー内には直接関与しない – 各ファイルを Build  Phases  で処理理しない – 各ファイルを、階層を維持してバンドルへ • フォルダー⾃自体をプロジェクトに登録 – フォルダーへの追加や削除が反映される – ルートフォルダーで対象ターゲットを選択 • フォルダー内には直接関与しない – 各ファイルを Build  Phases  で処理理しない – 各ファイルを、階層を維持してバンドルへ フォルダーそのものに着⽬目フォルダーそのものに着⽬目
  17. 17. 第3章 グループとフォルダー参照の 特徴の違いを⽐比較する グループとフォルダー参照の 特徴の違いを⽐比較する
  18. 18. ⽐比較で使うファイルの準備 グループとして登録グループとして登録 フォルダー参照として登録フォルダー参照として登録
  19. 19. バンドル内で⾒見見られる違い グループとして登録グループとして登録 フォルダー参照として登録フォルダー参照として登録 • 全てバンドルのルートへ配置 • ソースはバイナリに組み込み • 全てバンドルのルートへ配置 • ソースはバイナリに組み込み • 階層を保ってバンドルへ配置 • ソースもそのままバンドルへ • 階層を保ってバンドルへ配置 • ソースもそのままバンドルへ
  20. 20. インターフェイスビルダーでの扱いの違い グループとして登録した画像グループとして登録した画像 フォルダー参照として登録した画像フォルダー参照として登録した画像 • 選択肢にはパスが含まれない • 正しいパスを指定して になる • 選択肢にはパスが含まれない • 正しいパスを指定して になる
  21. 21. Objective-‐‑‒C  コード内での扱いの違い 画像リソースの読み込み画像リソースの読み込み [UIImage imageNamed:@"gsub1.png"];[UIImage imageNamed:@"gsub1.png"]; [UIImage imageNamed:@"Reference/rSub/rsub1.png"];[UIImage imageNamed:@"Reference/rSub/rsub1.png"]; グループとして登録した画像グループとして登録した画像 フォルダー参照として登録した画像フォルダー参照として登録した画像
  22. 22. Objective-‐‑‒C  コード内での扱いの違い バンドルからの読み込みバンドルからの読み込み NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"g" ofType:@"plist"]; NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"g" ofType:@"plist"]; NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"r" ofType:@"plist" inDirectory:@"Reference/rSub"]; NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"r" ofType:@"plist" inDirectory:@"Reference/rSub"]; グループとして登録したリソースグループとして登録したリソース フォルダー参照として登録したリソースフォルダー参照として登録したリソース
  23. 23. オフレコ 画像の管理理に便便利利そうと思って フォルダー参照を使ってみましたが 画像の管理理に便便利利そうと思って フォルダー参照を使ってみましたが フォルダー参照フォルダー参照
  24. 24. オフレコ ちょっと使いにくいちょっと使いにくい Xcode  は良良くも悪くも無関⼼心 Interface  Builder  がやる気ない Xcode  は良良くも悪くも無関⼼心 Interface  Builder  がやる気ない
  25. 25. 第4章 アセットカタログ Asset  Catalog アセットカタログ Asset  Catalog そして突如現れた…そして突如現れた… Xcode  5,  iOS  7  の新機能Xcode  5,  iOS  7  の新機能
  26. 26. アセットカタログ アセットカタログとはアセットカタログとは 1. 画像リソースをまとめて扱う仕組み – ただし JPEG  は扱えない 2. ひとつのパッケージとして存在 3. Xcode  による全⾯面サポート付き 1. 画像リソースをまとめて扱う仕組み – ただし JPEG  は扱えない 2. ひとつのパッケージとして存在 3. Xcode  による全⾯面サポート付き 画像専⽤用のフォルダーみたいなもの画像専⽤用のフォルダーみたいなもの
  27. 27. アセットカタログ 1.  画像リソースをまとめて扱う仕組み1.  画像リソースをまとめて扱う仕組み • カタログ内を階層で整理理できる (最終的には階層は無視される) • ひとつの名前に複数の画像を登録 • カタログ内を階層で整理理できる (最終的には階層は無視される) • ひとつの名前に複数の画像を登録
  28. 28. アセットカタログ 2.  ひとつのパッケージとして存在2.  ひとつのパッケージとして存在 プロジェクト内のものはフォルダーとしてプロジェクト内のものはフォルダーとして
  29. 29. アセットカタログ 2.  ひとつのパッケージとして存在2.  ひとつのパッケージとして存在 アプリのバンドル内では単⼀一ファイルとしてアプリのバンドル内では単⼀一ファイルとして
  30. 30. アセットカタログ 3.  Xcode  による全⾯面サポート付き3.  Xcode  による全⾯面サポート付き • 実⾏行行時の環境に応じて 適切切な画像を⾃自動的に選択 • Retina  4-‐‑‒inch  (R4)  は iOS  7  以上のビルドで有効 • 実⾏行行時の環境に応じて 適切切な画像を⾃自動的に選択 • Retina  4-‐‑‒inch  (R4)  は iOS  7  以上のビルドで有効 Image  Set  では複数の環境をまとめて登録Image  Set  では複数の環境をまとめて登録
  31. 31. アセットカタログ 3.  Xcode  による全⾯面サポート付き3.  Xcode  による全⾯面サポート付き インターフェイスビルダーで普通に使えるインターフェイスビルダーで普通に使える [UIImage imageNamed:@"Block"];[UIImage imageNamed:@"Block"]; Objective-‐‑‒C  からも簡単に使えるObjective-‐‑‒C  からも簡単に使える 実⾏行行環境に応じて採⽤用される画像が切切り替わる実⾏行行環境に応じて採⽤用される画像が切切り替わる
  32. 32. アセットカタログ 3.  Xcode  による全⾯面サポート付き3.  Xcode  による全⾯面サポート付き OS  X  Icon  画像ならサイズに応じて⾃自動切切替OS  X  Icon  画像ならサイズに応じて⾃自動切切替 [NSImage imageNamed:@"Icon"];[NSImage imageNamed:@"Icon"]; Objective-‐‑‒C  からも簡単に取得可能Objective-‐‑‒C  からも簡単に取得可能 代⼊入する NSImageView  のサイズに応じて 採⽤用される画像が切切り替わる 代⼊入する NSImageView  のサイズに応じて 採⽤用される画像が切切り替わる
  33. 33. アセットカタログ 3.  Xcode  による全⾯面サポート付き3.  Xcode  による全⾯面サポート付き スライシングでボタンの背景画像も簡単対応スライシングでボタンの背景画像も簡単対応 • 画像に使い⽅方の情報を設定 – 「左側・上側に残す部分」 – 「引き延ばして使う部分」 – 「無視する部分」 – 「右側・下側に残す部分」 • 背景画像で使⽤用すると引き延ばされる • iOS  7  以上⽤用のビルドで利利⽤用可能 • 画像に使い⽅方の情報を設定 – 「左側・上側に残す部分」 – 「引き延ばして使う部分」 – 「無視する部分」 – 「右側・下側に残す部分」 • 背景画像で使⽤用すると引き延ばされる • iOS  7  以上⽤用のビルドで利利⽤用可能
  34. 34. まとめまとめ
  35. 35. まとめ (1/3) 1. ファイル単位で管理理されている 2. ファイルの追加や削除は Xcode  で⾏行行う 3. ファイルは Build  Phases  で処理理される 4. リソースは階層無視でバンドルにコピー 5. 普通はこれを使う 1. ファイル単位で管理理されている 2. ファイルの追加や削除は Xcode  で⾏行行う 3. ファイルは Build  Phases  で処理理される 4. リソースは階層無視でバンドルにコピー 5. 普通はこれを使う グループグループ
  36. 36. まとめ (2/3) 1. フォルダーとして管理理されている 2. ファイルの追加や削除は Mac  で⾏行行う 3. フォルダーをそのままバンドルにコピー 4. フォルダー階層はそのまま維持される 5. Interface  Builder  の対応が中途半端 1. フォルダーとして管理理されている 2. ファイルの追加や削除は Mac  で⾏行行う 3. フォルダーをそのままバンドルにコピー 4. フォルダー階層はそのまま維持される 5. Interface  Builder  の対応が中途半端 フォルダー参照フォルダー参照
  37. 37. まとめ (3/3) 1. 画像専⽤用のパッケージ 2. 画像の追加や削除は専⽤用のエディタで⾏行行う 3. 画像をひとつにまとめてバンドルにコピー 4. フォルダー階層は無視される 5. Xcode  による⼿手厚いサポートが魅⼒力力 6. JPEG  ファイルは扱えない 7. ⼀一部の機能は iOS  7.0  以上のビルド専⽤用 1. 画像専⽤用のパッケージ 2. 画像の追加や削除は専⽤用のエディタで⾏行行う 3. 画像をひとつにまとめてバンドルにコピー 4. フォルダー階層は無視される 5. Xcode  による⼿手厚いサポートが魅⼒力力 6. JPEG  ファイルは扱えない 7. ⼀一部の機能は iOS  7.0  以上のビルド専⽤用 アセットカタログアセットカタログ

×