Glazeで背景透過Macアプリを作る — 初回生成から改善までの記録

Glazeで背景透過Macアプリを作る — 初回生成から改善までの記録

Raycast開発元の Glaze を初めて使い、コードを書かず約1時間(76分)で実用的な Mac アプリ「Quick Transparent」を完成させた体験記。プロンプトのやり取りと改善の過程をそのまま記録しています。

17min

Raycast を作った会社が、新しいデスクトップアプリビルダー Glaze(新しいタブで開く) のパブリックベータ版を2026年7月1日に公開しました。AI との対話で Mac 向けアプリが作れるという触れ込みで、気になっていたので早速インストールしてみました。

コードを一行も書かず、約1時間(Glaze の生成時間は合計76分)で実用的な Mac アプリができた — その記録です。最初の製作物は、画像の背景透過だけに特化した Quick Transparent。1回のプロンプトでどこまでできるのか、実際に触ってからどう改善していったのかをまとめています。

Glazeとは?

Glaze は、Raycast と同じ開発元が作った Mac 向けデスクトップアプリビルダー です。自然言語で要件を伝えると、アプリの生成からビルドまでを AI が代行してくれます。

ストアへの公開や他ユーザーが作ったアプリのインストールもサポートされており、Raycast のエコシステムに近い「作って、共有する」体験をデスクトップアプリの領域に持ち込んだツール、という印象です。

今回試してみた動機はシンプルで、「自分が日常で使いたい小さな Mac アプリを、コードを書かずに作れるのか」 を確かめたかったからです。背景透過はブログや資料作成でよく使うので、最初の題材に選びました。

インストールとオンボーディング

Glaze は公式サイトからダウンロードできます。

初回起動時には 7 ステップのオンボーディングが表示されます。Glaze の全体像がひと目でわかる構成になっていました。

(1/7) Glaze へのサインイン

Glaze 初回起動時のサインイン画面(オンボーディング 1/7)
Glaze 初回起動時のサインイン画面(オンボーディング 1/7)

(2/7) いろんなデスクトップアプリを構築

Glaze オンボーディング:いろんなデスクトップアプリを構築できることを示す画面(2/7)
Glaze オンボーディング:いろんなデスクトップアプリを構築できることを示す画面(2/7)

(3/7) ストアに公開して共有

Glaze オンボーディング:ストアに公開して他ユーザーと共有できることを示す画面(3/7)
Glaze オンボーディング:ストアに公開して他ユーザーと共有できることを示す画面(3/7)

(4/7) 検索してアプリをインストール

Glaze オンボーディング:アプリを検索してインストールできる画面(4/7)
Glaze オンボーディング:アプリを検索してインストールできる画面(4/7)

(5/7) コミュニティに参加してフィードバック

Glaze オンボーディング:コミュニティに参加してフィードバックを送れる画面(5/7)
Glaze オンボーディング:コミュニティに参加してフィードバックを送れる画面(5/7)

(6/7) Glaze のサブスクプラン

Glaze オンボーディング:サブスクリプションプランを選択する画面(6/7)
Glaze オンボーディング:サブスクリプションプランを選択する画面(6/7)

(7/7) Glaze のトップ画面

Glaze のトップ画面。新しいアプリの作成や既存アプリの管理ができる(7/7)
Glaze のトップ画面。新しいアプリの作成や既存アプリの管理ができる(7/7)

オンボーディングを終えると、Glaze のトップ画面から新しいアプリの作成に入れます。ここからが本番です。

最初のアプリ — 背景透過ツールを作る

最初に作ったアプリは Quick Transparent という名前の、背景透過専用ツールです。

要件は次のとおりに絞りました。

  • ドラッグ&ドロップで画像を受け取る
  • Mac の Vision Framework で ローカル・オフライン に背景を除去する(API キー不要)
  • 元画像と透過結果を並べてプレビュー
  • 透過 PNG を保存できる
  • 複数画像のバッチ処理に対応
  • Liquid Glass 風のミニマルな UI、ダーク/ライトモード、メニューバーアイコン

