iOS/macOS のアプリでデレクトリ構造そのままをリソースにしたい場合 

## 以前のXcodeでは普通にフォルダをリソースとして使えていた

以前とある教育用のアプリを開発していました。教育用なので、WEBのコンテンツのように、テキスト、レイアウト、画像音声など大量のリソースのバンドルが必要となります。そうするとやはり、部、章など構造的な単位でリソースを管理した方が何かと都合がよいです。そして、同様なプロジェクトが毎年続いたので、アプリのテンプレから同様にやっていました。

ある年に、心機一転プロジェクトをスクラッチから起こす事にしました。例年と同じようにコンテンツリソースの詰まったフォルダをプロジェクトにドロップします。あれ！？グループにするかリファレンスにするか訊いてきません。キャンセルしてオプション推しながらとか、何度か試しても同じです。諦めてそのままドロップします（コピーだったか移動だったか）。

## フォルダのいろが違う

ドロップしてから気がつきます。リソースのフォルダの色が他のと同じブルーとうかシアンです。これはやばいと思いますが、試しにリソースを読み込むコードを書いてみます。

読めません。

しかも、リソースを増やすと競合するようなビルドエラーがでてくるようになります。

これはやばいと思い、ビルドエラーがでない状態に戻して、実行バイナリーをバラしてみます。フォルダー構造が保たれていません。構造的なリソースがばらされて、散らばっています。あ、これはやばいと思いいろいろ試したり、スタックオーバーフローをあさったりしましたが、ピンとした回答がないので、あきらめて例年どおりプロジェクトのテンプレートから新規プロジェクトを起こしているのを続けてきました。

本日、別件で、やはり構造的なリソースが欲しいと思い再度いろいろ試した所、いろいろわかってきたので、同様に困っている人がいれば、ここに辿り着けるように、記事を書く事にしました。

## スクリーンショット用のプロジェクトを作ってみる

まずは、HelloDirectoryResources という架空のプロジェクトを想定して、その中に`Photos`というディレクトをドロップしてみます。Xcodeの進化のどこかで、その類の指定はできなくなっています。諦めてドロップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/0f4faaed-a646-4cdf-b188-4a95068a63d3.png)

試しにビルドして、実行バンドルをバラしてしみます。Macだと「Resources」フォルダがあって上手くいったような錯覚を受けますが、実は「Photos」のディレクトリがありません。そう、フラットにバラされてビルドされています。なので、「各フォルダ」に`index.html`のようなファイルを用意していると、名前が衝突してビルドエラーになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/154becf3-158b-4078-9cf8-f7fa4cb39c22.png)

ここまでが、ここまでにわかってきた事です。

## ここからは本日調べてわかった事です

今度は、`Photos`をルート直下にドラッグ&ドロップしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/31a6e00b-728c-4f56-9b99-47f77ba7885b.png)

今度はグループが選べるようになりました。どちらがどちらなのでしょう。せっかくなので、「Group」を選んでみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/31fc8184-3d9b-4db5-b756-9ee21b8d47ab.png)

そうそう、ブルーというかシアンでないフォルダができました。さて実行バンドルをバラしてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/c988d1ba-70dd-458e-956e-bd121700efd8.png)

ありません。

今度は`Group`ではなくて`Folder`を選んでみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/8d463693-1411-4f26-acba-21bbee34923d.png)

フォルダはブルーです。が、実行するとリソース用のフォルダはばらけて存在します。

普通ならここで諦めそうですが、なんで他のプロジェクトはできて、これでは聞きないのだろうと自問しながら、調べてみます。Xcodeで`Photos`のフォルダを選んで、インスペクタを見てみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/994aad84-0add-445d-a281-498274aabc31.png)

> 　
>
>
> 「！！！」　　お気づきだろうか…
>
>
>
> 　


![Screenshot 2025-06-12 at 4.11.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/dc653121-44ee-4698-ad22-11fe6c7848a0.png)

## 見覚えのないメニューが出現

なんだか見覚えのないメニューが出現します。

![Screenshot 2025-06-12 at 4.14.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/edef8539-59c9-468f-b988-8eacf257e996.png)

`Target Membership`から`+`を押して、実行ターゲットを指定します。

![Screenshot 2025-06-12 at 4.18.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/0726b48c-b2a8-4cda-8e94-73c0e6ab224c.png)

では、ビルドして実行バンドルをバラして見ましょう。

## フォルダがあった (;_;)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65634/08e9bd37-4f37-4327-b6bb-42ff99316bc1.png)

ちゃんと、`Resoures`の直下に`Photos`フォルダがあります。これでディレクトリをリソースとして扱える筈です。iOSだと、「Resources」フォルダがなくて、直に`Photos`が配置されます。

こんなの普段使わなくて、一年後には思い出せないので、ここに備忘録として残す事にします。


## 執筆時の環境

```
MacOS: 15.5 (24F74)
Chip: Apple M1 Max
Xcode: Version 16.4 (16F6)
```