アプリアイコンを画像から生成する

1 枚の正方形 PNG から tauri icon で Windows・macOS・Linux 用のアイコンを一括生成する。入力画像の条件と、アイコンが反映されないときの対処も示す。

ビルド・配布 対象: Tauri 2.x 更新日: 読了目安: 約5分 build-002
目次
  1. 前提条件
  2. 1. アイコンを生成する
  3. 生成されるファイル
  4. 2. tauri.conf.json の bundle.icon を確認する
  5. 動作確認
  6. よくあるエラーと対処法
  7. 入力画像が正方形でない・透過でない
  8. Windows でアイコンを変えたのに .exe の見た目が古いまま
  9. ビルド時に icon not found と言われる
  10. OS ごとの違いと注意点
  11. 関連レシピ

Tauri のアプリアイコンは OS ごとに形式が違います。Windows は複数解像度を束ねた .ico、macOS は .icns、Linux は複数サイズの PNG です。これを手作業で用意するのは面倒ですが、Tauri CLI の tauri icon サブコマンドに正方形の PNG を 1 枚渡すだけで、必要なファイルをすべて src-tauri/icons/ に生成できます。プラグインや権限は不要で、ビルド前に 1 回実行すれば済みます。

前提条件

Tauri CLI(@tauri-apps/cli)が入っていれば追加インストールはありません。入力画像は次の条件を満たすものを用意します。

  • 正方形(幅 = 高さ)の PNG または SVG。1024×1024 px を推奨(最低でも 512×512)
  • 透過対応の RGBA、32bit/px。背景を透過にしておくと macOS や Linux で自然に見える
  • 角丸や余白は自分で付けない。macOS の Dock 用に見た目を調整したい場合のみ、あらかじめ画像側で処理する

1. アイコンを生成する

プロジェクトのルートに app-icon.png を置き、次を実行します。

npm run tauri icon ./app-icon.png

引数を省略すると ./app-icon.png が既定で使われます。出力先は tauri.conf.json と同じ階層の icons/(= src-tauri/icons/)で、既存ファイルは上書きされます。

主なオプションは --output <dir>(出力先の変更)、--png 64,256(指定サイズの PNG だけ生成。既定の生成物は作られない)、--ios-color "#1e293b"(透過不可の iOS アイコンの背景色)です。

生成されるファイル

ファイル用途
icon.icoWindows。16/24/32/48/64/256 px を内包
icon.icnsmacOS の .app と DMG
32x32.png, 128x128.png, 128x128@2x.png, icon.pngLinux の .deb / AppImage、ウィンドウアイコン
Square*Logo.png, StoreLogo.pngWindows (UWP / Microsoft Store 向け)
android/, ios/モバイル向け。デスクトップのみなら無視してよい

2. tauri.conf.json の bundle.icon を確認する

生成したファイルがバンドルに含まれるかどうかは bundle.icon の配列で決まります。テンプレートの初期値は次のとおりで、tauri icon の出力名と一致しているため通常は変更不要です。

{
  "bundle": {
    "icon": [
      "icons/32x32.png",
      "icons/128x128.png",
      "icons/128x128@2x.png",
      "icons/icon.icns",
      "icons/icon.ico"
    ]
  }
}

パスは src-tauri/ からの相対パスです。--output で出力先を変えた場合はここも書き換えます。Windows の実行ファイルにはビルド時に配列内の .ico が埋め込まれ、macOS は .icns、Linux は PNG が使われます。

動作確認

npm run tauri dev を起動し、Windows ならタスクバー、macOS なら Dock に新しいアイコンが出れば成功です。ウィンドウ左上(Windows)のアイコンも同じ icon.ico から描かれます。

本番ビルド後は、Windows ならエクスプローラーで .exe と -setup.exe のアイコンを、macOS なら Finder で .app のアイコンを確認します。

$ ls src-tauri/icons
128x128.png  128x128@2x.png  32x32.png  icon.icns  icon.ico  icon.png
Square107x107Logo.png  Square142x142Logo.png  ...  StoreLogo.png  android  ios

よくあるエラーと対処法

入力画像が正方形でない・透過でない

幅と高さが違う PNG や RGB(アルファなし)の PNG を渡すと、CLI が画像形式の要件を満たしていないという趣旨のエラーで停止します。画像編集ソフトで正方形にトリミングし、「アルファチャンネルを保持して PNG 書き出し」したものを使ってください。JPEG は受け付けません。

Windows でアイコンを変えたのに .exe の見た目が古いまま

2 つの原因があります。1 つはエクスプローラーのアイコンキャッシュで、この場合はファイル名を変えるか別フォルダにコピーすると新しいアイコンが表示されます。もう 1 つは Cargo の差分ビルドが icon.ico の変更を検知していないケースで、src-tauri/target 配下の該当 crate だけを再ビルドすれば直ります。

cd src-tauri
cargo clean -p <Cargo.toml の package.name>

ビルド時に icon not found と言われる

bundle.icon に列挙したファイルが存在しないと、バンドル段階で「アイコンファイルが見つからない」という趣旨のエラーになります。--output で出力先を変えた、あるいは icons/ を .gitignore に入れていて CI に存在しない、が典型です。icons/ はリポジトリにコミットするか、CI で tauri icon を実行してから tauri build してください。

OS ごとの違いと注意点

  • Windows: .ico は 256 px までなので、元画像が大きくても高解像度ディスプレイでは 256 px 相当で描かれます
  • macOS: Dock は OS 側で角丸マスクをかけないため、他のアプリと揃えたいなら画像側で角丸と余白(約 10%)を付けます。.icns は署名時のハッシュ対象なので、署名後に差し替えないでください
  • Linux: .deb では /usr/share/icons/hicolor/<size>x<size>/apps/ に PNG が配置されます。デスクトップ環境によっては再ログインまで古いアイコンが残ります
  • 実行中にウィンドウのアイコンだけ動的に変えたい場合は ウィンドウのアイコンを変更する を参照してください

関連レシピ

参考リンク(公式ドキュメント)

Web Ninja

この記事を書いた人

Web Ninja ウェブエンジニア (Web Engineer)

会社員ネットワークエンジニアから独立してかれこれ 25 年以上 Web エンジニアとして活動中。普段は JavaScript と Node.js を自在に操り、時には C++ や Perl といった古流の技も嗜みます。近年は Tauri × Rust という新たな武器を手に、デスクトップアプリ開発の最前線を駆け抜けています。「作りたい」を「作れる」に変えるための、実践的な「技」をお届けします。

お問い合わせ: tauri.ninja@gmail.com

内容の誤り・動かないコードを報告する