「背景透過以外の機能は入れない」と明示したのがポイントです。最初から機能を増やしすぎると、品質の確認が難しくなると思ったからです。

使ったプロンプトは以下です。

Please create a simple, beautiful Mac desktop app named "Quick Transparent."
Key Features:
- Main window that accepts images via drag-and-drop
- "Remove Background" button (or automatic processing)
- Fast, local background removal using the Mac Vision Framework (no API key required)
- Instant preview of results (side-by-side comparison of the original image and the transparent PNG)
- "Save" button to export the transparent PNG to a chosen location
- Batch processing support: drop multiple images at once for simultaneous processing
UI Features:
- Clean, minimalist design (Liquid Glass style)
- Dark/Light mode support
- Menu bar icon for quick access
- Progress indicator during processing
- Completion notification
Fully offline-capable. Please also generate a beautiful default icon. Focus strictly on background removal and keep other features to a minimum.

Glaze の生成に 27 分 2 秒 かかり、完了しました。プロンプトは 1 回だけです。

初回生成の結果と課題

生成されたアプリを実際に動かしてみました。試しに使ったのは、宇宙飛行士のアイコン画像です。

オリジナル画像

背景透過のテストに使った宇宙飛行士アイコンのオリジナル画像
背景透過のテストに使った宇宙飛行士アイコンのオリジナル画像

透過後の画像

Quick Transparent で背景を透過した宇宙飛行士アイコン。右腕と腰の隙間も透過されている
Quick Transparent で背景を透過した宇宙飛行士アイコン。右腕と腰の隙間も透過されている

単色背景で透過しやすい画像ではありますが、右腕と腰の隙間までちゃんと透過 されていて、初回生成としてはかなり良い結果でした。処理速度も速く、ローカルで完結する点も期待どおりです。

一方で、使ってみると次の点が気になりました。

  • ドラッグ&ドロップが反応しない — Finder からウィンドウへドロップしても処理が始まらない
  • 並列プレビューが表示されない — Original / Transparent の比較が見えない

コア機能(背景除去そのもの)は動いていたので、「あと一歩」という状態でした。ここからプロンプトで改善を重ねていきます。

プロンプトで改善を重ねる

Glaze とのやり取りは、だいたい 「要望を伝える → Glaze がアプリを生成・ビルドする(数分〜十数分) → できあがったアプリを試す」 の繰り返しです。7 回のイテレーションを経て、実用レベルまで仕上がりました。

各プロンプトの Glaze 生成時間は次のとおりです(プロンプトを渡してから生成が完了するまでの所要時間)。

#内容Glaze 生成時間
初回背景透過アプリの新規作成27 分 2 秒
ドラッグ&ドロップ・プレビュー・エッジ品質の修正9 分 14 秒
Raycast との連携16 分 6 秒
保存設定のカスタマイズ8 分 17 秒
設定項目の拡充5 分 55 秒
Raycast スクリプトと settings.json の同期4 分 34 秒
通知をアプリ内トーストに変更4 分 55 秒

合計はおおよそ 76 分 です。初回生成が最も長く、その後の改善は 5〜16 分程度で回せました。

① ドラッグ&ドロップ・プレビュー・エッジ品質の修正

最初の改善プロンプトです。

Great first version! The background removal works well overall and the processing speed is fast. However, please improve the following points:
1. Fix drag & drop support — users should be able to drag images directly onto the app window (single or multiple files) and they should process automatically.
2. The side-by-side Original vs Transparent preview is not showing. Please make sure both images appear clearly.
3. Improve edge quality, especially for portraits and images with complex backgrounds. Focus on better hair, fine details, and smoother edges.
4. Keep the current strengths: fast local Vision Framework processing, batch support, Save All functionality, Liquid Glass design, menu bar icon, and notifications.
Please regenerate the app with these fixes. Make the UI clean and intuitive.

Glaze 側の対応内容を要約すると、次のとおりです。

  • ドラッグ&ドロップ — document レベルのリスナーに変更し、ウィンドウ内どこにドロップしても受け取れるように
  • プレビュー — Content-Security-Policy でカスタム画像スキーム qt-img: がブロックされていたのが原因。img-src / connect-src に追加して解消
  • エッジ品質 — Swift 側を手動マスク合成から Apple の generateMaskedImage(subject-compositing API)に切り替え、髪の毛や細部のエッジを改善

プレビューはこの修正で表示されるようになりました。ドラッグ&ドロップは、まだ Finder からのドロップが反応しない状態が続きました。

② Raycast との連携

プレビューは直ったものの、ドラッグ&ドロップは依然として動きませんでした。加えて、普段 Raycast を使っているので ホットキー一発で背景透過したい という要望も出てきました。

Thank you for the updates. Preview is now working well.
However, drag & drop is still not responding when I drop files from Finder onto the app window. Please fix this reliably (document-level drop handling).
New feature request:
Make this app work seamlessly with Raycast.
- Add support for Raycast command integration so users can trigger this app directly from Raycast using a custom hotkey.
- When triggered from Raycast:
1. Immediately open the native file picker (NSOpenPanel) to select one or multiple images.
2. Automatically process the selected images (remove background).
3. Automatically save the transparent PNGs to the Desktop (or a configurable folder) with suffix "_transparent".
4. Show a completion notification with the number of processed images.
This allows quick background removal without having to switch to or open the Glaze app manually while working in other apps.
Please implement this Raycast-friendly workflow as the primary quick-action mode, while keeping the existing window-based UI for manual use.

ここでの主な変更点です。

  • ドラッグ&ドロップ(再修正)getPathForFile が空文字を返すケースでは、ファイルのバイト列を読み取ってバックエンドに書き出してから処理する fallback を追加。これで Finder からのドロップが通るようになった
  • Raycast 連携 — Glaze 側でカスタム URL スキームが使えないため、Raycast Script Commandraycast/remove-background.sh)を同梱。ホットキーを割り当てると、ファイルピッカー → 処理 → デスクトップへ <name>_transparent.png として保存、まで一気通貫
  • メニューバーからも同じクイックアクション — Raycast を使わなくても、トレイアイコンから同じフローを実行可能

アプリのコア部分がここで一通り形になりました。

③ 保存設定のカスタマイズ

保存先やファイル名のルールを固定値から外したい、という要望です。

Currently, files are saved to the desktop, but I would like to be able to configure the save location.
Currently, "_transparent" is appended to the end of the saved filename, but I would like to be able to customize this.

Settings ウィンドウ(⌘,)に Saving セクションが追加されました。

  • Save Folder — 保存先フォルダ(デフォルトは Desktop)
  • Filename Suffix — ファイル名サフィックス(デフォルトは _transparent、空にすれば元のファイル名のまま)

ウィンドウからの Save / Save All、メニューバーのクイックアクション、Raycast スクリプトのすべてで命名ルールが統一されました。以前はウィンドウ保存が -transparent、クイックアクションが _transparent と食い違っていたのも、このタイミングで修正されています。

④ 設定項目の拡充

Settings が使いやすくなってきたので、ワークフロー向けの項目を追加しました。

The new settings window is great!
Additional improvements:
- Add a checkbox "Open folder after saving" (especially useful for Save All)
- Add an option "Copy transparent image to clipboard after processing"
- Make the Settings window accessible from the menu bar icon as well
Overall it's becoming really polished.

追加された設定は次の 2 つです(macOS 標準のスイッチ UI)。

  • Open Folder After Saving — 保存後に Finder でファイルまたはフォルダを開く
  • Copy to Clipboard After Processing — 処理後に透過 PNG をクリップボードへコピー(バッチ処理時は最後の 1 枚)

