Azure 仮想マシン (VM) 上で Visual Studio 学習方法の紹介(前半)

システムエンジニアが自主的なスキルアップのため職場のPCに Microsoft Visual Studio (VS Code) 等のコンピュータ開発ツールをインストールしようとしても、セキュリティ上の理由でインストールがシステム的にエラーとなってしまう、あるいはインストールしたいと申請しても社内の情報システム担当から何かあった際の対応ができないという説明で申請が却下されるという場面はありませんか?
それでも検証用ならインターネットアクセスによるAzure 仮想マシン(VM) の利用が許可されているという環境もあると聞きます。

今回のブログはズバリ「Azure 仮想マシン (VM) 上で Visual Studio 活用」をテーマに取り上げました。多くの場合で気になるのは導入の手間(工数)と費用(従量課金)ではないでしょうか?
そして開発ツールで開発練習するWebアプリは Azure App Service とAzure SQL データベースを使うものと想定し、導入編、開発練習編にそれぞれに分けてご紹介いたします。

本ブログの受講対象者は Windows 環境でゼロから稼働状態の開発環境を構築し、ローカルアプリとAzureクラウドアプリの作り方に興味がある方。これまで我流で開発環境に取り組んでおり、エンジニアリングプロセスを確認して高みを求めたい方。今回の記事によって、皆さまの新しいソリューション企画のヒントになればこれ以上に嬉しいことはありません。

また、Microsoft Azure の販売パートナーになりたい場合はMicrosoft CSP プログラムへの参加が必要です。販売パートナーの資格取得に必要な要件は一切ありません( Microsoft 社の登録審査がございます)。知識がなくても、安心のサポート体制で TD SYNNEX が販売パートナーと一緒に販売を併走します。
詳しくは https://www.synnex.co.jp/solution/csp/csp-azure/ をご覧ください。

目次

【前半】本記事で取り上げること。

  1. はじめに、目標設定と制約事項
  2. 導入編の範囲確認とエンジニアリングプロセス
  3. Azure 仮想マシン(VM)の選定
  4. Azure 仮想マシン(VM)の起動
  5. 計画した通りに導入と完了確認

(後半)

  1. 開発練習編の範囲確認
  2. Visual Studio を中心に開発ツールの導入
  3. MVP(実用最小限のアプリ)サンプルソースの入手
  4. Azure App Service とAzure SQLの利用
  5. ソースコードの対応
  6. Webアプリのローカルテスト
  7. WebアプリのAzureデプロイとテスト
  8. 今後の学習継続ご提案
  9. さいごに

1.はじめに、目標設定

はじめに

既に経験がある方は途中のステップを飛ばしていただいても構いませんが、その場合も含め本記事の開発環境の動作やアプリ動作はできるように構成しました。手順通りの操作だけで終わらせることなく、学習の途中に気付いた内容は OneNote などのデジタル環境にスクリーンショットを伴うノートテイクして後から復習することで理解が高まるので、学習効果を高めることがよりレベルの高いシステムエンジニアへ成長ができることを願ってやみません。

目標設定

最低目標:エンジニアリング プロセスを理解して他者へ説明できるようになる。
標準目標:開発環境を構築し、ローカルアプリとAzureクラウドアプリの作り方を他者へ説明できるようになる。
高度目標:エンジニア仲間にAzure環境が楽しいことを伝え活用していくリーダーとなる。

制約事項

本記事について無償アカウントでの利用は想定していません。理由は単純で、従量課金ならサイジング検討を含め「お幾ら」の学習道具であるのかを正しく知ることも、実践へ向けた準備学習としているからです。

なお、Azure サブスクリプションアカウントをお持ちでない方(法人)あるいは、クレジットカード払いではなく円建て請求書でご対応が必要ならば、弊社からサブスクリプションアカウントをお求めにもなれます。

2. 導入編の範囲確認とエンジニアリングプロセス

導入編の範囲

インターネットアクセスによるAzure 仮想マシン (VM) の利用開始するための手順と、後半へ向けたシナリオの確認。そのために必要となるエンジニアリングプロセスの学習。

Microsoft Azure 環境(Azure ポータルを含む)への通信アクセス方法は4種類あります。
本記事ではAzure ポータル接続はインターネットSSL接続を使い、Azure 仮想マシン (VM)を作成した後は Windows用 リモート デスクトップ クライアント(RDP) を使い、Azure Virtual Desktop として Azure 仮想マシン (VM)の利用を開始します。

