kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

2024年振り返り

2024年アクセスランキング

  1. WSUS非推奨化発表に伴う感想と今後どうするのか - kkamegawa's weblog
  2. Active Directoryドメインコントローラーにsysvolとnetlogon共有がない時の対処 - kkamegawa's weblog
  3. Visual Studioでのビルド時にCOMコンポーネントでエラーが出る場合の対処 - kkamegawa's weblog
  4. WSUSインストール後の構成に失敗する問題と対処 - kkamegawa's weblog
  5. Microsoft Teamsの長いURLをできるだけ短くしたい - kkamegawa's weblog
  6. Active Directory Domain Servicesのドメイン名を変更するときに起きたトラブル - kkamegawa's weblog
  7. WSUSの代わりとしてAzure Update Managerは使えるのか - kkamegawa's weblog
  8. Gitで独自の証明書を使用する(Git for Windows 2.12.1で不要に) - kkamegawa's weblog
  9. merge文で単一のテーブルにレコードがあれば更新、なければ追加する - kkamegawa's weblog
  10. Visual Studio 2017でMStestが実行できない場合の対処(System.Runtime, Version=4.1.1.0または依存関係の1つが読み込めないエラー) - kkamegawa's weblog

過去12か月分のアクセス数をとると、大体過去のエントリーが多いのですが、今年はなんといってもWSUS非推奨化が大きかったのか、関連するエントリーが二つも入りました。ちなみに1位のWSUS非推奨化のエントリーは2‐7位のエントリーのアクセス数をすべて足した数とあまり変わりません。でもWSUSの発表って9月という、たった3か月ほどなのにこの数値って…。

まぁこんなものですよね🤷‍♂️。それでもWSUSに関しては本当にみんなの関心が高いのだなと思います。

イベント

5月にMicrosoft Buildに初めて参加できたのはとても素晴らしい経験でした。昨今の円安事情のおかげで海外カンファレンス参加しづらくなっていますが、可能な限り続けていこうと思っています。

6月には間を置かずBuild Japan Recapで合わせて15分という時間でしたが、お気に入りの話ができてとてもよかったです。実は「一人15分」だと出番の直前まで勘違いしていたことは秘密です。

9月には大阪でServerless meetup OsakaがあるというのでちょっとManaged DevOps poolについてお話してきました。AWSユーザーが多かったですが、興味持ってもらえた…かな?今後も時間あえば出ていこうと思います。Managed DevOps Poolに関しては今年だけで3回もしゃべったので、今後はもう少し拡充された時でいいかな…。

同じく久しぶりに呼ばれてパフォーマンス勉強会でしゃべってきました。1月にも同じくリアルで.NET Confやるのでよろしくお願いします。

tfsug.connpass.com

11月は一度しゃべってみたかった、Microsoft 365系のイベントにお邪魔して一枠いただいてしゃべってきました。前からM365とAzure DevOps/GitHubをくっつけた話してみたかったのです。しかし、この話をして一週間後にまさかViva Goalsがディスコン発表されるとは思ってもみませんでしたが…うーん、諸行無常。

そういえば、TestBaseも12月書いた後ディスコン発表があったんですよね…AI中心時代になってちょっと気になっていたサービスが切られるなぁ…。

3月のMVP Global Summitは行こうと思っていろいろ根回ししている最中に…うーむ、悲しい。来年こそは。というか円安どうにかなっていてほしい。

買い物

書いた通りですが、SnapDragon DevKitが無料でゲットできたのはうれしい…のですが、どうなんだろう。もうちょっと静かなデバイスだと期待していたんですが、PC設計ほんと度したことがない(よね)Qualcommだとやっぱりこんなものになってしまうんですかね。とりあえず壊れるまでは使い倒します。

10月末に久しぶりにMac新調しました。さすがにこのくらい性能上がっていると何やってもすいすいという感じですね。というか、以前のCore i5 MacBook Proでも最初は同じことを思っていた気がしますけど、4年は持ってほしい。

生活

Qualcommのことでいいことがあった後はよくなかった…頭切ったときはマジ大変だった。年末に向けて運気下降中だったので、ここでリセットしたいところです。時間の使い方を今一度考えなおしているところなので、途中で気を抜く時間、作業に集中する時間、その間のロスの時間を目的をもって過ごしたいなと思っています。

2025年に向けて

  • 書籍関係。だいぶたまっていて、やるやる詐欺…
  • TFSUGのイベントを定期的に(3か月に一度目標)。しゃべってみたい方募集
  • もうちょっと外のイベントに(2回は出てしゃべりたいが…東京が多いんだよなー)

2025年も気負うことなくやっていきますので、よろしくお願いします。

