ホームページ>開発ツール>Xojo / Real Studio Trial and Error・Tahoeで採用されたアイコンのスタイルに対応してみる
Xojo / Real Studio Trial and Error
目次
Tahoeで採用されたアイコンのスタイルに対応してみる
はじめに
以下は、Xojo Cocoaビルドについての話題です。
macOS 26 Tahoeから新たに、アイコンがダークやクリア等、ダイナミックに切り替わる機能が追加されました。Xcode製アプリでは対処法が公開されていますが、Xojo製アプリについては見つけられなかったので、調べてみました。
なお検証には、Xojo 2021 Release 2.1を用いています。(開発:Mac mini 2018 + macOS 15.7 Sequoia)(検証:Mac mini 2024 + macOS 26.0 Tahoe)
経緯
まずはルート確認のため、アップルのドキュメントに従って、Xcodeベースで試行してみました。
参考サイト(1):Creating your app icon using Icon Composer | Apple Developer Documentation
元画像はベクターデータが推奨されているので、ここではInkscapeを使って、簡単な画像を作成しました(注1)。
これをIcon Composerに取り込み、調整後にicon形式で保存(注1)し、Xcodeプロジェクトに追加してビルド。
出来上がったアプリをTahoe環境に置いて、スタイルを切り替えてみたところ、期待通りの動作をすることを確認しました。
注1:保存時のファイル名は一貫して「App」としている。これはXojoのデフォルトのアイコンファイル名が「App.icns」なので、整合を図るため。さて、これをXojo製アプリにどう適用するか、です。
Finder上の操作で切り替わることから、アプリのコードレベルで実現しているとは考え難かったので、アイコン関連の情報はResourcesフォルダー内にあるだろうと当たりをつけて見てみると、以下の3つがありました。
Base.lprojフォルダーはStoryboard関連なので、除外して良さそうです。
Assets.carは、以前にも取り上げましたが、ここ最近のアイコン関連のファイルとしてはポピュラーなものです。おそらく、これが本体のようです。
ちなみに、App.icnsファイルは従来からの標準形ですですが、プレビューでみると、256x256(144dpi)、128x128(72)、32x32(144)、16x16(72)のデフォルト画像のみで、ファイルサイズも数十KBしかなく、従来OSとの互換用?のような印象です。
ということで、Assets.carとApp.icnsをXojo製アプリにコピーして様子を見たのですが、変化しません。まだ足りないようです。
そこで、Xcode/Xojo両アプリのinfo.plistを比較してみたところ、アイコン関係ではCFBundleIconNameキーがXojoにはありませんでした。なので、これを追加してみたところ、…、期待通りの動作をすることが確認できました。
やはり、コードは変更しなくていいようです。
あと、「Assets.car」は固定文字列なので、アイコン名との照合をどこでやっているのか?(info.plistのアイコン関連キーには「App」しか記載がない)が気になるところですが、.iconファイル(Icon Composerの出力ファイル)名を「App」にしておけば辻褄は合う?ようなので、それ以上の追求はしていません。
アイコンの作成
これは、実験で分かったことですが、Icon Composerは複数レイヤーを持つことができて、レイヤーごとに設定ができるのですが、レイヤー構造を持ったsvgファイルを読み込んでも、レイヤーは再現されませんでした。(何か技があるのかもしれませんが、未調査。)まずは、svg形式で出力できるベクターグラフィックエディター(ここではInkscape)で元画像を作成します。
なので、以下では手っ取り早く、Inkscapeの各レイヤーを別々に保存して、それらをフォルダーに纏め、フォルダーをIcon Composerにドラッグしてレイヤーを再現する、という方法をとっています。
次に、Icon Composerでアイコンファイルを作成します。
- Inkscapeを起動し、新規ドキュメントのサイズを1024x1024に設定。(単位がpxになっていることを確認。)
- 背景画像(白色で全面をカバー)、前景画像(左側に緑色の帯)、テキスト(黒色で「β」)の各オブジェクト(レイヤー)を作成。
(注1:テキストは念のため、パス>オブジェクトをパスへ、を実行。)
(注2:角丸処理はIcon Composerがやってくれるため、ここでは矩形で作成。)
(クリックで拡大)
- 調整後、各レイヤーを個別にファイル出力(ファイル名は順に、Base.svg、Left.svg、Text.svg)。これらをAppという名前のフォルダーに纏めておく。
引き続き、Xcode 26でAssets.carファイルを作成します。
- Icon Composerを起動し、ウィンドウに、Appフォルダーをドラッグ&ドロップする。
- 初期状態では、下図のように、グラデーションが青になっているので、白とグレーに置き換える。
(クリックで拡大)
- 初期状態では、下図のように、ハイライトがレイヤー毎についてしまっているので、全体にかかるようにする。(フォルダーに対して設定。)
(注:参考サイト(1)にはSpecularをオフにする解説があるが、それだと完全除去はできない?ようだ。)
(クリックで拡大)
- DarkとMonoは(同一の)独自カラーを設定。(背景は黒に近いグレー、テキストは白、左側帯はRGB値それぞれを黒寄りに調整。)
(アイコン画像は適用前。クリックで拡大)
(アイコン画像は適用後。クリックで拡大)
- 名前を「App」として保存。(拡張子「icon」が付加される。)
- Xcodeを起動し、macOS>Application>Appを選択してプロジェクトを作成。
(注:このプロジェクトはAssets.carファイル作成のためだけのもので、コードは書きません。)- 左ペインにApp.iconをドラッグ&ドロップする。
- 中央ペインの「App Icon」をAppに変更する。
(クリックで拡大)
- ビルドする。
- ビルドされたアプリを、右クリック>パッケージの内容を表示、で開き、Resourcesフォルダー内のAssets.car、App.icnsファイルをコピーし、任意の場所(ここでは、以下で作成するXojoプロジェクトと同じフォルダー内)にペーストする。
Xojoでの実装
- Xojoで新規プロジェクトを作成(コードの実装はありません。ファイル関連の処理のみです。)
Tahoe上で設定を変更したところ、スタイルに応じて、アイコン画像が変化することを確認しました。
- 以下の内容でテキストファイルを作成し、名前をInfo.plistとして保存。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleIconName</key> <string>App</string> </dict> </plist>
- プロジェクトに、Info.plistをドラッグ&ドロップ。
- プロジェクト左ペインのBuild Settings>macOS上で右クリックし、Add to "Build Settings">Build Step>Copy Filesを選択。
- 右ペインの「Destination」にResources Folderを指定。
- 中央ペインにAssets.car、App.icnsをドラッグ&ドロップ。
- ビルドする。
おわりに
Icon Composer上でのカラーの変更は、単色ならば容易ですが、写真のような場合はどうすればいいのか、は未調査です。(そもそも、そんな複雑な画像を含むアイコンは使うな、ということなのかもしれませんが。)
あと、(光源位置以外の)ハイライトのカスタマイズが可能なのかも未調査です。(個人的にはもう少しマイルドにしたいのですが…)
お世話になったサイト
貴重な情報をご提供頂いている皆様に、お礼申し上げます。(以下、順不同)
参考サイト(1):Creating your app icon using Icon Composer | Apple Developer Documentation
更新履歴
2025.10.09 新規作成
[Home] [MacSoft] [Donation] [History] [Privacy Policy] [Affiliate Policy]