CodeZine(コードジン)

特集ページ一覧

エンジニアの働き方改革を実現する、快適リモートワーク環境を構築する方法【デブサミ2020】

【13-A-1】出勤から企業開発者を解放し、エンジニアの働き方改革を実現するリモート開発環境構築

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/04/09 12:00

 働き方改革の一環として、リモートワークを導入や検討する企業が増えている。しかし、スタートアップやWebアプリを開発しているベンチャーなどは、リモートワークを容易に導入できるかもしれないが、大手企業の場合、リモートワークを導入しても、自宅PCから社内システムにアクセスすることを許可していないところも多い。リモートワークメインで業務を遂行している、マイクロソフト コーポレーション グローバル ブラックベルト テクノロジーソリューション プロフェッショナルの増渕大輔氏が、リモート開発環境の構築の仕方について紹介した。

マイクロソフト コーポレーション グローバル ブラックベルト テクノロジーソリューション プロフェッショナル 増渕大輔氏
マイクロソフト コーポレーション グローバル ブラックベルト テクノロジーソリューション プロフェッショナル 増渕大輔氏

リモートワーク開発環境を整備する

 マイクロソフトのようにリモートワークができる環境を構築している企業はまだまだ少ない。ではリモートワークできる環境をどうつくるか。最初に増渕氏が取り上げたのは、個人や小規模開発チームから気軽に誰でも取り組める開発環境の整備の仕方である。リモートワークの開発環境として増渕氏がおすすめするのが、Visual Studio Code(VS Code)の環境整備である。VS Codeは2020年1月にバージョンアップしたばかり。「拡張機能など、便利な機能がたくさん用意されている」と増渕氏は説明を続ける。

 VS Codeはカスタマイズがしやすい。たとえば、スニペットとして簡単な呪文を入力すればたくさんのコードが出力されるような登録をしておき、設定のJSONをチームで共有しておけば作業効率も上がる。そういった環境を考えるとVS Codeそのものをリモートにするというやり方もある。

 さらに増渕氏は別の開発環境として、「VS Code Remote Development」という1年前にリリースしたエクステンションを紹介。これを使うと、Visual Studioのファイルの環境やランタイムの環境をリモートで使うことができるようになる。Remote Developmentを使うことで、WindowsであってもネイティブのUbuntuやCentOSなどの環境でデバッグできるようになる。

 「例えば自宅のPCから会社のサーバのテスト環境を使いたいというときに、このエクステンションの利用が考えられる」(増渕氏)

 だが、この機能は単体だと1段だけのSSHログインになってしまう。だが、リモート先にrmateを導入するなど、サーバ間での接続環境をつくることで、多段のSSHログインの環境を作ることができるという。

 Remote Developmentを使って、ローカルPCをリモート環境につなぐ場合、オンプレミスサーバやAzureやAWSなどのサーバが必要になる。そのようなサーバの運用を不要にするのが、昨年リリースされた「Visual Studio Online」である。Visual Studio Onlineは、マイクロソフトサーバ環境などをマネージドで提供するので、運用はすべてマイクロソフトにお任せすることになる。「時間で区切ることができるので、手軽に使える」と増渕氏。使い方も非常に簡単で、エクステンションをインストールすると左下に接続マークが出てくるので、その接続マークをクリックするだけ。そうすると、リモート接続先が示されるので、適切なものを選択することで接続できるという。ブラウザがあれば クラウドにあるVS CodeにアクセスできるのでiPadなどからのアクセスも可能だ。

 もう一つ、便利なツールとして増渕氏が紹介したのが、「Visual Studio Live Share」である。同ツールを使えば、VS CodeやVisual Studioでプログラミングしている画面を仲間と共有し、コラボレーションできるようになる。共同編集はもちろん、共同デバッグ、仲間とのチャットなど、多様な機能が装備されている。

 「リモートワークはもちろんだが、同じオフィスでもペアプログラミングや教育などにも使うことができる」(増渕氏)

 VS Codeを使えば、リモート環境でもオフィスと同様の開発環境が構築できることが分かった。次は、会社の環境や会社が持っているクラウドをどうやって自宅とつなげていくかだ。

 VS Codeはエクステンションで、AzureのPaaSやIDマネジメントと統合するという便利な機能を提供している。「これらを使うと圧倒的に作業効率が上がる」と増渕氏。だが、これらの仕組みは個人エンジニアやWeb系の開発エンジニア、スタートアップなら問題なく使えるが、従来からあるようなシステムは、外部からのアクセスができないようにしていたり、できたとしてもAD FSの運用が大変という問題がある。

 「このような社内へのアクセスは、開発者だけでは解決しにくい問題だ。組織ぐるみで、認証や認可の仕組みを整備する必要がある」(増渕氏)

 従来、社外から社内へアクセスする場合、AD、SaaSのアプリを使う場合は、AD FSを使っていた。だが、Office 365の認証基盤でもあるAzure Active Directory(Azure AD)で社外のアプリやSaaSアプリを認証できるようになる。Azure ADを認証基盤として使うメリットはいろいろある。マイクロソフト自身が数千にも及ぶSaaSアプリを検証しており、それぞれの連携方法のドキュメントを「SaaSアプリケーションとAzure Active Directoryの統合に関するチュートリアル」として提供している。また既存のカスタムアプリをシングル サインオン(SSO)として統合する際にどのような技術・方式を採用するのか考える助けとなるドキュメント「Azure Active Directoryでのアプリケーションへのシングル サインオン」を提供している。このドキュメントには、実際の状況に最適なシングル サインオンの方法を判断するのに役立つフローチャートも含まれていて、「5分程度で既存アプリに最適なSSO技術を選択できる」と増渕氏はいう。

 Azure ADでアプリを管理すると良い点は3つある。第一に前述の通りシンプルなクラウドアプリとの連携、シングル サインオンの管理ができること。第二に安全な条件付きアクセスが実現すること。「Azure ADの条件付きアクセスポリシーを他のクラウドにも適用できる」と増渕氏。条件付きアクセスポリシーとは、ユーザーの環境やログインする状況に応じてアクセスポリシーをダイナミックに返るという定義ができるというもの。これにより、環境やロールに応じて柔軟なアクセスポリシーの管理ができるようになる。第三はオンプレミスのIDプロバイダーのメンテナンス作業を削減することだ。