2024年Azure DevOps振り返りとどうなる2025年?

この記事はAzure DevOpsアドベントカレンダー25日目の記事です。

qiita.com

今年のアドベントカレンダーは多くの方に書いていただき、無事完走できました!参加していただいた方、読んでいただいた方、ありがとうございます。

2024年振り返り

今年は15回のリリースがあり、Boardsが10回、Reposが7回、Pipelinesが14回、Test Plansが5回、Artifactsが2回、Advanced Securityが11回、Wikiが1回、その他が7回でした。

Pipelinesがやはり多いですね。次がAdvanced Security, Boardsという順番でした。というか、4年音沙汰がなかったTest Plansにいきなり5回も更新が入ったのが驚きです。

毎回リリースノートの翻訳をやっていたわけですが、振り返って更新内容を見ていると、こんな感じでしょうか。

  • 「やらなきゃいけないよね」という更新
  • GitHubとの連携強化
  • Advanced Securityの強化(GitHub追従含む)

こんなところでしょうか。

Boards

完全にGitHub連携の年でした。昨日のアドベントカレンダーでも触れられていますが、やっぱBoards便利なんですよ。しかもMicrosoftクラスの企業が提供する、この手のものにしては異様に安い。

azukipochette.hatenablog.com

なんといってもStakeholderならタダですよ…。これ見るだけって人も多いと思うし、そもそもこれ単独で使っても非常に便利です。競合というか私はJiraもGitHubも使っていますが、どれ使ってもそう思います。やっぱ全ての情報が関連づけられるのは大変便利ですし、そもそもBoards直接使わなくてもTeamsやPower BIで見たって構わないわけですし。

来年はいよいよ新しいHubがデフォルトになります。まだまだ旧boardsを使っている人多い様ですが、個人的にはデメリットがなかったのでまだ移行していなかったのかという感じですが、便利ですし、パフォーマンスもいいですしね。

Pipelines

Workload IdentityとManaged DevOps Poolの年でした。MDPは正確には製品グループ発祥ではないのですが(1ESというMicrosoft内部のエンジニアリングチーム発)。

Workload IdentityはService Principalで悩ましかったキーローテーションがなくなるのが大きいですね。その分、使わなくなったら消すこともお忘れなく。あとは定期的な更新であるエージェントの更新がUbuntu, macOSと重なったこともちょっと大変でした。来年はWindows Server 2025のエージェント更新があるでしょう。Visual Studio 2019に依存しているひとは要注意ですね。Windows Server 2025もおそらくVisual Studio 2022のみ?でしょうし。あ、そういえばVisual Studio 2025って出なかったんですね。

Pipelineエージェントが.NET 8で書かれたVer 4としてリリースされました。このバージョンからArm64版もリリースされたのでArm on Windows PCでも安心してエージェントが動かせます。同様にエージェントタスクがnode 20ベースになったので移行が必須になりました。ほかは着実に順当なメンテナンスのためのバージョンアップという感じですね。

Test Plans

最後に更新されたのが2020年で実に4年ぶりの更新です。GitHubにもない機能なので、改良して欲しいですね。とはいえ、基本的にChrome拡張機能のManifest V3対応は順当ですが、ビルドパイプラインとのシームレス統合はやっとという感じです。GUIの前のXAMLコントローラー時代はできたのですが。順調に投資してほしいものです。

GitHub Advanced Security

こちらもGitHubへの追従が多いですかね。サードパーティーのsarifサポートとか、シークレットの拡大とかAPIのエンドポイントとか、C#/Javaのビルドなしスキャンとか、セルフホストエージェントで事前にダウンロードしておかなくてもいいとか、CodeQLのカスタムクエリパックのサポートですね。細かい使い勝手が向上している印象です。エンタープライズで使われるものなので、着実な改善してほしいです。

2025年どうなる?

learn.microsoft.com

一応こちらにロードマップが公開されています。今までのペースでいけば、GitHubのような大きな機能は多くなく、着実にエンタープライズ向けに改良を続ける、GitHubとの連携を続ける、という感じかなと思っています。大きな隠し玉はあまりないような…。個人的に楽しみにしているのはこの辺です。

…あれ、少ない。多分1月になったらPublic roadmapが更新されるでしょう。

ここに載っていないけど、個人的に期待しているものとしては、GitHub Enterprise Cloud(EMU)とのorganization連携とかできるようになってもいいかなぁ、とは思っています。そもそも管理単位が結構違うのでEnterpriseのorganizationをまんまAzure DevOpsのOrganizationに割り当てるのもなかなか難しいものがありますが、実はひそかに期待していたりします。GitHub Copilotのシートアサインとか、Advanced Securityのライセンス相互運用とかできそうだし。

