SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

リモートワークでの開発環境を改善しよう

VPNの課題を解決し、リモート開発環境をさらに便利にしよう

リモートワークでの開発環境を改善しよう 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

リモートデスクトップの問題点を解消する方法

 最近ではブラウザだけでもさまざまなことができるようになりましたが、社内にいるのと同じ環境でPCを利用したいケースはやはり生じます。そこで、考えられるのがリモートデスクトップの利用です。

 ただ、実際にリモートデスクトップを使ってみると、たまに端末が反応しない場合や接続ができないなど、さまざまな問題が生じます。

 社内にそのPCを管理している人がいれば問題も軽減されますが、できるだけ、自分たちで解決できればより快適になります。そこで、リモートデスクトップで利用するPCを仮想化します。

仮想化ソリューション(VMware Workstation)の利用

 Dockerが広く使われる前までは、仮想化技術を使って開発者が自分のPC上に開発環境を構築するということもよくありました。そのときにVMwareなどの製品を使っていたという開発者もいると思います。

 そのようなケースでは多くの場合、Windows環境上にLinux環境などを構築して使っていたはずです。しかし、今回は図2のようにLinux上にWindowsゲストを動かして利用します。

図2:VMware上に構築されたWindows環境例
図2:VMware上に構築されたWindows環境例

 VMwareホストをLinuxにする大きなメリットは、コマンドでゲストOSの状況について調べられることです。また、ゲスト用Windowsも、利用用途に応じてハイスペック用とロースペック用になどの使い分けが可能です。

 最近のデスクトップPCで使われているCPUはコアやスレッドの数も多く、CPUパフォーマンスが高いので、メモリだけ十分に用意すれば一台の端末上に複数のWindowsを動かしても十分実用性を保てます。

 また、使用している場合のみゲストOSを起動して利用すれば、よりパフォーマンスの問題は生じなくなります。

 今回、利用するソフトウェアは、VMware Workstation Proという製品です。

 VMwareにはVMware Playerという製品もあり、個人利用であれば無償で利用できます。しかし、今回の前提は商用利用なので、VMware Workstation Pro(以下、VMware)のほうが使いやすいと思います。

コマンド(vmrun)を使ってできる操作

 ゲストOSであるWindowsのインストールや初期設定はLinuxホスト上のGUI画面を使って行ってください。また、今回インストールするWindowsはリモートデスクトップ機能を使うために、Windows Proのライセンスが必要になります。

 インストールが終われば、そのあとはvmrunというコマンドを使ってゲストOSをコントロールします。

 VMware FusionというMac用の製品リファレンスにはvmrunの説明がありましたが、Workstationのリファレンス内では見つかりませんでした。しかし、筆者の環境では同様に利用できました。

 vmrunコマンドでは表1のようなことが可能です。

表1:よく利用するコマンド一覧
コマンド 説明
list 起動しているゲストOS一覧を取得する
start 起動する
stop 停止する
reset 再起動する
suspend サスペンドにする
pause 休止状態にする
unpause 休止状態から復帰する
installTools VMware toolsのインストールをゲストOSにする(実際のインストール作業はゲスト側OSで行う)
getGuestIPAddress ゲストOSのIPアドレス情報を取得する

vmrunを使ってリモートデスクトップに接続するまでの流れ

 実際に利用するシーンでは以下のような流れになります。

  1. 使いたいゲストOSの利用状況を調べる
  2. ゲストOSを起動する
  3. ゲストOSの接続IPを調べる
  4. 利用が終わったらゲストOSを停止する

 Windowsのリモートデスクトップでの難点は、あとから利用しようとした人が接続すると前に使っていた人が強制的に使えなくなることです。そのため、同じPCを複数の人がリモートで共有して利用することが難しくなります。

 さらにリモートデスクトップの機能では他の人が使っているのかを調べる方法はありません。そのため、利用するときに別途、コミュニケーションをとらなければならず、少々煩わしくもあります。

 しかし、vmrunでホスト側からlistコマンドをリスト1のように使用すれば、実際に接続されているのかを確認することができます。

[リスト1]ゲストOSの状況を調べる実行例
// 起動しているゲストOSがない場合の実行例
$vmrun list
Total running VMs: 0

