コンテンツにスキップ

app 互換レイヤー:DuDuClaw OS 上で Windows / Android アプリを動かす

DuDuClaw OS 自体は Linux ベースの OS ですが、多くの人の手元には手放せない Windows や Android アプリがまだ残っています。app 互換レイヤーはその ために存在します:着脱可能な「互換レイヤーコンポーネント(runner)」の集 合を通じて、これらのアプリを DuDuClaw OS 上でインストール・実行できるよ うにします。方式は SteamOS が Windows ゲームを Linux 上で動かす仕組み (Proton)を参考にしており、同じアーキテクチャを Windows デスクトップア プリと Android アプリにも拡張しています。

あらかじめ期待値を設定しておきます:これは「どんなアプリでも必ず動 く」という機能ではありません。すべての互換レイヤーコンポーネントは、自 分が「何をサポートし、何をサポートせず、現在何が欠けているか」を正直に 表示します。「たぶん動くはずです」のような曖昧な言い方はしません。

compat.d は互換レイヤーコンポーネントの登録ディレクトリです。各コ ンポーネント(Bottles、Waydroid など)はここに宣言ファイルを1つ置き、以 下を記述します:

  • このコンポーネントがどのシステムからアプリを橋渡ししているか (Windows ゲーム / Windows アプリ / Android /「あなた自身の Mac に接続 し直す」)
  • どう起動するか
  • 動作にどのツールが必要か

宣言ファイルは2層に分かれて保存され、後者が前者を上書きします:

場所 誰が書き込むか
出荷層 /usr/share/duduclaw/compat.d/ システムイメージに工場出荷時から組み込み
データ層 ~/.duduclaw/compat.d/(または設定したデータディレクトリ) あなた自身または運用担当者が手動で置く上書き版

同じコンポーネント ID が両方の層に存在する場合、データ層が優先されます ——これにより、システムを再インストールしなくても、コンポーネントの設定 を上書き・微調整できます。

サードパーティも同じルールに従って自前の互換レイヤーコンポーネントを組 み込めます(コミュニティ管理の Proton 代替版など)。DuDuClaw 側で追加の 対応をする必要はありません。

本バージョン(CP-1)は「登録とヘルスチェック」のみを行います: duduclaw compat list はどのコンポーネントが存在し、何のツールが不足 しているかを教えてくれますが、アプリ本体をワンクリックで起動する機能 はまだありません——それは今後のバージョンの作業です。

現在どの互換レイヤーコンポーネントがあるか確認する

Section titled “現在どの互換レイヤーコンポーネントがあるか確認する”
ターミナルウィンドウ
duduclaw compat list

出力例:

相容層 runner(3 個):
ID 名稱 來源系統 狀態
------------------------------------------------------------------
bottles Bottles(Windows 應用轉譯) windows-app ready
waydroid Waydroid(Android 應用容器) android missing: waydroid, lxc-start
→ 見 docs/guides/app-compat.md 的 Waydroid 自裝入口段:...
windows-vm Windows 應用程式(完整 Windows 虛擬機) windows-app missing: docker, xfreerdp3
→ 尚未設定:先執行 `duduclaw compat windows-vm setup`(會走過資源門檻建議、硬體虛擬化檢查、授權責任揭露,再啟動容器)。

狀態(ステータス)列は現状を正直に反映します:

  • ready:必要なツールがすべて揃っており、コンポーネントは利用可能
  • missing: <ツール名>:コンポーネントは登録済みだが、必要なツールがま だ不足している(詳細は下記の各コンポーネントの説明を参照)
  • malformed:宣言ファイル自体が壊れている(通常は運用側の手動編集ミ ス)。他のコンポーネントの表示には影響しない

機械可読な形式が必要な場合(スクリプトで判定する場合など)は --json を 付けます:

ターミナルウィンドウ
duduclaw compat list --json

Windows デスクトップアプリ:Bottles

Section titled “Windows デスクトップアプリ:Bottles”

Bottles は Wine 互換レイヤーを通じて Windows アプリを実行し、Flathub 経 由でインストールします:

ターミナルウィンドウ
flatpak install flathub com.usebottles.bottles

インストールが完了すると、duduclaw compat listbottles のステー タスを missing: flatpak(またはコンポーネント自体が未インストール)か ら ready に切り替えます。

