課題と解決策
クロスプラットフォームパッケージング
課題 — 単一のコードベースから、Windows(.msi)、Linux(.deb)、macOS(.dmg)向けのネイティブインストーラーを自動で生成する。
解決策 — Tauriが3つのプラットフォームをネイティブに処理。GitHub Actionsワークフローがランナーマトリクスを使用:
strategy:
matrix:
os: [ubuntu-22.04, windows-latest, macos-latest]各ランナーがtauri-apps/tauri-actionでそのプラットフォームのインストーラーを生成し、タグがプッシュされると自動的にGitHub Releaseに公開されます。
外部サーバーなしのOBSオーバーレイ
課題 — クラウドサービスやホストされたサーバーに依存せずに、デスクトップアプリがOBSのブラウザソースと通信する。
解決策 — Tauriアプリにtokio-tungsteniteでRust実装のWebSocketサーバーを組み込む。OBSは他のWebSocketと同様にlocalhost:9876に接続。アプリを閉じると接続が切れる。すべてローカルで完結。
Stream Deckとの同期
課題 — Stream DeckプラグインはアプリのデッキConfigを知る必要があるが、両者の直接結合は避けたい。
解決策 — シンプルなハンドシェイクプロトコル:起動時にプラグインがGET_DECKS_CONFIGを送信。アプリがデッキの完全リスト(名前、タイプ、base64アイコン)で応答。設定が変更された場合、ユーザーはプラグインから再同期をトリガーできる。
オーバーレイでのローカルアルバムアートワーク
課題 — アートワークは外部URLまたはローカルファイルから来ることがある。OBSオーバーレイ(ブラウザ)はユーザーのローカルファイルシステムにアクセスできない。
解決策 — ユーザーがローカルファイルを選択すると、TauriアプリがRust側で読み込みbase64に変換。画像はWebSocketメッセージにdata URIとして直接含まれる。オーバーレイはディスクに直接アクセスしない — すべてWebSocket経由。
バージョン同期
課題 — package.json、tauri.conf.json、Cargo.tomlの3つのファイルに同じバージョンが必要。忘れると不整合なビルドになる。
解決策 — scripts/sync-version.jsスクリプトがpackage.jsonからバージョンを読み取り、他の2つのファイルを自動更新。npmのprebuildとpretauriフックで各buildとtauriの前に自動実行され、手動更新を忘れることが不可能。

