elementary os 8 と WinApps で Microsoft Office 備忘録です.
結論から記すと,今回はじめて WinApps を利用しましたが,
いちおう使えますが,私の場合は常用は無理
だと感じました.本稿は以下の記事を主に参考にしましたが,英語版の Windows ではなく日本語版 Windows を入れる前提の部分に違いがあります.
必要なもの(事前準備)
OS
Debian 系なら他の Linux ディストリビューションでも多分大丈夫だと思いますが,今回やってみたのは elementary os ver. 8 です.
ライセンス
Windows 11 と Microsoft Office のライセンスが必要です.今回実際に使用したのは Office 365 です.
WinApps
WinApps の公式サイトは以下のとおりです.

この WinApps ですが,まず,docker もしくは podman のコンテナとして Windows を導入し,FreeRDP 経由で Microsoft Office 等のアプリを Linux から利用できるよう設定するもののようです.
WinApps で使用するコンテナは,

で公開されているもの(macOS のコンテナもある)です.
仕組みから予想できる通り,WinApps では Microsoft Office だけが対象ではなく,Windows で動作するありとあらゆるアプリが対象で,公式対応アプリとして挙げられているものだけでも,
- Microsoft Office 系のアプリ
- Adobe Photoshop 等のクリエイティブアプリ
- Visual Studio
- Autodesk Fusion 360
等があります.
導入
前提パッケージのインストール
まず,WinApps の前提となるパッケージを入れます.
$ sudo apt install podman podman-compose freerdp3-x11 $ sudo add-apt-repository universe $ sudo apt update $ sudo apt install dialog
WinApps の取得とコンテナの初期セットアップ
次に,WinApps を Git clone します.
$ git clone https://github.com/winapps-org/winapps.git $ cd winapps
日本語版の Windows がはじめから入るよう,WinApps の中にある compose.yaml に以下のように LANGUAGE: “Japanese” を追加しておきます.なお,標準状態のままだ英語版 Windows が導入された場合も,あとで日本語化可能です.ただし,なぜか私が試したときは中途半端にしか日本語化されなかったのと,日本語化自体にかなり時間がかかったので,はじめから日本語版の Windows を入れた方が良いとの判断です.
# For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows
...
services:
windows:
image: ghcr.io/dockur/windows:latest
container_name: WinApps # Created Docker VM Name.
environment:
# Version of Windows to configure. For valid options, visit:
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image
VERSION: "11"
RAM_SIZE: "4G" # RAM allocated to the Windows VM.
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
DISK_SIZE: "64G" # Size of the primary hard disk.
# DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below.
USERNAME: "MyWindowsUser" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'.
PASSWORD: "MyWindowsPassword" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'.
LANGUAGE: "Japanese"
HOME: "${HOME}" # Set path to Linux user home folder.
ports:
....
あとは,
$ podman-compose --file ./compose.yaml up
とすれば Windows のセットアップが行われます(かなり時間がかかります).
ブラウザで http://127.0.0.1:8006 にアクセスすることでコンテナにアクセスできるので,セットアップが完了後,Windows にログインして,ライセンス認証等を実施してください.ユーザー名とパスワードは上の compose.yaml で指定されている通り,
- USERNAME: “MyWindowsUser”
- PASSWORD: “MyWindowsPassword”
です.もちろん USERNAME と PASSWORD は自分の好みのものに変えることもできます.
コンテナ設定の変更
上の節の compose.yaml のままだと初期セットアップが再び行われてしまうので,コンテナのセットアップが終わったら,一旦,
$ podman-compose --file ./compose.yaml down
として,コンテナの動作を終了させてから,WinApps を Clone したフォルダの compose.yaml を
$ mkdir ~/.config/winapps
$ vi ~/.comfig/winapps/compose.yaml
として,その内容を以下のように書き換えます.
diff compose.yaml ~/winapps/compose.yaml 33c33,34 < restart: on-failure # Restart the Windows VM if the exit code indicates an error. --- > # restart: on-failure # Restart the Windows VM if the exit code indicates an error. > restart: always 38c39 < - ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'. --- > # - ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'.
また,同じところに FreeRDP の設定ファイルを以下の内容で準備します.
$ vi ~/.config/winapps/winapps.conf RDP_USER="MyWindowsUser" RDP_PASS="MyWindowsPassword" WAFLAVOR="podman" # 日本語 Microsoft IME を指定 RDP_FLAGS="/kbd:layout:0xE0010411"
Microsoft Office の導入
再度,今度は新しい設定で,コンテナを立ち上げます.
$ podman-compose --file ~/.config/winapps/compose.yaml up
立ち上がったら,ブラウザで http://127.0.0.1:8006 にアクセスすれば Windows のログイン画面にアクセスできるので, ログインして,Microsoft Office を(その他使いたいアプリがある場合はそれも)セットアップします.また,キーボードの配列を日本語キーボードに変更したり,ライセンス認証なども行ってください.
WinApps によるアプリのメニューへの登録
WinApps のスクリプトを使って,elementary os のアプリメニューに Microsoft Office を登録します.git clone したフォルダに移動して,setup.sh を起動するだけです.
$ cd winapps $ ~/setup.sh
すると以下の質問への回答を求められます(実際の質問は英文).
- 質問1: アプリのインストールをするのかアンインストールをするのか?
- 質問2: システムメニューにアプリを登録するか否か
- 質問3: 公式サポートされているアプリを自動登録するのか
質問に答えると,Windows にインストールされているアプリの情報を取得するプログラムが起動しますが,この処理に失敗する場合は,
$ podman-compose --file ~/.config/winapps/compose.yaml down $ podman-compose --file ~/.config/winapps/compose.yaml up $ ./setup.sh
としてコンテナを再起動した上で,setup.sh を起動し直せばうまく行くことが多いようです.また,~/.local/share/winapps 以下に FreeRDP 等のログファイルがあるので,その内容を調べるなどしてください.
Windows にインストールされているアプリの情報が全て取得できたとします.すると,WinApps から,
- Set up all detected officially supported applications
- Choose specific officially supported applications to set
- Skip setting up any officially supported applications
の3択のいずれかの選択を求められますが,
この選択を行う前に,別ターミナルで,~/.local/share/winapps/detected ファイルの内容を確認し,日本語が含まれている場合はその部分を削除する必要がある
ことにご注意ください.
このファイルには,検出された全てのアプリの情報が含まれていますが,WinApps の対応が不十分なせいか,この中に日本語のアプリ名等の情報があると,エラーで setup.sh の動作が停止します.このため,日本語のアプリ名のものについてはその情報を削除しないといけません.
削除が必要なのは,以下のような部分です.NAMES がアプリ名,EXES がアプリ本体の情報,ICONS がアイコンの情報なので,日本語名のアプリについては,これらをまとめて削除してください.
$ vi ~/.local/share/winapps/detected
....
NAMES+=("タッチ キーボードと手書きパネル")
EXES+=("C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe")
ICONS+=("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQ
AAAB/SURBVFhH7ZZBCsAgDAT3KT32iR59rNBntFgMtBK1hyYWugMLiSgZPAUghHyAFUAAEB2T5y0iEFJK2+5InlckTmJ9wYPyE3cB5atez1BAauueAk0B6ww
FpLbuKdAUsM5QQOre2RO0d/UsCqgC1ukKeHIVmL4P5M1k6kZEyL85ADbEwKQf9KzpAAAAAElFTkSuQmCC")
....
この作業後に,元のターミナルに戻り,3択のいずれかを選び,その後の質問に適当に答えると,elementary os のアプリメニューに Windows のアプリが登録されます.
Windows アプリの起動
登録されたアプリの情報は,システムメニューに登録を選んだ場合は,/usr/share/application 以下に,そうでない場合は,~/.local/share/applications 以下に登録されているはずです.
登録を確認できたら,1度 PC を再起動すれば,メニューに Windows アプリが出てくるはずです.あとはメニューのアプリを選択すれば,コンテナが起動してから選択したアプリも起動の流れで使用できます.
使用感
最初に書いた通り,
使えなくはないですが,個人的には常用は難しい
と感じました.
まず,見た目は完璧ですし,日本語の使用にも特に問題は感じませんでした.Word や Excel が Linux ネイティブなアプリであるかのように使える,しかも,(仕組みから考えればそれはそうなのですが)VBA などの利用にも対応しています.
しかし,実際に使ってみると,例えば Excel だと,データを入力してドラッグして値を補完するなどしようとすると,最初の3つ4つのセルについてはできますが,それ以降はフォーカスが外れて入力されなかったり,注釈を入れようとするとなぜか注釈を入力する部分が画面いっぱいに表示されたりと,業務でガシガシ使うにはどう考えても問題がある.
あと,起動にもやっぱりかなりの時間がかかります.
個人的には,素直に安価な Windows マシンを1台確保して,リモートデスクトップで使う方が無難だと思うし,どうしても1台で済ませたい,しかも Linux ベースのマシンで済ませたい場合も無償化された VMWare Workstation を使った方が良いと思います.
しかし,WinApps はともかく,その中で使われている Windows がコンテナとして動作するってのは面白いと思います.KVM とか使うより実際かなり手軽ですしね.Linux のコンテナなので,Linux ベースじゃないとダメだと思っていましたが,Linux に QEMU 組み合わせてその上で Windows 動かせば良いってことみたいです.
以上!