// 起動しているゲストOSがある場合の実行例
$vmrun list
Total running VMs: 1
/opt/vmware/Windows11/Windows.vmx

 続いて、自分が使いたいゲストOSが利用されていない場合には、リスト2のようにゲストOSを立ち上げます。また、/opt/vmware/Windows11/Windows.vmxというファイルは、ゲストOSの管理ファイルで実際にインストール時に任意に指定が可能です。

[リスト2]ゲストOSを起動するための実行例
$vmrun start /opt/vmware/Windows11/Windows.vmx nogui

 またWindows11の場合にはnoguiというオプションを必ずつける必要があります。そして、起動したら、接続するIPを調べるために、リスト3のようにIPアドレスを調べます。

[リスト3]ゲストOSのIPアドレスを調べる状況を調べるための実行例
$vmrun getGuestIPAddress /opt/vmware/Windows11/Windows.vmx -wait
192.168.1.31

 表示されたIPアドレスに対して、RDPを使って接続します。必ずしも固定IPにする必要はありません。また、固定IPにしないことで、勝手な類推で接続を試みる利用者がいなくなるという利点もあります。

 表示されたIPアドレスが想定されたネットワークのアドレスで表示されない場合には、図3のようにゲストOSの設定画面でハードウェア構成を確認してください。ゲストOS上のNetwork AdaptorがBridgedになっていないか、もしくは、Network Adapterが複数あるケースがあります。

 このコマンドで表示できるIPアドレスは1つしかないため、複数のNetwork Adapterがあるとリモートデスクトップで外部から接続するためのIPアドレスを正しく表示できない場合があります。

図3:VMwareのゲストOSのハードウェア設定画面
図3:VMwareのゲストOSのハードウェア設定画面

 また、VMware toolsがないというエラーメッセージが表示される場合があります。

 加えて、VMware toolsはホストOSとゲストOSをつなぐ便利な機能やパフォーマンスを改善する機能があります。VMware toolsはゲストOSの初期設定時に必ずインストールするようにしてください。

 利用が終わったら、リモートデスクトップ側からシャットダウンするのが簡単ですが、vmrunコマンドを使って停止する場合にはリスト4のように行います。

[リスト4]ゲストOSを停止するためのコマンド例
$vmrun stop /opt/vmware/Windows11/Windows.vmx soft

 softオプションは正常停止処理をするためのオプションです。何か不具合などで正常に停止できない場合などは、hardオプションにて強制終了が可能です。

 このようにコマンドを利用することで、利用するWindows端末がフリーズなどをしても簡単に再起動したり、また起動しているがつながらないなどの問題があっても解決しやすくなります。

リモート端末側の固定グローバルIP対応

 続いて、リモート端末側に固定IPを付与したい場合でのVPNを使った解決方法を紹介します。

 開発環境自体がクラウド上に存在するようなケースや、外部サービスを使う際にアクセス元でネットワーク制限をしたいケースがあります。このような場合に広く使われるのが、固定グローバルIPを使ったアクセス制限です。

 一般的に会社などからのアクセスの場合は固定IPがあるケースが多く、また、方法も手軽であるため、このような制限はよく使われます。

 しかし自宅のような環境の場合、固定のグローバルIPをもっているケースはほぼありません。そのような場合に利用できるのが、図4のようにクラウド上にVPNサーバを配置することです。

 最近では、ゲームや海外サービスを利用するためやFree Wi-Fi上で安全にサービスを利用する目的で利用する有償のVPN接続サービスなどがありますが、それと同じような環境を構築します。

図4:クラウド上にVPNサーバを配置する構成例
図4:クラウド上にVPNサーバを配置する構成例

 このようにVPNサーバを経由することで、リモート端末側に固定IPが無くても、アクセス先から見た場合は指定した固定IPからのアクセスとして認識されます。出張時の宿泊施設でのFree Wi-Fiなどでも同様にセキュリティの安全性を高めることができるので、一石二鳥と言えるでしょう。

次のページ
実は簡単な、クラウド上でのVPNサーバの構築

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
リモートワークでの開発環境を改善しよう連載記事一覧
この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17625 2023/05/24 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング