Azure構築経験が全くない状態から、Azureを学ぶ必要が出た際に、AI駆動でどのような手順で学んだかの実体験をシェアしたいと思います。ゴールはAzureの基本機能を理解することです。なお、AWSの設計・構築経験は少しあります。
[TOC]
1. Azureの全体像と用語の理解
まず、全体を体系的に学習するために書籍を読むことから始めました。以下の本は、Azureをこれから学習する方向けの入門ガイドで、Azureの基本サービスが網羅された上で体系的に章立てられており、文量も少なく読みやすいです。3~4時間程度で読み切れるかと思います。
[改訂2版 全体像と用語がよくわかる! Microsoft Azure入門ガイド] 山田裕進著 3,102円
Chapter1 Azureの特徴を知る
Chapter2 Azureの利用を始める
Chapter3 アプリケーションやコードの運用
Chapter4 データの運用
Chapter5 機械学習や生成AIサービスの活用
Chapter6 ネットワークの運用
Chapter7 インフラの効率的な運用
Chapter8 Azureをさらに学ぶには

2. Azureアカウント登録とAzure Portalへのログイン
続いて、実際にAzurePortalでAzureリソースをChatGTPに操作手順を聞きながら構築していきます。
初めて Azure Portal に登録する場合は、Microsoft アカウント作成 → Azure 無料アカウント登録 → ポータルへログインという流れになります。私はホットメールアカウントを持っていたため、そのままログインができました。そして、新規アカウント作成で 30日間有効のクレジット(約 $200 / 日本では29000円分ぐらい)が貰えます。 この無料クレジットを使って、Azureを学習していきます。
- Microsoft アカウントを用意
Azure は Microsoft アカウント(@outlook.com / @hotmail.com / @live.com など)でサインインします。 - Azure 無料アカウントページ へアクセス。
Microsoft アカウントでサインイン。
以下の情報を入力
- 氏名・住所・電話番号(電話番号は SMS 認証あり)
- クレジットカード情報(無料枠
3.VMの作成(シングル構成)
Azureのアカウントを開設したら、まず最初に、基本となるVMの作成に取り組みました。動作を確認するため、私の場合はjavaScriptとDockerで開発しているRustのPlaygroundというアプリをvmにデプロイして動作確認を試すこととしました。自身のGithubリポジトリの一つをデプロイするのが一番理解が進むのではないかと思います。
https://github.com/cmc-labo/playground
そして、作成手順については、基本的にChatGTPに質問しながら操作を進めていきました。 途中、細かな説明が必要な時や、うまく進めなかった時、エラーが出た時などもChatGTPに詳細を聞いて進めていくことで、google 検索で調べらながら試行錯誤するよりも圧倒的に効率的に取り組むことができたと思います。
仮想マシンの作成
左上の 「リソースの作成」 をクリック。
「コンピューティング」カテゴリから 「仮想マシン」 を選択。
必須項目を入力:
サブスクリプション:自分のサブスクリプションを選択
リソースグループ:新規作成(例: rg-ares)
仮想マシン名:vm-ares など
地域:近いリージョン(例: Japan East)
イメージ:Ubuntu Server 22.04 LTS(推奨)
サイズ:B1s などの小規模サイズ(無料枠対応)
認証の種類:SSH 公開キー(推奨)またはパスワード
ユーザー名:例: azureuser
受信ポートの選択:
SSH (22) を選択
Web アプリを公開する場合は HTTP (80) や HTTPS (443) も追加可
「確認および作成」→ 「作成」。
VM への接続
デプロイが完了すると VM の概要ページが表示される。
パブリック IP アドレス を確認。
ローカル端末から SSH 接続:
VM に入ったら、必要な環境をインストール(私の場合は、git, node.js Dockerなど)
動作確認
パブリックIPを叩いて動作確認
3.VMを冗長化構成にし、Public Load Balancerで負荷分散する
1. 事前準備
リソースグループを新規作成(例:rg-lb-test)
2. Public Load Balancer の作成
Azure Portal 左上「リソースの作成」→「ネットワーク」→ 「Load Balancer」 を選択
以下を設定
名前:lb-public
リージョン:Japan East(VMも同じにする)
SKU:Standard(推奨)
種類:Public
パブリックIP:新規作成(例:pip-lb)
「確認および作成」→「作成」
3. バックエンドプールの作成
作成した lb-public を開く
左メニュー「バックエンドプール」→「追加」
名前:backendpool1
仮想ネットワークは後でVMを作るときに同じにする
「保存」
4. 負荷分散ルールの作成
lb-public の左メニュー「負荷分散規則」→「追加」
以下を設定
名前:rule-http
フロントエンドIP構成:作成時のPublic IP
バックエンドプール:backendpool1
プロトコル:TCP
ポート:80
バックエンドポート:80
正常性プローブ:新規作成(HTTP / ポート80 / パス /)
「保存」
5. 冗長化 VM の作成(可用性セット利用)
左上「リソースの作成」→「コンピューティング」→「仮想マシン」
基本設定
リソースグループ:rg-lb-test
VM名:vm1(あとで vm2 も作る)
リージョン:Japan East
可用性オプション:「可用性セット」を選択 → 新規作成(avset1)
イメージ:Ubuntu Server 22.04 LTS
サイズ:B1s(無料枠可)
認証方式:パスワード or SSH 公開キー
受信ポート:HTTP(80), SSH(22)
ネットワーク設定でLBのバックエンドプールに参加
ネットワーク インターフェースの「バックエンドプール」に backendpool1 を選択
「確認および作成」→「作成」
6. 2台目の VM 作成
上記と同じ手順で vm2 を作成(可用性セットは同じ avset1、バックエンドプールは backendpool1 に参加)
7. VM にHTTPサーバーをセットアップ
SSHで vm1 と vm2 に接続
以下を実行(簡易Webサーバー)
sudo apt update && sudo apt install -y apache2
echo "This is VM1" | sudo tee /var/www/html/index.html # vm1
echo "This is VM2" | sudo tee /var/www/html/index.html # vm2
Apacheがポート80で待ち受けていることを確認
- 動作確認
lb-public の「フロントエンドIP」をブラウザで開く
This is VM1 または This is VM2 が表示される(リロードすると交互に出る)
上記ができたら、同じように、実際にAzureで操作しながら、以下のリソースも作っていきます。 手順詳細を書くと文章がとんでもなく長くなってしまうため、今回は割愛します。
4.AzureSQLを作成し、VMから接続する
Azure Database for PostgreSQL, AzureSQL両方を試しました。バックアップの方法やレプリカ作成の手順なども確認しました。
5.Storage Accountを作成し、BlobStorageにリソースを配置する
BlobStorageは、AWSのS3のようなオブジェクトストレージサービスです。挙動を確認する他、ローカルのPythonからGetおよびUploadを試しました。その際に、ローカルのosに
6.Azure Functionsを試す
Azure Functionsは関数を実行するサーバレスサービスです。Node.jsで動作テストを行いました。ここまでくると、vm, db, storageなどを作成してきたので、ある程度、Azureの操作にも慣れてきます。
7.AzureContainer(シングル構成)の作成
モダンな開発現場ではコンテナはよく使われているため、VMだけではなく、containerの操作にも慣れている必要があると感じ、コンテナ作成にも取り組みました。
8.AzureContainerを冗長化構成にし、ApplicationGatewayで分散化する
PublicLoadbalancerはVNetの外にありますが、ApplicationGatewayはVNetの中にあり、WAFをつけられるなど多機能になっています。
9.ローカルのDockerイメージをContainerRegistryにpushする
Azure CLI (az)をインストールして、ローカルからビルド済みのイメージをpushします。pushされたイメージは、azure portalで確認します。
10.その他、Key & Vault, Azure Monitor, LogAnalytics, ARMも一通り触る
実務で必要になりそうなサービスについても一通り作成したり、インターフェイスを確認しておきました。Key & VaultはVMとの連携、ARMはjsonでローカルからstorageAccountを作成しました。
今まで構築してきたリソースを一枚のスライドにまとめたものになります。

ここで終わりにしようかと思いましたが、もう一歩踏み込んで、デプロイフローについても取り組みました。
11.Azure DepOpsでデプロイフローを構築する
手順は以下の通りです。
- ローカル開発環境で開発し、githubにpull request
- GithubActionでビルド、UnitTest, Lint
- コードレビュー、devブランチにマージ
- devブランチにマージされたことをトリガーにAzure DevOpsのpipelineがvmにデプロイ
※Azure pipelineのデプロイは、間にEnvironment設定で「承認」を入れることもできる
このような構成にすることで、
・GithubActionで品質保証(UnitTest, Lint)
・ブランチ戦略により本番リリースの安定化
・ Release Pipelineで手動作業ゼロ化
・デプロイフローに「承認」を入れることで、リリースタイミングの制御や事故防止を図る

12.まとめ/終わりに
Azure構築経験ゼロから、Azureを学んでいく手順として、書籍の学習とAzureリソースの構築、DevOpsのデプロイフローをChatGTPに質問しながら作りました。ここまで来るのに大体、3~4日ぐらいかかったと思います。書籍だけではあまり頭に入ってきませんが、実際に手を動かしながら構築することで具体的な仕組みについてより深く理解できるようになったと実感します。また、AWSと対比しながら作ることで、色々な発見もありました。一方で、設計やインフラテスト手法などについてより深い理解が必要といった課題も実感しております。本記事が何かのお役に立てれば嬉しいです。