接続方法特徴
ExpressRoute (エクスプレスルート)接続ExpressRouteは、Azureネットワークとオンプレミスを専用回線で接続する方法です。この接続方法は、VNet接続とPublic接続の2つに分けられます。
インターネットIPsec接続
IKE TCP/UDP#500 (ESP IP#50)


インターネットSSL接続TCP#443
インターネットを通じてAzureに接続する方法で、VPN接続 (IPsec)と暗号化通信 (SSL) 接続の2つがあります。
Azure Virtual Network (VNet)Azure上に作成した仮想マシンは、VNetを通じて仮想ネットワーク内にある別の仮想マシンや、外部のオンプレミスと接続します。
Widnows用 リモート デスクトップ クライアント TCP#3389Windows 用リモート デスクトップ クライアントを使用してAzure Virtual Desktopに接続する方法です。この方法では、組織管理者が利用できるフィードのみをサブスクライブできます。これは、組織管理者が設定したリソース(デスクトップやアプリケーションなど)に対してのみ、ユーザーがアクセスできるようにすることです。

エンジニアリングプロセスについて

エンジニアリングプロセスは、製品やシステムを高品質で設計、開発、実装するための一連の手順を指します。組織文化によってエンジニアリングプロセスは若干異なりますが、ソフトウェア開発でのエンジニアリングプロセスの主要なステップ標準モデルは次の通りです。
また、納品前にお客様向けトレーニングは、試験・検証フェーズで実施するケースがあります。

※各プロセス(フェーズ)は一般的なものであり、具体的なエンジニアリングプロセスはプロジェクトの性質や目標により異なる場合があります。本項目をプロジェクト管理のタイムラインとして扱われるケースもありますが、その場合はプロジェクト憲章などでどのような成果物を各プロセスで求めるのか、責任と納期時間といったプロジェクトスコープを別途関係者合意のもと定義します。プロジェクト管理の概要説明は広範囲となるため割愛いたします。

IPA 独立行政法人 情報処理推進機構 2013年8月 
モデルベースシステムズエンジニアリング (MBSE) 導入の手引き
https://www.ipa.go.jp/archive/files/000033609.pdf 
「エンティティV」より2023年9月 TD SYNNEX 株式会社 Blog記事用に改定

要求の抽出(要件定義):プロジェクトの目標と要件を明確に定義します。
製品やシステムが達成すべき機能や性能、制約条件などが含まれます。
最終受入前の運用ビューおよび機能ビュー時に参照されるのが要件定義です。

概念設計(コンセプト設計):製品やシステムの初期段階で行われる設計を行います。
製品やシステムが達成すべき目的や機能、仕様(構造、素材、サイズなど)を定義します。
最終受入前の物理ビュー時に参照されるのが概念設計です。

アーキテクチャ(基本設計):要件を満たすための基本的な設計を行います。
製造(コーディング)初期フェーズを含む場合があります。

詳細設計:要件を満たすための詳細な設計を行います。
製造(コーディング)中期フェーズを含む場合があります。

試験・検証:製品やシステムが要件を満たしているかを確認するためのテストを行います。
単体テスト、欠同テスト、システム(全体)テスト、受入テスト、運用テストなどがあります。
エンジニアリング活動における解析および検証・妥当性確認等の活動。

製造・運用:ここでの製造は製造完了を意図しており、継続的にパッチ提供を含めた保守や改善を行うことは本プロセスエンジニアリングが終了した後の保守契約を伴うものです。運用はお客様にてシステム運用することです。

今回のブログ記事について、モデルベースシステムズエンジニアリング「エンティティV」に照らし合わすと、前半は、要件の抽出としてAzure 仮想マシン (VM) 上で Visual Studio 学習方法を確認すること、そして概念設計として、必要な環境は何であるのかを検討することです。後半はMVPローカルテスト後にAzure App Service とAzure SQL環境によるMVPデプロイとテスト実施を通じ、妥当性の確認となります。一連の進め方はエンジニアリングプロセスの理解支援になるでしょう。

3. Azure 仮想マシン(VM)の選定

