Microsoft Learn Catalog APIを使ってMicrosoft認定資格の一覧を作る

はじめに

業務の一環でMicrosoft認定資格の取得推進にも関わっています。

Microsoft認定資格で各試験のサイトに行くと、図のように関連するMicrosoft Learnのラーニングパスを表示してくれます。

引用元:Microsoft 認定:Azure Administrator Associate - Certifications | Microsoft Learn

これを社内用にまとめたページがあれば便利だなと常々思っていたのですが、ふと、「もしかしたらAPIがあるのでは?」と思い調べてみたら本当にありました。*1

learn.microsoft.com

今回は、このAPIを使って、Microsoft認定資格と対応したMicrosoft Learnの一覧をPower BIで作ってみたいと思います。

Microsoft Learn Catalog APIへのクエリを考える

認定資格側の値としては認定資格や試験が、Learnのコンテンツ側の値としてはラーニングパスやモジュールがあるのですが、今回は、「認定資格」と「ラーニングパス」の関係に絞ります。

Microsoft Learn Catalog APIを参照し、クエリを考えます。

まず、認定資格なので、typecertificationsになります。また、言語も指定できるので、localeja-jpにしておきましょう。

組み合わせるとこうなりました。

https://learn.microsoft.com/api/catalog/?type=certifications&locale=ja-jp

同様に、ラーニングパスはこのようになります。

https://learn.microsoft.com/api/catalog/?type=learningPaths&locale=ja-jp

※ typeは複数指定も出来ますが、今回は分けて取得しておいて、必要に応じてクエリで結合することにします。*2

一度ブラウザにクエリを入力して、値を拾えるか試しておきましょう。

Microsoft Learn Catalog APIへ接続して値を取得する

Power BI Desktopを起動し、ソースを「Web」とします。

まずは認定資格のクエリを入力します。

無事接続できました。

同様にラーニングパスも取得します。

クエリ名は分かりやすく変えておきます。

Power Query エディターで必要な列を整理するポイント

Power Query エディターで必要な列を整理していきます。どれを展開しどれを削除するかはケースバイケースなのですが、自分でやってみた限りのポイントです。

クエリ内でユニークになる値を決める

例えば、認定資格のクエリであれば、certifications.uidがユニークになるようにします。

読み込んだ時点ではユニークになっていると思うのですが、例えば、認定試験で「新しい行に展開する」を不用意に選ぶと

一つの認定資格に複数の試験が必要なケースなどでcertifications.uidがユニークではなくなってしまいます。

最終的にこういったデータが欲しいケースはあると思いますが、認定資格のクエリであれば認定資格はユニークにしておいた方がいいと思います。

certifications.uidの様な「uid」が書かれた列を活用する

認定資格やラーニングパスでそれぞれuidとしてMicrosoft側で設定しているIDがあるようなので、これを使わない手はありません。

後でリレーションを設定したりクエリを結合するときに便利なので、上記のユニークになる値を決めるときやリレーションを設定する時、クエリを結合するときに積極的に活用しましょう。

列を展開した後の列名は適宜修正する

列を展開する際にプレフィックスの設定が可能ですが、同じ意味を持つ値に別の列名が付いていると後でややこしいので、適宜修正しましょう。

特に、前述のcertifications.uidのようなユニークIDはすべてのクエリ内で統一しておいた方が便利です。

Power Query エディターで必要な列を整理する

では、実際に整理していきましょう。

認定資格で必要な列を整理する

まず、認定のタイプで絞り込みます。今回は、マイクロソフトの認定ポスターに載っている試験に限定したいので、certifications.certification_typeを"fundamentals", "role-based" ,"specialty"に絞ります。

その上で、不要な列を削除して、列の取捨選択を行っていきます。

最終的に残った列です。

  • certifications.url
  • certifications.title
  • certifications.uid
  • certifications.subtitle
  • certifications.exams
  • certifications.study_guide

認定資格で必要な列を整理する

次は、ラーニングパスの方を整理していきます。ラーニングパスは所要時間やモジュールの情報、レーティングなど色々あるのですが、今回は以下の4列に絞りました。

  • learningPaths.title
  • learningPaths.summary
  • learningPaths.uid
  • learningPaths.url

クエリをマージし、認定資格とラーニングパスの対応表を作る

認定資格のクエリをベースにラーニングパスの対応表を作って行きます。ただ、現時点では認定資格とラーニングパスを紐づける情報がありません。

実は、認定資格のクエリの中にあるcertifications.study_guideを展開するとラーニングパスのUIDが出てくるのですが、前述の通り、認定資格のクエリはcertifications.uidをユニークな値として保持しておきたいので、認定資格のクエリをコピーして利用する事にします。

クエリをコピーして、名前を変えておきます。

その上で、certifications.uidとcertifications.study_guide以外の列は削除します。

certifications.study_guideを展開し、次のようなデータを得ました。

今回実はちょっと困るのが、実は認定資格に対してラーニングパスではなくモジュールが紐づいているケースがあります。

ただ、今回はモジュールの情報は取得していないので、ラーニングパスを持っているものに限定したいと思います*3

最後に、列名を変えておきます。今回はラーニングパスに絞ったので、certifications.study_guide.uidとして展開された列はlearningPaths.uidと同じものになるはずなので、揃えます。

リレーションを確認する

クエリの準備は出来たので、リレーションを確認します。

今回、事前に列名をそろえていたので、リレーションは自動で設定されています。*4

ただ、このままだとレポートで認定資格を選んだ時にラーニングパスが絞り込まれませんので、リレーションシップを編集し、クロスフィルターを双方向にしておきます。

今回は二つのリレーションを両方ともクロスフィルターにしました。

データカテゴリの設定を行う

URLの列に対してデータ カテゴリをWebに設定しておきます。

これによって、後ほどレポートを作成する際、ハイパーリンクが有効になります。

詳細は下記の記事も参考にしてください。

blog.jbs.co.jp

レポートを作成する

ではレポートを作ってみましょう。

ごくシンプルに、テーブルを作りました。左ペインは、認定資格が並んでいます。

右ペインは、ラーニングパスが並んでいます。

左ペインで認定資格を選択すると、その認定資格に対応したラーニングパスだけに絞り込まれます。リンクのアイコンから実際のサイトを開くことも可能です。

おわりに

これで、Microsoft Learn Catalog APIを使ってMicrosoft認定資格の一覧を作る事が出来ました。絞り込んでリンクをクリックすればラーニングパスに移動できるので便利です。

もっと手を加えると、モジュールを表示させたり、認定資格ではなく試験単位で表示させたり、レーティングを使って人気のラーニングパスを表示させる事も出来ます。ニーズに合わせて色々応用してみてください。

*1:夜にたまたま発見して、興奮してなかなか寝付けませんでした

*2:必ずしも1:1の対応ではないので、後々の事を考えるとこの方が便利、というのが個人的な見解です

*3:やるとなると、モジュールとラーニングパスを同じUID列で区別できるようにするデータを用意するか、モジュールとラーニングパスを分けて管理するか、どちらかでしょうか…

*4:もし設定されていない場合は手動で設定するか、列名を確認してください。

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