そんな妄想にふけりながらこのアドベントカレンダーを締めたいと思います。ありがとうございました。

Azure DevOpSのPATをAPI使って自動作成する

この記事はAzure DevOpsアドベントカレンダー24日目の記事です。

qiita.com

実は去年から考えていたネタでしたが、ようやく重い腰を上げてというかなんというかという感じです😅。PATはPersonalというだけあって個人に紐づくものではあるのですが、Entraに接続しているAzure DevOps OrganizationではREST APIで作成、更新といった管理が可能です。

learn.microsoft.com

github.com

そんなものを含む認証系のサンプルを用意してくれています。ただ、これ全部はいらないのと、もうすぐ廃止になるAzure AD Graphモジュールを使われていたので、Microsoft Graphモジュールに書き直したものをこちらに用意しました。

github.com

まだちょっとだけ足りないところがあるので、完全に自動化はできていません…。具体的にはService Principalを作った後、user_impersonationの追加ができていません…。また調べます。

ここのAzure DevOpsのuser_impersonationを追加してください。

実行は大体ドキュメントに書いていますが、必要なもの。

  • Python 3以降(私は3.12で実行)
  • Flask 2未満など この辺に書かれているもの

私は実行環境作るのがめんどかったので、PyCharm使ってしまいました…。

準備

  1. src/prepare/configure.ps1を実行します。macOSでも動くようにしています。
  2. Service Principalが作成できたらAzure DevOpsのuser_impsersonationを追加してください。
  3. アプリケーションID, テナントID, シークレットキーをapp_config.pyに置き換えてください。
  4. flask run --host localhost --port 5010で実行します。(ドキュメントに書いているリダイレクトURI間違えていますので気をつけて)

※ 5000でないのはmacOSがデフォルトでとっているからです。

実行

http://localhost:5010にアクセスして、sing_inをクリックすると、同意の画面が出るはずです。

同意すると、こんな感じでPAT作成画面が表示されます。

最後に

これはサンプルなのでローカルで動く単なるWebアプリですが、Azure Functions + Automation or Logic Appsなどにして定期的にPATの作成や期限切れの警告を出すとかできたらいいと思います。使ってみてください。

Defender for DevOpsエージェントレススキャンでAzure DevOps環境を自動スキャンする

この記事はAzure DevOpsアドベントカレンダー22日目の記事です。

qiita.com

勘違いしていて、記事の順番を変えました。ちゃんと紹介して…いなかったので、少し前からパブリックプレビューになったDefender for DevOpsのエージェントレススキャンというサービスをご存じでしょうか?

learn.microsoft.com

GitHub Advanced Security( for Azure DevOps)でもなんでもそうですが、レポジトリや成果物に対してスキャンをするには何らかの明示的な指示が必要です。ここでいろいろ設定する余地はありますが、そんなことしなくても必ず設定してほしいとか、管理側で強制したいとか、Azureポータルで管理したいとかいろいろ理由はあります。

そんな場合、Defender for DevOpsのエージェントレススキャンを使います。やってみましょう。

Defender for Cloudポータル

Azureポータルのセットアップを開きます。一番右のadditional envionmentをクリックします。なお、この機能を使うには有償版のDefender for Cloud (Defender CSPM)を有効にする必要があります。

コードレポジトリはGitHub, Azure DevOps, GitLabがサポートされています。Azure DevOpsを選択します。

サブスクリプション、リソースグループ名、コネクター名、Locationを選択します。リージョンによっては使えないかもしれないので、気を付けてください。

エージェントレススキャンをONにします。

Azure DevOpsの認証を行います。同じEntraに接続されている、Azure DevOps organizationが全部対象になります。また、「既存のすべてのorganization」か「既存及び今後作成されるすべてのorganization」のどちらかを選びます。通常は上の「既存及び今後作成されるすべてのorganization」を選べばいいです。接続後、YAMLに書くことなくスキャンが行われます。

YAMLでビルドしてみる

今回こんなYAMLを用意してみました。Azure Container Appsのテンプレートそのままです。見てわかる通り、YAMLには余計なものはありません。しかし実行してみると。

Microsoft Defender for DevOps Container Mapping startというタスクが自動的に差し込まれています。終了時にはEndタスクも入っています。

AzureポータルではこのようにGitHub Advanced Security for Azure DevOpsが無効であることやpull requestの状態がわかります。セキュリティの警告があればそれも表示されます。Azure DevOpsないだけではなく、Azureからも管理できるDefender for DevOpsの活用も考えてみてください。

learn.microsoft.com

learn.microsoft.com