デスクトップのグラフィカルランチャー(Launcher)の 可安裝(インストール 可能)カテゴリから直接 Bottles を見つけ、安裝(インストール)をクリック して同じ確認フロー(ダウンロードサイズとインストール先を表示)を進むこ ともでき、コマンドラインを打つ必要はありません。このカテゴリの互換性バ ッジは「Partial」です(使えるが、何が欠けているかを明記):Bottles 自体 は DuDuClaw OS 上で実測動作が確認されています(QEMU での実地テスト: Flathub からシステムにインストール、GUI が正常に開く、Wine が実際の Windows 実行ファイル notepad を起動しウィンドウを描画)。バッジが 已驗證(「Verified」)ではなく「Partial」なのは、このランクが「これで Windows ソフトを動かす」という行為全体の利用可能範囲を語っているためで す——下記に明記された非対応リスト(新しい Office、LINE、AutoCAD 2018 以 降)は依然として有効です。

Bottles の適用範囲はありのまま受け止めてください——約束しているのは 以下だけです:

  • 古いバージョン、単体版、ポータブル版のツール
  • Wine 互換性データベース(AppDB)で「Silver」以上の評価を受けたソフト ウェア(古いバージョンの Photoshop CC、古いバージョンの Acrobat など)

明確に動作を保証していないもの(コミュニティの実測結果が一致して「使 用不可」と判定):

  • 直近3年(2023年以降)の Microsoft Office
  • LINE の Windows 版
  • AutoCAD 2018 以降のバージョン

これらのアプリは Bottles をインストールしても、実測結果ではほぼ正常に 動作しません。これらのソフトウェアで100%の互換性が必要な場合、正しい 選択肢は「本物の Windows」です——次の節「Windows アプリ(完全な仮想マシ ン)」を参照してください。Bottles で無理に動かそうとするのは避けてくだ さい。

Windows アプリ(完全な仮想マシン)

Section titled “Windows アプリ(完全な仮想マシン)”

Bottles は Windows API を変換するだけなので、直近3年の Microsoft 365、 AutoCAD 2018 以降、プリンターや USB 証明書デバイスを必要とする会計/ERP ソフトウェアについては、一律「動作を保証しない」対象です(前節参照)。 このカテゴリのソフトウェアには「本物の Windows」が必要であり、DuDuClaw OS はそのために別の経路を内蔵しています:ローカルに完全な Windows 仮 想マシンを構築し、ウィンドウ内ウィンドウ(一般的なアプリのウィンドウの ように見え、画面全体ではない)を通じて単一の Windows アプリを実行しま す。

これはプリインストールされた機能ではありません:DuDuClaw は Windows のライセンスキーをランダムに出荷したり、代理購入したり、代理管 理したりすることは一切なく、Windows のインストールイメージを事前にダウ ンロードすることもありません。フロー全体はガイド付きですが、各ステップ はあなた自身がトリガーし、確認する必要があります。

項目 下限 推奨
ホスト(当番機)の総メモリ 16GB 以上
仮想マシンの常駐メモリ 4GB 8GB
仮想マシンのディスク容量 32GB アプリの必要量に応じて(Windows 本体+インストールするソフトウェア)

ホストのメモリが推奨しきい値を下回っている場合、 duduclaw compat windows-vm setup は注意を表示するだけで、続行を止め ることはありません——これは推奨値であり、強制的な制限ではありません。

setup を実行する前に、以下の3点を確認してください——これは DuDuClaw の規約ではなく、実際のライセンスの現状です:

  1. Windows 11 Pro 以上の正規ライセンスを自分で用意する必要がありま す。 この仮想マシンにインストールされるのは実際の Windows であり、 ライセンスの責任はあなた自身が負います。DuDuClaw はライセンスを提供 も付属もしません。
  2. Home エディションは RemoteApp のウィンドウ内ウィンドウをサポート しません。 これは上流の WinApps プロジェクトのドキュメントに明記 されているハード要件であり、DuDuClaw の制限ではありません——Home エ ディションのライセンスでもアプリ自体はインストールできる可能性があ りますが、「ウィンドウ内ウィンドウ」の体験は得られません。
  3. PC やノート PC に付属する OEM ライセンスは、通常仮想化利用権を含 みません。 これは Microsoft 公式のライセンス条項そのものの立場で す——機器に工場出荷時から付属する Windows ライセンスをこの仮想マシン にインストールすることは、ライセンス条項に違反する可能性がありま す。

setup 実行時にこの開示内容が完全に表示され、明示的な確認(対話型ター ミナルでの確認文言の入力、または --yes を渡すことで読んで同意したこ とを示す)を求められてから続行します。

ターミナルウィンドウ
# 1. ガイド付きセットアップ:リソースしきい値の提案 -> ハードウェア仮想化チェック -> ライセンス開示への確認 -> 設定生成 -> コンテナ起動
duduclaw compat windows-vm setup
# リソースと Windows バージョンは調整可能(どちらもデフォルト値があるので、指定しなくてもよい):
duduclaw compat windows-vm setup --ram 16 --disk 128 --version 11
# 非対話環境(スクリプト/CI):--yes は上記のライセンス責任を読んで同意したことを意味する
duduclaw compat windows-vm setup --yes
# 2. コンテナの状態を確認
duduclaw compat windows-vm status
# 3. インストール完了後、Windows アプリをウィンドウ内ウィンドウで起動
duduclaw compat windows-vm app winword.exe --name "Word"

setup は空の Windows 仮想マシンコンテナを起動するだけです—— Windows のインストールイメージは事前にダウンロードも内蔵もされませ ん。コンテナが初めて起動した後、自動的にダウンロードがトリガーされ、 ブラウザで http://127.0.0.1:8006 を開けばインストールの進行状況を確 認できます(初回インストールにはしばらく時間がかかります——実際の長さ はネットワーク状況と選択した Windows バージョンによります)。インスト ールが完了するまで、compat windows-vm app は正常に接続できません。

app サブコマンドは FreeRDP 3 の RemoteApp(RAIL)モードで接続するた め、X11/XWayland ディスプレイのあるグラフィカルセッション内で実行する 必要があります(Bottles/Wine と同じ前提条件)。パスワードは常に標準入 力経由で RDP クライアントに渡され、コマンドライン引数やプロセス一覧に 現れることはありません。

Windows アプリをランチャーにピン留めする

Section titled “Windows アプリをランチャーにピン留めする”

Windows アプリをインストールしたら、app-add を使ってデスクトップのグ ラフィカルランチャー(Launcher)にピン留めできます。毎回コマンドを打つ 必要がなくなります:

ターミナルウィンドウ
# アプリをピン留めする(<実行ファイル> は setup 完了後に app サブコマンドで使うのと同じパス表記)
duduclaw compat windows-vm app-add winword.exe --name "Word"
# 現在ピン留めされているものを確認
duduclaw compat windows-vm app-list
# ピン留めを解除する(<実行ファイル> は当初 app-add に渡したものと完全に一致させる必要があり、あいまい一致には対応しない)
duduclaw compat windows-vm app-remove winword.exe

ピン留めが成功すると、最長60秒(Launcher のバックグラウンド再スキャン 周期)以内に「<名前>(Windows)」という形式でランチャーの「應用程式」 (アプリ)リストに表示されます。クリックするとバックグラウンドで duduclaw compat windows-vm app <実行ファイル> が実行され、ウィンドウ 内ウィンドウを開いてくれます——手動でコマンドラインに入力するのと同じ 経路で、入力の手間が省けるだけです。これらの項目には専用の 疊窗(重ね 窓)アイコンが付きます(前後2層のウィンドウ形状で、プログラムが仮想マ シン内にあり、ウィンドウ内ウィンドウとしてデスクトップに投影されている ことを表します)。仮想マシン内のプログラムは実際のアイコンファイルを取 得できないため、すべてのピン留め項目はこの1つの正直なプレースホルダー マークを共有し、個別に偽装することはしません。

setup を一度も実行していないマシンでは、ランチャーに Windows 項目 はまったく表示されません——これは意図的な、正直な沈黙です: app-add/app-list が読み書きする登録ファイル (~/.duduclaw/windows-vm/apps.toml)は、setup がまだ実行されていな いマシンにはそもそも存在しないため、ランチャーはエラーや空欄を表示する のではなく、そのカテゴリ自体がまったく現れません。

DuDuClaw OS ではこのレジストリは /data/system/windows-vm/apps.toml に置かれます(イメージが gateway と root のシェルに DUDUCLAW_WINDOWS_VM_APPS_DIR=/data/system/windows-vm を設定します)。/data/duduclaw は同梱 AI CLI を動かすときの gateway のホームで各社のログイントークンを含むため 0700 になっており、キオスクのシェルはその中のファイルを読めません。移動するのはレジストリだけで、compose.yaml と VM のストレージは /data/duduclaw/windows-vm のままです。

同じ実行ファイルに対して再度 app-add を実行すると、既存の表示名が上 書きされ、重複した項目は生成されません。

ハードウェア仮想化(KVM)は必須要件

Section titled “ハードウェア仮想化(KVM)は必須要件”

