こんにちは、臼田です。
みなさん、リモート開発してますか?(挨拶
今回はMicrosoft Dev Boxをセットアップして、Macから作業するための日本語環境を作成します。
概要
Microsoft Dev BoxはWindowsの開発環境をリモートPCとして作成し、開発者が自由に利用できるサービスです。組織の中で環境を定義しておき、開発者はプロジェクト単位でWindows環境を作成できるため、複数プロジェクトの開発を行う時もOSレベルで環境の分離ができます。
同一環境上で複数プロジェクトの開発を行うと、依存関係の解決などの問題が出るため、様々なレベルで環境の分離を検討します。しかしローカルPC上での環境分離には限界があります。OSレベルで環境の分離ができれば、ローカルPCや他の環境を汚すことなく開発が可能です。
現状ではMicrosoft Dev Boxで選択できるOSは英語のWindowsイメージのみです。最初のセットアップで日本語化をすることになるのですが(あるいはセットアップした後カスタムイメージを作成するのですが)、今回はMac環境から利用することを想定し、最適な日本語環境をセットアップしていきます。
ちなみに、余談ですがこのブログテキストはDev Box上で作成しており、リモート環境ながらまったく問題なくテキスト入力が可能です。この画面ではRTT8msとなっています。私の環境ではほぼ常時10msを下回っています。

もちろん利用する環境に依存する要素はありますが少なくとも私の環境では、脳汁を垂れ流しながらテキストを入力できるくらいには入力のレスポンスが問題ないため、リモート開発でも同様に問題がないでしょう。
前提条件と構成
Macから作業するための日本語環境を作成する、と最初に書きましたが、具体的には以下の状態とします。
- OSの言語が日本語になっている
- 106/109キーレイアウトに変更し日本語キーボードからのキー入力のズレをなくす
- IMEの切り替えをMacのキーボードから英数/かなキーを利用して行う
利用するOSや接続方法は以下の通りです。
- OS: Visual Studio 2022 Enterprise on Windows 11 Enterprise + Microsoft 365 Apps 22H2
- 接続方法: Microsoft Remote Desktop
なお、今回はRDPのツールで接続していますが、Microsoft Dev BoxではWebブラウザから利用するWebクライアントも利用できます。しかしながら、私が確認した限りでは現状で同じような使い方が難しかったため、対象外としています。具体的には、英数/かなキーの入力を適切に受け取ることができませんでした。もちろん、近しい状態に持って行って、ローカル環境とは少しIMEの切り替え方法などが異なるけど使える状態にすること自体は可能です。
Dev Boxの作成
それではまず、Dev Box(リモートPC)の作成を行っていきます。
今回は事前にMicrosoft Dev Boxの管理側の準備がほぼできているという想定でいきます。1から利用を開始する場合には以下の記事を参考にしてください。
Dev Boxの定義で前提条件のOSを確認します。以下の通り、「Visual Studio 2022 Enterprise on Windows 11 Enterprise + Microsoft 365 Apps 22H2」であることが確認できます。

それでは開発者として開発者ポータルにサインインし、Dev Boxを作成します。

作成したら、今回はMicrosoft Remote Desktopからの接続のため、Microsoft Remote Desktopを開きます。
最初のセットアップは以下の記事を参考にしてください。
既存でDev Boxを利用できる状態にしている場合、更新をしないと新しいDev Boxが表示されないため、以下のようにhoberしてRefleshボタンを表示して、更新しましょう。

新しい環境が表示されましたので接続します。

日本語化の設定
接続すると、デフォルトの状態のため日本語入力ができず、IMEも動いていない状態です。表示言語も英語ですね。

大体のWindows11環境の日本語化方法は以下2つの記事を参考に進めます。
作業内容は以下の通りです。
- 日本語の言語パック追加
- 英語の言語パックの削除
- キーボードレイアウトの変更
- IMEの設定変更
- リモート デスクトップ接続のキーボードレイアウトの変更
- 再起動
日本語の言語パック追加
まず「設定(Settings)」を開き、「Time & Language -> Language & region」を選択します。

最初は「English (United States)」のみがインストールされていることが確認できます。「Add a language」から日本語を追加していきます。

検索欄でjapanese
と入れていけばすぐに「日本語」が見つかるので、これを選択して「Next」を選択します。

「Optional language features」ですべてにチェックを入れて「Install」します。

インストールが始まり、しばらくすると完了します。

英語の言語パックの削除
日本語の言語パックのインストールが完了したら、英語の言語パックを削除します。英語の言語パック右側の「…」を選択して「Remove」を選択します。

キーボードレイアウトの変更
続いて言語オプションからキーボードレイアウトを変更していきます。日本語の言語パック右側の「…」を選択して「Language options」を選択します。

「Change layout」を選択して、「Japanese keyboard (106/109 keys)」を選択して「OK」します。この後の設定変更でも再起動が必要になるため、ここでは再起動しません。

IMEの設定変更
同じく「Language options」の下部から「Microsoft IME」右側の「…」を選択して「Keyboard options」を選択します。

「Key and touch customization」を選択します。

「Key assignment」で「Choose a preferred function for each key/key combination」を「On」にします。

「Muhenkan key」に「Hiragana/Katakana」が、「Henkan key」に「Reconversion」が選択されていることを確認します。
これによりMacキーボードで英数/かなキーを押すとIMEの切り替えが可能になります。(現時点ではそのように動きませんが)
リモート デスクトップ接続のキーボードレイアウトの変更
MacからMicrosoft Remote Desktopを利用してWindows環境に接続する場合に、先ほどの設定によるキーボードの認識が正しくされない問題があります。
レジストリを変更し対処します。
検索ボックスからregi
と入力し「Registry Editor」を起動します。

パスにHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411
を入力し、「Layout File」を右クリックして編集し、値をkbd106.dll
に変更します。

再起動
これで変更は一通り完了です。再起動前に、VSCodeを開いて変更前の動作を確認します。
現状では英数キーは「`」、shift+2(“)は「@」、^は「=」になるなど、キーボードレイアウトの違いによる動作が見れます。

それでは再起動してみましょう。

再起動後、各キーが想定通りに入力されました。英数/かなキーによりIMEが切り替わることも確認できました。

その他関連情報
Microsoft Remote DesktopのKeyboard Modeは「Scancode」と「Unicode」があります。Unicodeを利用すると、ローカルPCの入力を利用することができます。この場合、例えばMac環境でGoogle日本語を利用していたら、これを利用した入力が可能になります。ただこの場合、カーソル位置をトラッキングしてくれないので変換ウインドウが遠かったり画面を邪魔するなどの弊害があります。

リモート環境の整備が難しい場合には、Unicodeモードを利用するのも1つの選択肢ですが、整備できる場合にはリモート環境を整えてScancodeで利用することが良さそうです。ちなみに下記コマンドで切り替えながら利用することも可能です。
- Scancode: Ctrl+Command+K
- Unicode: Ctrl+Command+U
まとめ
Microsoft Dev Boxをセットアップして、Macから日本語で操作できる環境を作成しました。
いろんな条件を考えてセットアップすると大変なので、具体的な用途を絞り実施してみました。Windows環境ではRDPにおける言語周りの問題は複雑であるので、用途を絞るとやりやすくなると思います。是非活用してください。