# ITMS-90717「Invalid large app icon」の直し方（Expo）

> ITMS-90717は、1024 x 1024アイコンに透明部分かアルファチャンネルが残っているエラーです。不透明で書き出してsipsで確認し、ビルドし直しましょう。

元のページ：[ITMS-90717「Invalid large app icon」の直し方（Expo）](https://devoria.fr/ja/blog/itms-90717-invalid-large-app-icon-expo)
著者：[Mehdi Azizi](https://devoria.fr/ja/mehdi-azizi)
公開日：2026-11-04
内容の最終更新：2026-11-04


ITMS-90717は、Appleがビルドに対して行う自動チェックです。App Storeに表示される1024 x 1024ピクセルの大きなアプリアイコンに、透明部分かアルファチャンネルが含まれている、という意味です。**修正方法は、アルファチャンネルなしで書き出した正方形の不透明なアイコンを用意して、ビルドし直すことです。**

Expoの場合、PNGファイル自体が原因であることはまれです。prebuildの時点で白い背景の上に配置されるからです。僕はSDK 57のこのコードを読み、Solys、TradaZen、Noleraのアイコンも確認しました。その場合、原因はたいていgitで管理している`ios`フォルダか、Icon Composerのファイルです。どちらなのかを見つけて、直す方法を説明します。

## ITMS-90717エラーの意味は？

メッセージのタイトルは「ITMS-90717: Invalid large app icon」です。アプリの画像カタログにある大きなアイコンは「can't be transparent or contain an alpha channel」、つまり透明にもできず、アルファチャンネルを含むこともできない、と書かれています。古いメッセージでは「Invalid App Store Icon」と表示されていました。ルールは同じです。

この大きなアイコンとは、App Storeのアイコンのことです。[Xcodeのアイコンに関するドキュメント](https://developer.apple.com/documentation/xcode/configuring-your-app-icon)にあるとおり、App Storeで配布するアプリは、画像カタログに1024ポイントのアイコンを用意する必要があります。

アルファチャンネルとは、PNGの赤・緑・青に並ぶ4つ目のレイヤーです。各ピクセルの透明度を保存します。**見た目は塗りつぶされたアイコンでも、このチャンネルが残っていることがあります。**フォーラムのどのスレッドでも出てくる落とし穴です。

ほかのITMSエラーと同じく、これはレビュアーによるリジェクトではありません。Appleが受け取った時点でバイナリを解析した結果です。アップロードに使うツールによっては、たとえばコード409のバリデーション失敗として表示されます。

## sipsでアイコンを確認する

Macには`sips`が最初から入っています。1行で済みます。

```bash
sips -g hasAlpha assets/icon.png
```

`hasAlpha: no`と表示されればOKです。2026年10月15日に、Solys、TradaZen、Noleraのapp.jsonで指定しているアイコンにこのコマンドを実行しました。すべて`no`で、サイズは1024 x 1024でした。

テスト用のアイコンも作りました。完全に不透明な青い正方形ですが、アルファチャンネル付きで保存したものです。`sips`は`yes`と返します。**透明なピクセルはひとつもないのに、チャンネルは存在しているのです。**だからこそ、このメッセージに「アイコンに透明部分なんてない」と書き込む開発者がこんなに多いわけです。

プレビュー（Preview）でも、インスペクタ（Tools、Show Inspector）でアルファチャンネルを含む画像のプロパティを確認できます。

## 修正：アルファチャンネルなしでアイコンを書き出す

いちばん簡単なものから、いちばん細かく調整できるものまで、3つの方法があります。

**1. プレビュー。**File、Exportを選び、形式をPNGにして、Alphaのチェックを外します。書き出したファイルにはアルファチャンネルがありません。

**2. sips（インストール不要）。**`sips`はPNGからアルファチャンネルを削除できません。アルファチャンネルを持たないJPEGを経由します。

```bash
sips -s format jpeg -s formatOptions 100 icon.png --out icon.jpg
sips -s format png icon.jpg --out icon-opaque.png
sips -g hasAlpha icon-opaque.png
```

角が透明なテスト用アイコンで試したところ、角は白になり、最後の行は`no`を返しました。JPEGを経由すると、最高画質でも少し圧縮がかかります。結果はよく確認してください。

**3. ImageMagick。**インストール済みなら、背景色を選べます。

```bash
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
```

[ImageMagickのドキュメント](https://imagemagick.org/command-line-options/#alpha)によると、`-alpha remove`は画像を背景色の上に重ね、`-alpha off`はチャンネルを無効にします。

この3つの方法はどれも、透明部分を単色で塗りつぶします。ロゴが透明な背景に浮いているデザインなら、元のファイルに戻ってちゃんとした背景を描くのがいちばんきれいです。Expoも[アプリアイコンのガイド](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/)でそう求めています。アイコンは角丸も透明ピクセルもなしで、正方形全体を埋める必要があります。マスクはiOSが自分でかけます。

## Expoがアイコンをどこから取り、どう処理するか

Expoはまず`ios.icon`を読み、次に設定のルートにある`icon`フィールドを読みます。[Expoの設定リファレンス](https://docs.expo.dev/versions/latest/config/app/)によると、`ios.icon`は3つの形式を受け付けます。PNG、`light`・`dark`・`tinted`のバリアントを持つオブジェクト、そしてIcon Composerで作った`.icon`フォルダです。

次の表は、prebuild時にiOSアイコンを生成するコード`@expo/prebuild-config` 57.0.16（SDK 57）を2026年10月15日に読んだ結果です。

| 指定する内容                   | prebuildの処理           | ITMS-90717のリスク |
| ------------------------------ | ------------------------ | ------------------ |
| PNGの`icon`                    | 白い背景で平坦化         | 低い               |
| `ios.icon.light`               | 白い背景で平坦化         | 低い               |
| `ios.icon.tinted`              | 白い背景で平坦化         | 低い               |
| `ios.icon.dark`                | 透明部分を維持           | Appleの意図どおり  |
| `.icon`形式の`ios.icon`        | そのままコピー           | 実際にある         |
| gitで管理している`ios`フォルダ | prebuildが再実行されない | 実際にある         |

**PNGの場合、Expoが自分で透明部分を取り除き、白に置き換えます。**切り抜いたロゴは白い正方形の上に載ることになります。エラーにはなりませんが、意図しない見た目になるかもしれません。ダークバリアントは透明部分を維持しますが、これは意図されたものです。Appleはダークアイコンに透明な背景を求めていて、システムが用意する背景が見えるようにしています。

3つのバリアントを指定しているNoleraでは、生成されたライトアイコンとティンテッドアイコンに対して`sips`は`no`、ダークアイコンには`yes`を返します。バリアントのコミット日から考えると、公開中のバージョン1.0.2にはこれらが含まれています。IPAの中身までは確認していません。

### gitで管理しているiosフォルダの場合

Expoではこれがいちばんありがちな原因です。[Expoのcontinuous native generationのページ](https://docs.expo.dev/workflow/continuous-native-generation/)にあるとおり、プロジェクトに`android`と`ios`のフォルダがあると、EAS Buildはprebuildを実行しません。**そうなるとapp.jsonはアイコンに一切影響しません。**Appleに送られるのは`ios`フォルダ内のPNGです。

プロジェクトのルートで確認しましょう。

```bash
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
```

1024のアイコンに`yes`が返ってきたら、そのファイルを不透明版に同じ名前で差し替えます。ネイティブ側を手で変更していないなら、`ios`フォルダを削除して`.gitignore`に追加する方法もあります。EASがビルドのたびに再生成してくれます。Solys、TradaZen、Noleraでは、このフォルダはgitの管理対象外にしています。

## iOS 26の形式：Icon Composer

Icon Composerは、iOS 26のLiquid Glassアイコン用のApple製ツールです。複数レイヤーを持つ1つの`.icon`ファイルを作ります。[AppleのIcon Composerガイド](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer)によると、Xcodeは古いiOSバージョン用の画像もそこから作ります。

ExpoはSDK 54から対応しています。フォルダはバリアントのオブジェクトではなく、必ず文字列で指定します。

```json
{
  "expo": {
    "ios": {
      "icon": "./assets/app.icon"
    }
  }
}
```

この場合、prebuildはフォルダに手を加えずにコピーし、最終的なアイコンはXcodeが作ります。そのため、Xcode 26以降が必要です。最近のEASイメージに入っているものです。詳しくは[ITMS-90725](https://devoria.fr/ja/blog/itms-90725-sdk-version-issue-expo)のガイドで説明しています。

2025年8月以降、Appleの開発者フォーラムでは`.icon`ファイルでITMS-90717が出たというスレッドが立っています。報告されている原因の候補は、透明なPNGレイヤー、キャンバスより大きいレイヤー、端の近くにBlur効果をかけたグループです。挙げられている回避策は、Blurを切る、塗りつぶした背景を残す、PNGに戻す、の3つです。これらのスレッドにAppleの公式な修正はなく、2026年8月時点でもエラーが報告されていました。

[Appleのアイコンに関するガイドライン](https://developer.apple.com/design/human-interface-guidelines/app-icons)も同じ方向です。背景レイヤーを読み込むなら、全体を覆い、かつ不透明でなければなりません。僕のアプリはまだPNGを使っているので、本番でIcon Composerは試していません。**`.icon`ファイルのせいでアップロードが止まるなら、`ios.icon`をPNGに戻してください。**Expoが平坦化してくれるので、アイコンはこのチェックを通ります。

## 最終ビルドでアイコンを確認する

IPAの中では、1024のアイコンはPNGファイルではありません。Xcodeが`Assets.car`にコンパイルしています。expo.devのビルドページからIPAをダウンロードして、次を実行します。

```bash
unzip -q MonApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
```

各アイコンに`Opaque`というフィールドが表示されます。2026年10月15日に、Xcodeのツール`actool`でSolysのアイコンと、角が透明なテスト用アイコンをコンパイルしました。前者は`"Opaque" : true`、後者は`"Opaque" : false`になりました。Appleはこのフィールドをドキュメント化していません。Appleのチェックそのものではなく、ひとつの目安と考えてください。

知っておきたい落とし穴があります。**アプリのルートに置かれた小さなPNGを`sips`で確認しないでください。**元画像が不透明でも、Xcodeはそれらをアルファチャンネル付きで書き出します。Solysのアイコンで試したところ、`sips`はそれらに`yes`を返しました。

## アイコンに関するほかのエラー

| コード     | Appleが指摘する内容  | Expoでの手がかり       |
| ---------- | -------------------- | ---------------------- |
| ITMS-90717 | 1024アイコンが透明   | アルファなしで書き出す |
| ITMS-90704 | 1024アイコンがない   | 1024のエントリがない   |
| ITMS-90022 | iPhoneアイコンがない | カタログが不完全       |
| ITMS-90023 | iPadアイコンがない   | カタログが不完全       |

下の3つのメッセージは、主にXcode 9でアイコンのルールが変わった2017年と2018年のものです。

Expoでは、これらはほとんど見なくなりました。prebuildが1024のユニバーサルアイコンを1つだけ書き出し、ほかのサイズはXcodeが生成します。アイコンを指定していなくても、アップロード時の失敗を避けるためにExpoが白い正方形を作ってくれます。**これらのエラーが出たら、gitで管理している`ios`フォルダを確認してください。**`AppIcon.appiconset`の`Contents.json`に`1024x1024`サイズのエントリがあり、そこで指定されたPNGが実在している必要があります。

## 次のアップロードの前に

アイコンの修正は10分で済みますが、エラーが出るたびにビルドを1回消費します。ほかの自動チェックにも同じ注意が必要です。たとえば権限の説明文の[ITMS-90683](https://devoria.fr/ja/blog/itms-90683-missing-purpose-string-expo)や、プライバシーマニフェストの[ITMS-91053](https://devoria.fr/ja/blog/itms-91053-missing-api-declaration-expo)です。ビルドが受理されたら、[TestFlight](https://devoria.fr/ja/blog/testflight-iphone-app-beta-testing)でインストールして、ホーム画面のアイコンを確認しましょう。

レビュアーによるリジェクトには、もう少し引いた視点が必要です。対応の流れは[Appleにリジェクトされたアプリ](https://devoria.fr/ja/expertise/app-rejected-by-apple)のページに、よくある理由は[Appleがアプリをリジェクトする理由](https://devoria.fr/ja/blog/apple-app-rejection-reasons-fixes)にまとめています。

アップロード前に申請内容を確認したいなら、[Review Kit](https://devoria.fr/ja/kits/app-review)に僕のチェックリストと、プロジェクトを見直してくれるClaude Codeのスキルをまとめています。アップロードで行き詰まって人の目で見てほしいなら、[僕と1時間のセッションを予約してください](https://devoria.fr/ja/coaching)。ビデオ通話で、あなたの画面を見ながら一緒にプロジェクトを見直します。初めてのリリースを準備中なら、[無料の診断を受けてください](https://devoria.fr/ja/diagnostic)。手順を正しい順番に整理して、Appleのリジェクト対策チェックリストをお送りします。

## よくある質問

### アイコンに透明部分がないのに、なぜAppleはアルファチャンネルを検出するのですか？

PNGは、すべてのピクセルが不透明でもアルファチャンネルを持ち続けられるからです。多くのツールは書き出し時にデフォルトでこれを追加します。`sips -g hasAlpha`で確認して、チャンネルなしで書き出し直してください。

### ITMS-90717はリモートアップデートで直せますか？

いいえ。アイコンはバイナリ内の`Assets.car`にコンパイルされています。リモートアップデートで変えられるのは、アプリのJavaScriptとリソースだけです。アイコンを直してビルドし直し、もう一度アップロードしてください。

### ダークアイコンは透明でもいいですか？

はい。Appleはダークバリアントに透明な背景を求めていて、Expoもその透明部分を維持します。ここから僕は、チェックの対象はメインのアイコン、つまりApp Storeのアイコンだと考えています。不透明でなければならないのはそちらです。

### iOSアイコンの角は丸める必要がありますか？

いいえ。塗りつぶした正方形を用意してください。マスクはiOSが自分でかけます。角を丸めると四隅に透明なピクセルが残り、まさにこのチェックで弾かれる状態になります。

### ExpoはiOS 26のIcon Composerアイコンに対応していますか？

はい、SDK 54から対応しています。`ios.icon`に`.icon`フォルダのパスを文字列で指定してください。prebuildがそのままコピーし、Xcode 26がコンパイルします。この形式でITMS-90717が出たら、透明なレイヤーとBlur効果を確認するか、一時的にPNGに戻してください。


## あなたのプロジェクト

[Review Kit](https://devoria.fr/ja/kits/app-review)：私のApp Store審査チェックリスト、修正済みのAppleのリジェクト事例、Google Play用チェックリスト、Claude Codeのスキル3つ。￥8,500。

[iOS & Android Kit](https://devoria.fr/ja/kits/ios)：Claude CodeでiPhoneとAndroidのアプリを作りましょう。私のアプリのスターターコード、ストア公開までの手順、すべてのキットが揃っています。￥17,500。

[診断：あなたとiPhoneアプリの間にあるもの](https://devoria.fr/ja/diagnostic)：7つの質問、60秒。iPhoneアプリの公開を本当に妨げているもの、4ステップのロードマップ、あなたに合ったキットがわかります。