Office 365なら自動的にAzure ADが構築される

Office 365なら自動的にAzure ADが構築される

開発環境をSaaSに移行、インフラ環境を全社で整備する

 これでSaaSの利用問題もクリアできた。次に実施するのは開発環境をSaaSへの移行である。その際、着目したいのはプロセスや効率化できるかどうか。それを可能にするのがDevOps製品群である。マイクロソフトであればGitHub ActionsやAzure DevOpsなどがそれに当たる。

 「DevOps製品、開発プロセスのサーバレス製品を使いたいときに、参考になるのがAzure Architecture Frameworkというドキュメント。アプリケーションやモニタリング、パフォーマンス、デプロイを見直す方法をガイドとしてまとめているので、ぜひ活用してほしい」(増渕氏)。

 リモート開発のために、既存のブランチワークフローを見直すこともあるという。その場合、例えばリリースやテスト、機能改善などのチーム内のルールを見直すときに参考になるのが、「git flowやgithub flow」(増渕氏)だ。こういったこともAzure Architecture Frameworkには書かれている。

 「SaaS系で開発プロセスを回すときには効率を上げられるので、ぜひ、このドキュメントをチェックして欲しい」(増渕氏)

 とはいえ、「SaaSでできるのは開発部分だけ。運用やトラブルシューティングは、社内にいないとできないことも多いよね」「RDPやSSHで自由に社内に入っても大丈夫なのだろうか」という声も聞かれる。これらを考えると、なかなか先の案を通しにくい状況が出てくる。このような声をなくすためには、会社全体でインフラ環境を整備していくことが必要になる。

 そのためのツールとして導入したいのが、モバイルデバイス管理(MDM)やモバイルアプリケーション管理(MAM)、VPN、WVD(Windows仮想デスクトップ)などのツールである。これらをクラウドに乗せることで、管理しやすくなるからだ。そのクラウドでの管理に活用できるのが、「Microsoft Intune」である。これはEMS(Enterprise Mobility + Security)という分野の製品である。「できることは多岐にわたるが、個人のアプリと仕事で使うアプリが1台のモバイルデバイスに共存していても、仕事で使うアプリをきちんと管理ができる」という。しかもMicrosoft Intuneはログもしっかり管理し、それらをKustoクエリーでビジュアル化することができる。

 WANに接続したい場合は、「Microsoft Azure Virtual WAN」が使える。Virtual WANはハブ&スポーク型で、最大1000拠点まで接続できる。従来だとVPNと専用線接続で相互の互換性がなかったが、これを使うことでどちらにも対応できる。もちろんリモートユーザーもポイント対サイトVPNというアクセスができるので、WANに接続できる。Network Watcherとも連携可能だ。

 また、シンクライアントのソリューションとしてマイクロソフトが提供しているのが「Windows Virtual Desktop」である。Windows 10マルチセッションを提供。Office 365のProPlusのライセンスを使い、仮想デスクトップを動かすマシンをAzure上に展開する。「この機能を使う良さは、従来のVDIに必要だったインフラ構築作業の大部分を削減できること」と増渕氏は熱く語る。もちろんデメリットがないわけではない。それは組織ぐるみの対応は社内でのいろいろな調整に時間がかかること。

 「Office 365に入ってからAzureに入るので、若干の手間がかかる。この辺はトレードオフだが、運用の手間を削減できるのは大きなメリット」(増渕氏)

