FIXER 藤井です。先日、MCP(Microsoft Certified Professional)の1つ「Az-203 : Developing Solutions for Microsoft Azure」に合格しました。試験の準備として、実際に手を動かしてサンプルソースを作成しAzure上で動作を確認するところまでやっておくことで、合格の可能性を大きく高められます。これから受験する方向けに、テーマごとのポイントをご紹介します。
「Az-203 : Developing Solutions for Microsoft Azure」について
「Az-203 : Developing Solutions for Microsoft Azure(以下、Az-203)」は、マイクロソフトが実施する認定試験であるMCPのうち、「Azure 認定試験」のカテゴリーに含まれます。合格すると「Azure Developer Associate 」として認定されます。「Azure 認定試験」において「Associate(中級)」レベル資格として、Az-203に加えて「Az-103:Azure Administrator Associate」と「Az-500 : Azure Security Engineer Associate 」の2つが存在します。「Associate(中級)」レベルの3つの資格を合わせて、いわゆる「DevSecOps」を構成しています。
Az-203では、具体的なソースコードが例示された状態で、1行1行が持つ意味と役割を問うような設問が、Azureの多様なサービスを想定して出題されます。Az-203に対応できるスキルを身につけることで、例えばアプリの設計をするときに、 Azure上で提供される複数サービスを比較検討できるようになることが期待されます。
具体的な例としては、「データ保存領域として、Azure SQL Database(リレーショナルデータベース)、Azure Cosmos DB(No SQL)、Azure Storage (Blob)の三者をいかにして使い分けるか」という問題などがあります。
Az-203の詳細については公式サイトを併せてご参照ください
実際に試してみるときのポイント
MCP用の練習問題などはいくつか市販されているため、答案練習やその解説はそちらに譲るものとします。
本記事で紹介するポイントを一通り試したら、作成したサンプルソースや構築したAzure環境をキープしておき、市販の練習問題をやってみた後にもう一度、ソースコードを触ってみるのが理想です。本記事ではAz-203の出題範囲のうち、主要な部分をカバーしていますが、割愛しているトピックもあります。特に練習問題をやる中で初めて見るトピックが出てきたら、練習問題の復習時に手を動かして試してください。
なお本記事では詳細な手順やソースの例はあえて記載しません。いわゆる「コピペコード」で、手順に従って作業するだけだと、試験で問われるような「 具体的なソースコードの1行1行が持つ意味と役割 」理解するレベルまで到達できない可能性が高いためです。
同様の理由で開発環境として使用するVisual Studioの構築の要件詳細も割愛します。必要なコンポートを自分で吟味して、開発環境の構築を試行錯誤することも、 理解を深めるために必要です。
テーマごとのポイント
( 1 ) Webアプリの発行
ASP .Net CoreよりWebアプリケーションテンプレート を使用して、「Hollo World」を表示するWebアプリを作成し、「App Service Plan」と「AKS ( Azure Kubernetes Service )」の環境にそれぞれデプロイします。
( 1-1 )App Service Plan
- Azure Portal より App Service Plan(Linux基盤)を作成します。
- Visual Studio 2019 より 作成したApp Service Plan へ発行します。
- 「Hollo World」の表示を確認したら、 App Service について「 App Service ログ」の設定を試してみます。
- 「ログストリーム」が表示されればOKです。
- App Service Planは「( 2 ) APIの発行」以降でも使用するため削除せずに残しておきます。
( 1-2 )AKS ( Azure Kubernetes Service )
- 「クイック スタート:Azure portal を使用して Azure Kubernetes Service (AKS) クラスターをデプロイする」を参考にAzure Portalを使用したAKSの構築を試します。
- 「クイック スタート:Azure CLI を使用して Azure Kubernetes Service クラスターをデプロイする」を参考にAzure CLIを使用したAKSの構築を試します。
- 以下の各リンク先でチュートリアルとして紹介されている一連の手順を 参考にして、「Hollo World」のWeb アプリをAKSにデプロイする手順を試します。
( 2 ) APIの発行
ASP .Net CoreよりAPIテンプレート を選択するとデフォルトで提供されている、「WeatherForecast」のサンプルソースを利用します。「App Service Plan」にデプロイしてそのまま利用するパターンと、「API Management 」と組み合わせて利用するパターンをそれぞれ試します。
( 2-1 )App Service Plan にデプロイしてそのまま利用する
- 「( 1 )Webアプリの発行」にて作成したApp Service Planへ 「WeatherForecast」のサンプルソースを Visual Studio 2019 から発行します。
- ブラウザから「【App Service名】.azurewebsites.net/weatherforecast」のURLにアクセスし、下図のような、json形式のデータが表示されれば、 動作確認としてはOKです。
( 2-2 )API Managementと組み合わせて利用する
- 「Azure API Management サービスの新しいインスタンスの作成」を参考に、Azure Portalを使用したAPI Managementの構築を試します。
- 以下の各リンク先でチュートリアルとして紹介されている一連の手順を 参考にして、 「WeatherForecast」 をバックエンドAPIとして設定する手順を実施します。
( 3 ) バッチ処理の開発
「Webジョブ」と「Azure Batch Service」それぞれについて、MSの公式サイトで公開されているサンプルソースを試してみます。両者ともバックグラウンドで実行するバッチ処理を実装するときに利用します。以下のような使い分けをするもとされていることが、手を動かしてサンプルソースを触ってみることで実感できます。
※他にバッチ処理を実装する方法として「専用のVMを構築する」と「Azure Automation」があるのですが、Az-203の出題範囲から外れるので割愛します。
- Webジョブ:比較的単純な処理を手軽に実装するとき
- Azure Batch Service : より高度で複雑な処理を実装するとき
( 3-1 )Webジョブ
- 「Azure App Service で Web ジョブを使用してバックグラウンド タスクを実行する」の手順を参考にWebジョブの作成を試します。
- 「Visual Studio を使用して Web ジョブを開発してデプロイする - Azure App Service」の手順を試します。
- 「イベント ドリブンのバックグラウンド処理で Azure WebJobs SDK の使用を開始する」の手順を試します。
( 3-2 )Azure Batch Service
- 「クイック スタート:Azure portal で最初の Batch ジョブを実行する」の手順を参考にAzure Portal を使用したAzure Batch Serviceの作成と実行を試します。
- 「クイック スタート:Azure CLI で最初の Batch ジョブを実行する」の手順を参考にAzure CLIを使用したAzure Batch Serviceの作成と実行を試します。
- Microsoft Learnより「Azure Batch で並列コンピューティング ジョブを実行するアプリを作成する」に記載されている一連の内容を、最後まで全て実施します。
( 4 ) データ保存領域への読み書き
ASP .Net CoreよりWebアプリケーション(モデルビューコントローラー)テンプレート を使用して、下表のAzure Service種別ごとに対応するサンプルアプリケーションそれぞれを作成し、「App Service Plan」にデプロイして動作を確認します。 各サンプルアプリケーションでは最低限、以下が全てできることをゴールとします。
- List:複数のデータを一覧で表示する
- Detail:指定した1件のデータを取得して画面に表示する
- Create:新しく1件のデータを挿入する
- Delete: 指定した1件のデータを 削除する
- Edit: 指定した1件のデータを 更新する
※ Azure Service種別ごとの補足事項や参考サイトは後述します。
# | Azure Service種別 | データの形式など |
4-1 | SQL Database | リレーショナルデータベース |
4-2 | Blob storage | テキストファイル(CSVなど) |
4- 3 | Queue storage | キュー |
4- 4 | Cosmos DB ( SQL Core API ) | Json |
4- 5 | Cosmos DB ( Table API ) | テーブル |
Azure Service種別のいずれの場合も「接続文字列」について、以下の3パターンそれぞれで動作を確認します。ソースコード内にハードコーディングするやり方は典型的なアンチパターンなので、たとえ学習用サンプルアプリケーションでもお止めください。
- 「Appsettings.json」を使用する
- Azure PortalにてAppServiceの「設定 > 構成」より「接続文字列」を使用する
- Azure Key Vaultの「シークレット」を使用する
※ Azure Key Vault については拙ブログ「Az-500 :Microsoft Azure Security Technologiesの合格に向けた学習のポイント」で解説しています。
( 4-1 )Azure SQL Database
- Entity Framework Coreを使用します。
( 4-2 )Azure Blob storage
コンテナーを作成し、テキストファイル内のデータを読み書きします。藤井が学習したときは題材として、CSVファイルを選択しました。
以下のサイトが参考になります。
( 4-3 )Azure Queue storage
以下のサイトが参考になります。
( 4-4 )Azure Cosmos DB ( SQL Core API )
以下のサイトが参考になります。
- クイック スタート:Azure portal を使用して Azure Cosmos のアカウント、データベース、コンテナー、および項目を作成する
- チュートリアル:Azure Cosmos DB で .NET SDK を使用して ASP.NET Core MVC Web アプリケーションを開発する
( 4-5 )Azure Cosmos DB ( Table API )
以下のサイトが参考になります。
( 5 ) サーバレス各種(Service Bus, Event Grid, Azure Functions, Logic Apps)
以下のサイトで紹介されているチュートリアルを最後まで実施します。シナリオがとても良くできているためおススメです。Az-203で出題されるサーバーレス系Azureサービスが各種バランスよくカバーされていて、かつそれぞれの具体的な利用シーンをイメージできます。
まとめ
自分で手を動かしてサンプルソースを組んで、1行1行の意味と役割を自分の中で腹落ちさせ、こまめにデバック実行しながらエラーを1つ1つ潰していき、Azure上で動作確認するところまでやる学習プロセスこそが、「急がば回れ」で合格を確かなものにすると信じています。
藤井自身はインフラ系/アプリ系の区分で言えば、「インフラ系」の人間です。インフラの構築作業でPowerShellのスクリプトを組んだりすることはあるのですが、アプリの開発経験は以下のみで、初級者レベルです。
- 期間:2年間(それも5年以上前)
- 言語:Delphi(令和の時代では超マイナー言語で、懐かしいという方がいれば業界の大先輩です。)
- アプリの概要:デスクトップアプリ(x86アプリ)、クラサバ型、IIS / MS SQL Server環境
C#に関しては「未経験者」でした。こんな藤井 でもなんとか合格できたので、「コーディングはアレルギーがある」という方も是非、 Visual Studio 2019 をインストールするところから始めてみてください。