このルートには、ホストがハードウェア仮想化をサポートしていることが必要 です(CPU の VT-x/AMD-V 機能、Linux カーネルで kvm モジュールが有効 化・ロードされていること)。setup はライセンス開示より前に /dev/kvm の存在をチェックします——見つからなければ理由を説明してその場で失敗し、 ソフトウェアエミュレーションへのフォールバックは行いません(そのような 性能では実用にならず、dockur/windows 自体にもそのようなフォールバック はありません)。

  • setup/status 自体は依然としてコマンドライン形式のフローです(ラ イセンス開示への確認、リソースしきい値の提案といった、人が自分で確認 すべきステップは、一発勝負のグラフィカルウィザードのポップアップには 収まりません)。「アプリがワンクリックでグラフィカルインターフェース のランチャーに現れる」部分はすでに実現済みです——前節「Windows アプ リをランチャーにピン留めする」を参照してください。
  • Windows VM が実際に起動できるか、ウィンドウ内ウィンドウの使い心地が 良いかは、実機またはクラウドホストでしか検証できません——QEMU のテス ト環境自体は通常ネストされた仮想化を持たないため、上記の KVM チェッ クによって正直にブロックされます。
  • ランチャーにピン留めされた Windows 項目は 疊窗(重ね窓)の出所アイコ ンを共有し、Bottles はインストール可能リストで 雙瓶(二本瓶)アイコ ンを使います(2026-08-31 のデザインレビューでの決定)。仮想マシン内 の個別プログラムの実際のアイコンファイルは依然として取得できません ——これはプラットフォームの制限であり、未対応項目ではありません。

Waydroid は Android アプリコンテナで、DuDuClaw OS 上でモバイルアプリ (LINE など)をインストール・実行できるようにします。

なぜ自分でセットアップする必要があるのか

Section titled “なぜ自分でセットアップする必要があるのか”

DuDuClaw OS は Google サービスフレームワーク(GApps)と ARM アプリ変換 コンポーネントを工場出荷時に内蔵していません。理由は単純です:これ らのコンポーネントの出所が不透明(Windows Subsystem for Android のリバ ースエンジニアリングに由来)であり、DuDuClaw には正当な再配布権がない ため、事前にインストールして提供することはしませんし、できません。

つまり:

  1. Google Play デバイス認証を自分で完了させる必要があります(デバ イスごとに1回でよい)——これは Google 公式のセルフサービスフローで あり、一般的な Android デバイスをカスタム ROM 化した後に行う認証手 順と同じです。DuDuClaw 特製のものではありません。
  2. 実行したいアプリが x86/x86_64 版を持たず ARM 版しかない場合、ARM 変 換コンポーネントを自分で追加する必要があります。これらのコンポーネ ントの品質と互換性は出所によって異なり、DuDuClaw はあなたに代わって 保証することはできません。

duduclaw compat listwaydroid の不足コンポーネントを表示するの は正常な状態であり、システム障害ではありません——これは「コンテナ本体 は登録済みだが、基盤となる依存関係(waydroid/lxc-start)や、自分で 補う必要がある認証/変換コンポーネントがまだ揃っていない」ことを正直に 反映しています。

LINE は arm64 ハードウェア上で「インストール → 起動 → QRコードスキャン でログイン」の全フローが動作することが完全に検証されています(LINE の 副裝置(Sub device)モードを使用し、あなたのスマートフォンは通常どおり ログイン状態を維持します)。これは現時点で実測の証拠に裏付けられた唯一 の事例です。他のアプリについては自己責任で評価してください——全面的な 保証を意味するものではありません。

macOS アプリ:ローカル実行には対応しません

Section titled “macOS アプリ:ローカル実行には対応しません”

DuDuClaw OS は Apple 製以外のハードウェア上で macOS アプリを直接実行 できるようにすることは決してありませんし、できません——これは技術的 な選択ではなく、Apple のソフトウェアライセンス条項と米国の判例法 (Apple v. Psystar)が引いた法的な一線であり、DuDuClaw はそれを越えま せん。

代わりに提供するのは、合法かつ実用的な別の道です:DuDuClaw OS のデス クトップから、あなた自身の Mac を直接操作できる内蔵のリモート接続ツー ルです(Mac は電源を入れたまま、あなた自身がログインした状態を保つ 必要があります)。Mac 上の専用ソフトウェアは、あくまであなたの Mac 上 で動作し続けます。DuDuClaw OS は操作ウィンドウが1つ増えるだけです。

言い換えれば:DuDuClaw OS はあなたの Mac と手を取り合って動作するので あって、それを置き換えるものではありません。