MDMやMAM、WVDなどを導入し、リモートワークができるインフラ環境を整備
MDMやMAM、WVDなどを導入し、リモートワークができるインフラ環境を整備

孤独感や疎外感、適切な人事評価は「Microsoft Teams」で解決

 リモート環境は技術的にはこれで揃ったが、ほかにも問題がある。「孤独感や疎外感が突然襲いかかること。そして人事評価をどうするかということ」と増渕氏は語る。実はリモートワークの導入は難しく、リモートワークを徐々に適用していく組織では、適用が進むと同時に問題が指数関数的に増えていくという。

 では孤独感や疎外感を解決するために、増渕氏がお勧めするのが、「無駄でもビデオ会議をオンにすること」という。Slackを使っている場合はZoomでもよいが、お勧めなのは「Microsoft Teams」である。「背景をぼかす機能がついているので、リモートワークに最適」と増渕氏。またTeamsの対応デバイスであれば、ホワイトボードに書いているものをキャプチャーするので、ホワイトボード前に人が立っていてもすべて読むことができるという便利な機能も使えるという。

 もう一つの課題である、適切な人事評価をするために活用できるのがタスク管理である。Microsoft Teamsは、Microsoft Planner、Trello、Asanaなどのタスクツールと連携でき、エンジニアの貢献を労働時間ではなく、結果ベースで可視化できる。また、TrelloはGitHubと連携させておけば、Teamsを開いてさえおけば、GitHub上の活動やリクエストなどが、タイムラインが流れるようにすることもできる。

 「こうすることで活動が可視化できる」(増渕氏)

 リモートワークの環境が整備されているマイクロソフト。同社ではこれからリモートワークを推進する企業の参考になるよう、業務遂行基準の日本語訳を公開している。「ぜひ、参考にしてほしい」と増渕氏。また今回のセッションの資料の最後には、リモートワークを社内に提案するための稟議書サンプルもつけている。

 「リモートワーク環境の整備は、人材の獲得にも役立つ。快適な環境の整備は長い道のりだが、ぜひ、頑張って推進してほしい」

 こう語り、増渕氏はセッションを締めた。

快適リモートワーク環境への長い道のり
快適リモートワーク環境への長い道のり

お問い合わせ

 日本マイクロソフト株式会社

  • 【Microsoft Learn】
    • Microsoft Azureについて学習できる無料のオンライン トレーニング コンテンツ一覧
  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5