今回はAzure Virtual Desktop として Azure 仮想マシン (VM)の利用し、Visual Studio Community を導入するシナリオです。
このシナリオ以外にも事前に構成済みの Azure 仮想マシン (VM) 上で Visual Studio を使用することもできます。違いとして後者はゼロから稼働状態の開発環境を構築するための簡単かつ迅速な方法です。 さまざまな Visual Studio 構成のシステム イメージは、Azure Marketplace で入手できます。

利用できる構成とバージョン:2023年9月14日現在
最新情報はこちらをご確認ください。:
https://learn.microsoft.com/ja-jp/visualstudio/install/using-visual-studio-vm?view=vs-2022

Visual Studio
リリースバージョン
エディション製品バージョン
Visual Studio 2022Enterprise, Community17.2
Visual Studio 2022
(Microsoft Dev Box*互換)
Enterprise, Professional17.5
Visual Studio 2019最新
(バージョン 16.11)
Enterprise, Community16.11
Visual Studio 2019
(Microsoft Dev Box*互換)
Enterprise, Professional16.11
Visual Studio 2017最新
(バージョン 15.9)
Enterprise, Community15.9
Visual Studio 2015最新
(Update 3)
Enterprise, Community14.0.25431.01

*Microsoft Dev Box (参考紹介)
事前構成済みで一元管理された、すぐにコード化できるプロジェクト固有の開発ボックスに開発者がアクセスできるようにする Azure サービスです。高パフォーマンスのクラウドベースのワークステーションを使用して、あらゆる規模のハイブリッド開発チームをサポートし、必要なツールへのアクセスを合理化することで開発者がコードの記述に集中できるようにします。
https://azure.microsoft.com/ja-jp/products/dev-box/

Dev Box (開発ボックス)
すべてのプランには次のツールと設定が含まれています。開発メンバーへ共通のクリーンな開発環境を即座に用意しなければならない用途は Dev Box 利用に軍配が上がります。理由はWindowsおよびAzure開発環境の最低限必要なツールがオールインワンで提供されるためです。

  • Gen2 VM images
  • Microsoft 365 Apps
  • Visual Studio 2019 (Pro or Enterprise, depending on the plan you select)
  • Visual Studio Code
  • Git for Windows
  • GitHub CLI
  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell Module
  • PowerShell 7
  • Developer mode enabled
  • Hyper-V
  • Windows Subsystem for Linux (WSL)

Dev Box に関わらず、Azure Virtual DesktopでVisual Studioを動かすためのサイジング推奨事項について。Azure では、さまざまなサイズの仮想マシンが提供されています。 Visual Studio は強力なマルチスレッド アプリケーションのため、2つ以上のプロセッサと 7 GB 以上のメモリを含む VM サイズを検討します。Visual Studioに推奨される VM サイズは以下のとおりです。

Standard_D2_v3 
Standard_D2s_v3 ← 本ブログの対象
Standard_D4_v3
Standard_D4s_v3
Standard_D2_v2
Standard_D2S_v2
Standard_D3_v2

Standard_D2s_v3
vCPU 2, メモリ (GiB) 8, 一時ストレージ SSD (GiB) 50, 最大データディスク数 4
一時ストレージの最大スループット: IOPS/読み取り MBps/書き込み MBps
最大 NIC 数/想定ネットワーク帯域幅

サイジング情報:
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-portal

Azure 料金試算:
開発環境に利用する時間数 16時間と設定(1日当たり8時間、2日間)と仮定すると、2023年9月14日現在、税抜き 1,922.06 円(1,923円)です。

Azure 料金計算ツール
https://azure.microsoft.com/ja-jp/pricing/calculator/

試算内訳:
・コンピューティング D2 v3
リージョン:東日本
オペレーティングシステム:Windows
タイプ:OS ライセンス込み(開発環境のみ、アプリケーションホストを除く)
(*Azure ハイブリッド特典は選定せず)
レベル:標準
インスタンス:D2 V3: 2 vCPU, RAM 8GB, 一時ディスク 50GB
インスタンス料金 (1時間あたりの単価 32.337円)
試 算:32.337 × 16時間 = 517.39円

・マネージドディスク:レベルStandard SSD, 冗長性 LRS(ローカル冗長ストレージ)
ディスクサイズ:E10, 128GiB
ディスク数 1
マネージドディスク試算 (1ヶ月あたり)1,404.67円