メニューバーアイコンからも Settings を開けるようになり、トレイだけで完結する操作が増えました。

⑤ Raycast スクリプトをアプリの settings.json と同期

Raycast スクリプトは独立実行のため、当初は環境変数で設定を持っていました。アプリ本体と設定が二重管理になるのが気になったので、同期を依頼しました。

Can we make the Raycast script (`raycast/remove-background.sh`) read the same settings as the main app?
Currently the script uses its own env variables, but I want it to automatically use the settings from the app's `settings.json` (save folder, suffix, open folder after save, copy to clipboard).
If possible, make the script:
- Check if the main app's settings.json exists
- Fall back to the app's settings (save folder, suffix, QT_OPEN, QT_COPY etc.)
- Still allow overriding with env variables if needed
This way both the standalone app and Raycast hotkey use exactly the same configuration.

スクリプトは起動時にアプリの settings.jsonplutil で読み取り、環境変数 > settings.json > デフォルト値 の優先順位で設定を解決するようになりました。アプリ側で保存先やサフィックスを変えれば、Raycast のホットキーにも即反映されます。アプリの再ビルドは不要で、スクリプトだけの変更で済んだのも助かりました。

⑥ 通知をアプリ内トーストに変更

macOS のシステム通知ではなく、アプリ内で完結させたかったので、最後にこう伝えました。

All notifications should be handled entirely within the app, rather than through macOS.

ドラッグ&ドロップや Add Images の完了通知は、アプリ内トーストで表示されるようになりました。メニューバーの「Quick Remove Background…」実行時は、通知を出すためにウィンドウを前面に出してからトーストを表示する挙動です。

Raycast スクリプトはアプリプロセスの外で動くため、こちらは引き続き macOS の display notification を使います。独立したスクリプトとしては妥当な切り分けだと思いました。

完成したアプリ

最終的にできあがった Quick Transparent の画面です。

トップ画面

Quick Transparent アプリのトップ画面。画像のドロップエリアと Liquid Glass 風の UI
Quick Transparent アプリのトップ画面。画像のドロップエリアと Liquid Glass 風の UI

動物の画像を加工した結果

Quick Transparent で動物の画像を背景透過した結果。オリジナルと透過後を並べて比較表示
Quick Transparent で動物の画像を背景透過した結果。オリジナルと透過後を並べて比較表示

人物・単色背景の画像を加工した結果

Quick Transparent で人物・単色背景の画像を背景透過した結果画面
Quick Transparent で人物・単色背景の画像を背景透過した結果画面

Liquid Glass 風の UI、並列プレビュー、バッチ処理、Settings、メニューバー、Raycast 連携まで揃った状態です。Glaze のストアにも公開しています。

やってみた感想

無料で付与されたトークンだけで、自分の欲しい Mac デスクトップアプリが作れた のは、新しい体験でした。背景透過という一機能に絞ったとはいえ、Settings や Raycast 連携、設定の同期まで到達できたのは Glaze の対話型ビルドの強みを感じるところです。

加工精度も、ブログのアイコンや資料用の切り抜きとして 十分実用レベル だと思います。プロ向けのマスキングツールと比べると当然限界はありますが、「サッと透過して保存 or クリップボードへ」という用途なら問題なく使えます。

一方で、初回生成だけでは完璧には動かない部分もありました。ドラッグ&ドロップは 2 回の修正を経てようやく安定し、Raycast 連携も Glaze 側の制約を踏まえた別ルート(Script Command)での実装になりました。「動くものが返ってくる → 実際に触って不足を伝える → 数分〜十数分で直る」 というサイクルを回す前提のツール、という理解が近いかもしれません。

Glaze を触ってみて「自分だけの小さな Mac アプリ、作ってみたい」と思った方の参考になればうれしいです。背景透過以外でも、機能を絞って最初の 1 本を作るのがよさそうだと感じました。

imaikosuke

imaikosuke

Tokyo-based software engineer. Writing about tech and daily learnings.

@imaikosuke_