この記事はtraPアドベントカレンダー2023 16日目の記事です
【注意】この記事は パソコン初心者(traP比)[1] の自分がリモートデスクトップ環境(RDP環境)を作ろうと右往左往しているさまを徒然なるままに書き記したものです。 技術的な要素の収穫は(記事の長さに対して)そこまで見込めないのでその点ご了承ください。
また、一部用語について使い方が誤っている,適切でない部分があるかと思いますがその際は指摘くださると助かります。
RDP環境及びデスクトップPCについて
リモートデスクトップ環境。リモートもデスクトップも環境も大体の人が聞いたことがあるワードだと思いますが、概ねそれらの意味を統合させたものに近いです。細かいこと抜きにして言えば遠地にあるデスクトップPCを手元環境のノートPCで操作しようってことです。
デスクトップPCについて色々
一応デスクトップ(PC)について。これは基本的に持ち運ぶことのない据え置きのパソコンのことを指します。[2]反対に携帯デバイスとして持ち運ぶことを想定しているものがノート(もしくはラップトップ)PCと呼ばれています。[3]最近ではノートPC(やスマホ)のスペックも十分に高くなりネットサーフィンやレポートの作成,Unityを用いたゲーム開発まで行えるようになっています。というか入学時の自分のデスクトップPC(4年前のミドルくらい)は入学時に買ったMacBookに完全に抜かされてた。[4][5]
しかし心配不要。デスクトップPCは後から幾らでも強くできます。CPUやGPUに代表される部品群を強いものに更新していけばいいのです。そのため基本的にはノートPCよりもデスクトップPCの方が性能は高くなります。逆に言えばRDP環境を作ればノートPCのスペックもネットサーフィンが快適にできるくらいで十分になります。家電量販店のハイスペックノートPCの罠に嵌らなくなりますね。
ちなみに中の部品をすべて取り換えたデスクトップPCを果たして購入当初のデスクトップPCと言えるかについてはまた別の話です(cf:テセウスの船)
なぜRDP環境が欲しくなった?
遠地で自宅環境のデスクトップを操作できるメリットは幅広く人の数だけ理由がありそうな部分でもありますが自分の場合は以下のように集約されていました。
- Mac環境でWindows系ソフトウェアを操作したい
- BootCampやWineを使う方法もありますが自分はどちらもうまくいきませんでした
- 自宅での開発環境も整ったのでより互換性を高めたい
- ファイル等のやり取りを行うのが面倒になってきた
Windows派閥としてのMacに対する必死の抵抗- etc.
実際に現在大詰めを迎えている部内冬ハッカソンではバックエンドの環境構築がWindows(上のWSLで動かしている人)向けのみで十分となり環境構築を担当してくれた方の負担を減らすことに貢献していました。[6]
以下はWSL仮想環境を開いているWindowsの画面をリモートデスクトップを通してMacから見ている図です。3つのOSがここに集合 なんちゃって
RDP環境を作ってみた
RDP環境を作る方法はネットワークの知識,SysAdの能力,かけられる時間及び費用コストに比例して増加していきますが、RDPについて何も知らなかった頃の自分には一択しかありませんでした。
MicrosoftRemoteDesktopなど有名なものが色々ありますが、ネットワーク周りの設定で詰まってしまいました。(あと家のネットがアパート共同回線なせいで色々弄れなかった)
Chrome リモートデスクトップ
はじめに手をつけたChromeリモートデスクトップが自分には最適解でした
手順
- GoogleChromeを導入
- 拡張機能 リモートデスクトップ を導入
- クライアント側(操作する側),ホスト側(操作される側)双方で同じgoogleアカウントにログインしておく
- あとは案内に沿ってやればOk
メリット
- 導入がとても簡単。普通にアプリDLしての感覚でできる。他の方法はネットワーク周りの知識やセキュリティの観点から設定が複雑だったりする。
- Googleのサーバーを経由して操作を行っているため(参考)
- ラグも少なくコーディング等マウスをあまり使わない操作であれば比較的快適に操作できる
- もちろん回線速度の影響はありますが
実際にラグを計測したところ以下のようになりました。回線状況については双方とも良好なはずです(Web時計を使った雑な測定ではありますが)
FPSでもやらない限り気にするようなものでもないでしょう。
ちょっと気になる
- 画質はどうしても劣化してしまう。なんか若干粗っぽくはなります
- 特に4K出力とかしている人の場合は顕著になりそうです(自分はFHDですが)
- ホスト側で複数モニター出力している場合は表示が小さくなるらしい
- 初期設定では複数モニター部分を含めて全て一つの画面として表示しようとしているため
- 表示するディスプレイを選ぶ設定はできるため、これを施せば良い
- 複数ディスプレイ使うような作業は 帰宅してやりましょう
- マウス操作のレスポンスがやや気になる
- キーボード入力についてはあまり気にならないがマウス操作が若干粘度のある感じに
- 視点操作をマウスで行っている一部のゲームについては荒ぶったりマウスカーソルが表示されてしまったり(例:Minecraft)
- MacとWindowsの場合キーコンフィグがぁぁぁぁぁぁぁ→次項で解説
画面系については自分はシングルFHDモニターのため問題ないですがマウス系についてはやっぱり気になるところがまだ多い印象。でもこういった気になる点って大体自分のリサーチ不足だったりもするので気が乗った時に調べてみようと思ってたり。
キーコンフィグをしてみよう(Mac to Windows)
ご存知の方も多い通り、若しくは知って頂きたいこととしてWindowsとMacのキー配置はそこそこ異なります。
特に特徴的なのはかな英数切り替えがMacだとスペースバー隣接だったり(日本語キーボード)ctrl,altキー相当のものがcmdやoptionみたいな感じになってたり(完全互換というわけではない)
というわけで、リモートデスクトップ中にのみキーコンフィグ設定を施してできる限り手元のパソコンの操作感に近い状態でWindowsを操作できるようにしようと思いました。
用いたツールはKarabiner-Elementsです。
変えたいキーは?
以下は実際に設定したキーコンフィグのリストです。解説は下でしてます
Mac | → | Windows |
---|---|---|
leftcommand | → | control |
option | → | Windowsキー |
^control | → | alt |
かな | → | 半角/英数キー(` に相当) |
英数 | → | 半角/英数キー |
command+←/→ | → | home/end キー |
leftcommand(以下cmd),option,^controlキー:Windows各種キーとの対応用
cmd+C/X/V でコピー/切り取り/貼り付け のようにWindowsでのCtrl+C/X/Y/etc. キーの操作はcmdキーに割り当てられているためleftcmd->controlに
キー配置的に近い位置にあるoptionキーをwindowsキーに
余った^controlキーについてはaltキーに振り分けました(optionと^controlの関係を逆にしている人もいるみたいです)
かな英数関連
かなと英数をスペースバーの左右で切り替えるのもまたwindowsとmacの大きな相違点。ずっとWindows使ってた人間でも3ヶ月程度もすれば慣れるもんだから人間の適応力ってすごい。
とはいえこのままではWindows側では何も反応してくれません。実際の挙動とは異なるものになってしまいますが、Windowsキーボードの左上にある半角/英数キーと対応させるようにすることで手元でガチャガチャやっていれば切り替えできるようにしていたりします。
command+←/→:macでよく使うショートカット
この操作をすることでテキストの行頭/行末に飛ぶことができるので重宝しています(CLI慣れていれば^Aとかがパッと出てくるのだろうがまだ覚えきれてない)
このキーの挙動がwindowsキーボードのHome/End に似ている気がしたため割り当てて使っています。(完全に同じ動作かは知らない)
本当はこの後にjsonファイルを使った設定をしていこうってコーナーにしたかったのですが余白が足りない締め切りがかなり迫ってきているので今回は省略で。ごめん。もしかしたら追記するかもしれませんが。
実際の使用感
コーディング作業の上では特に支障なく使える。 という感じです(環境整えてからすぐテスト→ハッカソンになったのでコーディングで多用している)。また、画面を大きく動かす系のゲームは(マウス操作の観点で)不向きかもしれませんが比較的画面変化の少ないゲームであればプレイできるかと思います。また、動画の視聴もそれほど問題なくいけるって感じです(わざわざリモートデスクトップでするかは置いといて)。
ハッカソン明け次第他にもどのような遊び方ができるのか試してみたいなと思っていたり。いなかったり。
More Improvements
ここには今後RDP体験を向上させるにあたってやりたいなぁってことを書き記しておきます。こうして外部に載せておくことで言質になりますからね(?)
- マウス感度周りの調整
- クライアント側で何かしら調整ができるかもな雰囲気
- トラックパッドもなんかいい感じに動かせたらいいなと思ってたり(横スクロールが現在機能しない)
- WoL(Wake on Lan)
- 電源をつける信号を(マジックパケット)ネットワークを通して送信することで遠隔でパソコンの起動を可能にすること
- 現状ホストPCは常に電源ONの状態でなくてはリモート操作できない
- 電気代固定の民間学生アパート民なので電気代は気にしてないが電源つけ忘れを先日やらかしました
- 自前でネットワーク周りを整備する必要があるほか、安全性を高めるためにはより丁寧な設定をしなければならない点,自宅がアパート共通ネットワークのために権限が足りず設定できない点があったりのため実装には至っていない。
- その他もろもろ
おしまい
それではハッカソンの開発とポケモンのDLCに戻ります
明日 12/17(日)は @kitajuさん,@noc7tさんの担当です。楽しみ〜!
締める言葉が見当たりませんのでテンプレですが悪しからず
typo(タイプミス)を連発したりAltキー関連のショートカットをつい先日までほとんど知らなかったり(traQIDに入っているのに)CLIのコマンドはほとんど知らなかったり(ファイルのコピーも調べないとできない) ↩︎
ゲーム機で例えるならWiiやPS5が相当します。これらを持ち運んで遊ぶ人も聞いたことがありますが... ↩︎
ゲーミングノートPCみたいな果たして持ち運びを想定しているのか?と思うような製品もありますが ↩︎
夏休みのバイト代をつぎ込んでCPU,グラボを新調し現行ミドルスペック程度にはなったと思います(CPU:Ryzen 7 5700X GPU:Radeon 7600RX) ↩︎
もちろん得意分野と苦手分野があるので完全上位互換というような状態ではありませんでしたが ↩︎
ちなみに1行追記するだけでmacでも動かせるようになりました(UNIX環境なので当たり前ではありますが) ↩︎