・送信データ転送量料金
5 GB :無料
リージョン間データ転送の最初の 5 GB/月とインターネット エグレス データ転送の最初の 100 GB/月は、各ゾーンで無料です。

4. Azure 仮想マシン(VM)の起動

ここから Azure サブスクリプションアカウントが必要となります。

Azure ポータルから Virtual Machines サービスを検索して Azure 仮想マシンを作成します。

[Azureポータル]

Azure ポータル検索フォームを利用して該当サービスをすぐに開くことができます。

[Virtual Machines]

Azure 仮想マシンを作成します。

[VMサイズの選択]

VM サイズの選択は事前に確認していた D2s_v3 を選定します。ログインパスワードの指定や定期シャットダウンの設定等は仮想マシン作成時に指定します。本記事では省略いたします。今回ホスト名は VSAVD としました。

[仮想マシン]作成後は “接続“ をクリックすると、リモート デスクトップ 接続ファイル (RDP) をダウンロードするので、この接続ファイルをダブルクリックして [仮想マシン] へインターネット越し TCP#3389 でアクセスします。

リモートデスクトップ接続

この接続ウィンドウ表示は接続の最終確認(通信パケットが到達済みを示す)です。
[はい] を押下して進めます。
初回接続時は言語が英語となっているので、設定メニューから言語 “Japanese” を優先する設定とし、Windows Update を行いましょう。一通り設定後に再ログオンしてご覧のように日本語表記となれば対応完了です。

Windows Update

大切な Windows Update です。必ず実施しましょう。

ここまでが前半の説明でした。
内容を振り返りと次回の展望を確認しましょう。

前半はAzure 仮想マシン (VM) 上で Visual Studio 学習するための事前知識としてエンジニアリングプロセスの学習と環境構築として Azure VM の選定および実際に Azure VM を作成し、日本語環境の対応化を行いました。

次回、後半ではVisual Studio Community 版をインストールし、Microsoft Learn チュートリアルによる【Azure SQL Database を使用して Azure に ASP.NET アプリをデプロイする】に沿って学習を継続します。
https://learn.microsoft.com/ja-jp/azure/app-service/app-service-web-tutorial-dotnet-sqldatabase

最終的には前半で学習したエンジニアリングプロセスをもとに、どのような工程を実際に体験したのかを振り返ります。エンジニアリングプロセスをより便利に実践することで高い品質と運用効率を高める仕組みも学習することで、次に掲げる目標(再掲)の高度目標へ到達する足掛かりとなれば幸いです。

最低目標:エンジニアリング プロセスを理解して他者へ説明できるようになる。
標準目標:開発環境を構築し、ローカルアプリとAzureクラウドアプリの作り方を他者へ説明できるようになる。
高度目標:エンジニア仲間にAzure環境が楽しいことを伝え活用していくリーダーとなる。

前半の学習お疲れ様でした。

Azure VM 環境は次回も使用するので、シャットダウンするなど適宜ご留意ください。

[著者プロフィール]

TD SYNNEX 株式会社 | 斉藤 之雄
アドバンスドソリューション部門 ソリューションビジネス開発本部 プリセールス&エンジニアリング部 マルチクラウドチーム (Azure Solutions Architect Expert, Azure DevOps Engineer Expert)

マイコン少年時代から関東電子(TD SYNNEX前身)を利用するなどソフトウェア、ハードウェアともに昔をよく知る。コンピューター業界は1996年から異種混在環境における再販ビジネスの技術営業からキャリアを開始し、特に導入支援や教育プログラムの立ち上げは定評を有する。国内大手電気通信事業者では社内クラウドコミュニティの主要メンバーとし全国SEへ対するリスキリングプログラム推進活動を実践した。2022年4月TD SYNNEX入社以来、CoE(センターオブエクセレンス)プロダクトの日本市場展開や AI/ML (人工知能/機械学習)サービスを中心とするプリセールス活動を行っている。愛猫家、社会福祉士でもある。

製品・サービスについてのお問合せ

情報収集中の方へ

導入事例やソリューションをまとめた資料をご提供しております。

資料ダウンロード
導入をご検討中の方へ

折り返し詳細のご案内を差し上げます。お問い合わせお待ちしております。

お問い合わせ