【イベントレポート】.NETラボ 勉強会 2025年2月 #dotnetlab

いつも記事を読んでいただきありがとうございます！
モブエンジニア（[@mob-engineer](https://qiita.com/mob_engineer))です！

今回は2025.02.22（土）に開催した.NETラボ 勉強会 2025年2月へ参加しましたので、アウトプットとしてイベントレポートを執筆しました。

初学者でもサクッと読めるように平易な表現で執筆しておりますので、お気軽に読んで頂ければ幸いです。

:::note info
誤字脱字、分かりづらい表現に関しては極力なくすように心がけていますが、リアルタイムで執筆しているため、誤字脱字があるかもしれません。
:::

#### イベントページ

https://dotnetlab.connpass.com/event/344101/

# 目次
- プラットフォームエンジニアリング：SAチーム向けAOAIのAPI公開と活用例
- ML.NETで始める機械学
- Visual StudioのGitHub Copilotでいろいろやってみる
- Intel版新型SurfaceとCopilot+ PCの展望
- Windows のセキュリティ強化 - 管理者承認（Administrator protection）モード
- Microsoft Orleansで始める、アクターモデルを使った分散システム入門
- 分解して理解する Aspire
- LT
    - 短縮URLをお手軽に導入しよう
    - .NET Frameworkでも汎用ホストが使いたい！
- まとめ

#### AI Beginners

https://microsoft.github.io/AI-For-Beginners/

## プラットフォームエンジニアリング：SAチーム向けAOAIのAPI公開と活用例

### 登壇資料

https://www.docswell.com/s/windagecat/Z3G4E8-2025-02-22-144026

#### 参考サイト

https://learn.microsoft.com/ja-jp/platform-engineering/what-is-platform-engineering

https://speakerdeck.com/oracle4engineer/platform-engineering-kotohazime

https://learn.microsoft.com/ja-jp/azure/attestation/tpm-attestation-sample-policies

- 自己紹介
    - ハンドルネーム：風の時代のエンジニニャさん
    - プラットフォームエンジニアリング・SREのロールを担っている
        - IaCも触っている方
    - タロット占いが趣味
- 背景
    - プラットフォームエンジニアリング業務内で開発向けに何が出来るのかを伝える
- プラットフォームエンジニアリング
    - 開発者向けにプラットフォームを提供すること
    - ざっくり言えば、**開発環境をまるっとマネージドする**
    - テンプレート運用のためSREチームが忘れがちだが実は重要だったりする
- プラットフォームエンジニアリングのメリット
    - 内部開発の推進、標準化など
- 環境構築
    - API Managementを解してAOAIへリクエストイメージ
    - AOAIのモデルバージョンごとにAPIオペレーションを分ける
    - AOAIの負荷分散に対しても対策を講じている
    - ポリシーを調整することでAPIトークン数を制限できる
    - 利用しないAPIに関しては400レスポンスを返すようにする
    - APIリクエスト関連のダッシュボードを作成して可視化している
- API活用例
    - コードレビュー
        - CICDを通じたコードレビューを実現可能
        - PRコメントも生成AIに任せられる
    - NoOps
        - NoOps：運用管理（エラー解析など）を自動化させる取り組み
        - メトリクスを元にエラー修正を行える

## ML.NETで始める機械学習

#### 登壇資料

https://speakerdeck.com/ymd65536/ml-dot-netdeshi-meruji-jie-xue-xi

#### 参考サイト

https://courrier.jp/news/archives/77158/

https://www.tensorflow.org/resources/learn-ml?hl=ja

https://dotnet.microsoft.com/ja-jp/learn/ml-dotnet/what-is-mldotnet

https://learn.microsoft.com/ja-jp/dotnet/machine-learning/how-to-guides/serve-model-serverless-azure-functions-ml-net

https://docs.github.com/ja/copilot/about-github-copilot/github-copilot-features

- 自己紹介
    - .NETラボの運営の方
    - MSP向けの内製開発を担当している
    - 4月にラスベガス旅行（Google Cloud Next）
- AIと機械学習（ML）は違うモノなのか
    - Microsoftが詳細について説明している
    - DeepLearningが広まったのは猫のおかげ
        - 猫という存在を認識できたのがきっかけ
- MLを通じたメリット
    - 分類、予測、グループ化、検出して行う
    - 統計的思考に基づいて実装していく
    - **分類して分かることが分かるようになる**
- MLといえばPython
    - TensorFlowが広まったのが要素では
    - Pandasなどのライブラリがそろっているのが良い
- ML.NETとは
    - Microsoftが提供している機械学習用の.NETライブラリ
    - モデルの作成と評価が主要
    - 自動機械学習が楽に作成可能
- メリット
    - .NET/C#で開発可能
        - （個人的考察）静的型付け言語で開発できるのは嬉しすぎる
    - 事前にビルドするため実行時エラーを減らすことが出来る
- ハンズオン
    - 2025年02月現在は.NET8対応
    - dotnet toolsでインストールが必要
    - Windows利用民はVisual Studioを利用しましょう
    - やり方
        - dotnet toolでインストール
        - データを食わせる
        - 実行
    - モデルに関してはコマンドで選択していく
    - 実行時によって評価が変わってくる（88％だったり91％だったり）
- 物体検出で猫を見つけよう
    - 自作コードを試してみればいける
    - 犬を猫と認識したりする
    - アニメ画像であればそもそも認識しない
    - （個人的考察）チューニングすればもう少しいい感じになるのかしら🐱
- Azureとの連携
    - Azure FunctionでMLマシンモデルをデプロイできる

## Visual StudioのGitHub Copilotでいろいろやってみる
- 自己紹介
    - .NETラボ運営の方
    - 2022年からMicrosoft MVPを取得している
- 背景
    - Visual StudioのGitHub Copilot機能が充実してきた
    - 便利そうな機能を紹介していく
    - 積極的にGitHub Copilotを利用しましょう
- GitHub Copilot Chat編集
    - チャットに聞いた内容をそのままコードに反映出来るようになった
- GitHub Copilot Chatコマンド
    - 特定タスク（コメント生成など）の安定出力
- 参照ファイルを限定する
    - スラッシュ区切りを行えば実現出来る
- デバック実行
    - デバック実行中の変数遷移を調べることが出来る
    - コード分析を効率的に行えるため品質向上に役立つ
- コミット・PRコメント
    - コミットコメントを考える手間を削減することが出来る
    - PRコメントに関しても綺麗にまとめてくれる
    - 人間にはコミット、PRには早すぎた
- 最新機能
    - 参照したコード（パブリックリポジトリにUpされているコード）を示してくれる
- まとめ
    - GitHub Copilotを利用して生産性を向上させよう

## Intel版新型SurfaceとCopilot+ PCの展望

#### 登壇資料

https://www.docswell.com/s/tomokazu_kizawa/KMX9V6-surface-pro11-intel

#### 参考サイト

https://www.microsoft.com/ja-jp/atlife/copilotpluspc

https://techcommunity.microsoft.com/blog/windows-itpro-blog/administrator-protection-on-windows-11/4303482

- 自己紹介
    - Windows方面で有名な方
    - 毎週日曜日にPodCastを配信
    - ポッドキャスト番組のクラウドファンディングを行っている
    - 電子書籍として販売しているBoothで販売している
- 新型Surface
    - 今回発表されたのはSurface Pro（第11世代）-Intel
    - 正式名称は "法人向け<半角>"が付く
- スペック周り
    - プロセッサ：PS5レベルのスペック（数値上）
    - 価格帯として26万～42万のレンジ
    - 最高スペック＋キーボードのセットで50万
- Surface Laptop（第7世代）
    - Copilot+PC Dayで初登場
    - 法人向けに提供されているため、一般には流通していない
    - 価格帯として26万～42万くらい
- Copilot＋PC
    - オンデバイスAI搭載PCデバイス
    - クラウドで扱っているAIをエッジで扱えるようにする
    - NPU搭載 40TOPS以上のスペックを持っている
    - 登場背景として、現行AIの課題があった
- 現行AIの課題
    - 計算処理に膨大は電力消費が掛かる
    - 膨大な通信トラフィックが発生する
    - リソースに頼っているとサービスが頭打ちになってしまう
        - 実際にレスポンスのタイムラグが発生している
- PCで行うための課題
    - リソース分散、電気消費の問題がある（自作AIサーバを生やしたら電気代が）
    - AI処理に対するセキュリティとプライバシーの強化
- 現在の動向
    - SurfaceビジネスモデルはIntelプロセッサ
    - コンシューマモデルはSnapdragon
        - （個人的考察）ビジネス向けはIntelによっているって感じですかね
- なぜ、ビジネスモデルはIntelなのか
    - ビジネス継続性を考慮した選択
        - 互換性が優秀なIntelに軍配が上がる
        - 周辺機器のベンダもIntel対応しかしていない
        - 一太郎、ATOKもARM未対応
    - 3世代を併売している
        - Windows10対応したいユーザへの配慮
    - プロセッサをInter、ARMで展開しているのはベンダーロックイン問題回避
    - （個人的考察）ベンダーロックイン問題は難しいからなぁ
- まとめ
    - 法人向けIntelモデルがリリースされました
    - Copilot＋PCは多プロセッサ展開
- UACの考え
    - ユーザートークンと管理者トークンを分離している
    - Administratorsに関してはワンクリック承認
    - Userに関してはUser/Password
- UACの問題
    - ワンクリック承認なので簡単すぎる
    - パスワードレスを進めているのにパスワード認証
    - 管理者の場合、利用の確認（≒権限は元々持っている）を行っているだけ
        - トークンを窃取されたらアウト
        - その結果として、管理者保護モードが出てきた
- 管理者保護モード
    - 英語ではSMAAと呼ばれている
    - Microsoft Learnには未掲載
    - ざっくり言えば、"ローカル環境用の管理者アカウント＋パスワードレス"なのかしら
    - 管理者トークンの利用に関してJust-In-Time（使うときに使う分だけ）となる
    - 自動昇格も出来ないため、対話が必要となる
    - 生体認証などが求められるため、セキュリティ向上出来る
- 設定方法
    - Windowsセキュリティ内に管理者保護が追加されている
    - 有効・無効の設定が出来る
    - UACが有効化されていないと管理者保護モードは利用出来ない
    - Intuneのエンドポイント特権管理との互換性がない
        - 上手く昇格できないといった問題が発生する
- まとめ
    - 管理者保護モードはセキュリティ＋使いやすさを両立したアプリ

## Windows のセキュリティ強化 - 管理者承認（Administrator protection）モード

#### 登壇資料

https://speakerdeck.com/murachiakira/windows-noxin-siiguan-li-zhe-bao-hu-modo

#### 参考サイト

https://learn.microsoft.com/ja-jp/windows/whats-new/whats-new-windows-11-version-24h2

https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/user-account-control/how-it-works

- 自己紹介
    - エクシードワン所属の技術フェローの方
    - 専門学校で非常勤講師を行っている
    - 2011年からMVP継続中の方
- 管理者について
    - Administratorsユーザ
    - 管理タスクを全て実行するためのユーザ（ユーザ作成など）
    - 組み込みのAdministratorsグループに割り当てれば権限付与が可能
- 管理者権限について
    - Windows NTから生まれた考え
    - 9X系やMeでは管理者と言う概念が無かった
    - 日常利用するユーザに管理者権限はいらないのでは？
    - 権限比較としてAdministrators>Power Users>Users
        - 一般ユーザで管理者権限を利用したければPower Usersでいいのでは
    - とはいえ、Power Usersは安全じゃなかった（昇格などの脆弱性問題）
    - Usersだと一般タスクしかできない
- Microsoftの検討
    - Power Usersは失敗だった
        - 現在は非推奨の設定となっている
    - 管理者だからと言ってセキュリティリテラシーが高いわけではない
        - Linuxのsu/sudoの考えを活用してみた
        - 一定条件を満たせば管理者権限に昇格できる
        - UAC（ユーザーアカウント制御）の考えが生まれた

## Microsoft Orleansで始める、アクターモデルを使った分散システム入門

#### 登壇資料

https://speakerdeck.com/tomohisa/microsoft-orleansdeshi-meru-akutamoderuwoshi-tutafen-san-sisutemuru-men

#### 参考サイト

https://learn.microsoft.com/ja-jp/dotnet/architecture/microservices/architect-microservice-container-applications/microservices-architecture

https://learn.microsoft.com/ja-jp/dotnet/orleans/overview

https://github.com/dotnet/orleans

https://zenn.dev/jtechjapan_pub/articles/aac3e1a89701d1

https://www.sekiban.dev/

https://github.com/tomohisa/OrleansPlayground

- 自己紹介
    - ジェイテックジャパン所属のCTOの方
    - イベントソーシング、CQRSなどのソフトウェアアーキテクチャを行っている
- 分散モデル
    - Webサーバは基本的にWeb・アプリ・DBの3層アーキテクチャになっている
    - 各層ごとにスケーリングさせるのがモノリシック・アーキテクチャになる
- 3層アーキテクチャの問題
    - アーキテクチャの制約：ストレージ層がボトルネックになってしまう
- マイクロアーキテクチャ
    - ざっくり言えば、機能単位で分割するイメージ
    - 疎結合を実現出来るが、データ整合性問題がある
    - イベント駆動を組みあせるとデータ整合性問題を緩和できるが複雑さが増す
- アクターモデルとは
    - 1973年に提唱された考え
    - ざっくり言えば、アクターと呼ばれる処理のカタマリ単位で実行している
    - 最新のアクターモデルはクラスター単位で動かせる
        - アクターモデルによって通信する複雑さを考慮しなくて良くなる
- Orleansとは
    - アクターモデルの複雑さを排除を目的に開発された
    - 現在もコミュニティ内でアップデートが行われている
- Orleansアーキテクチャ
    - グレイン：アクターの実装で利用されている
    - 開発者がビジネスロジックのみに集中できるため開発効率が向上する
    - コードに関してもそこまで複雑でない
    - シリアライズ・デシアライズ含めた単体テストが可能だが時間が掛かる
- まとめ
    - 適切にパフォーマンス設計を行うことは難しい
    - 今回のMicrosoft Orleansはパフォーマンス設計を簡単に行える
    - 無料利用出来るので、スモールスタートでも活用できる

## 分解して理解する Aspire

#### 登壇資料

https://speakerdeck.com/nenonaninu/fen-jie-siteli-jie-suru-aspire

#### 参考サイト

https://learn.microsoft.com/ja-jp/dotnet/aspire/get-started/aspire-overview

- 自己紹介
    - NTT Com所属の方
    - OSS開発をされている方
    - 強制型付け、OpenTelemetry関連のOSS開発をされている方
- Aspireが解決しようとしたこと
    - クラウドネイティブだとアプリを多数開発する必要がある
    - ローカル開発環境、クラウド開発環境での分岐があり厳しくなる
        - 解決策としてAspireが生まれた
    - 依存関係の構築、修復など機能が盛りだくさん
- ユースケース
    - 分散アプリケーション開発の用途
        - 分散アプリケーションでなくてもいい感じになるのでは
- 最小構成でAspireを構築
    - AppHostを作成⇒プロジェクト作成⇒AppHostのProgram.csを作成
    - 最小構成だとAspireは使う意味は無いが、最小限でも出来る
- 最低限活用する
    - ローカル開発で幸せになるポイント
        - アプリケーションに必要な各種コンポーネントが一括起動
        - 開発用ダッシュボードでOpen Telemetryを漁れる
    - アプリケーション側に実装必要なモノ
        - Open Telemetryは必須
    - アプリケーションに対してやってくれるのは環境変数の追加だけ
- まとめ
    - ざっくり言えば関連アプリケーションの一括起動＋アプリケーションへの環境変数を行っているだけ
- Microsoft Developer Control Plane
    - エンドポイントとコンソールログに出力されているPort番号が異なる
    - エンドポイント側はdcptrlといったプロセスが動いている
        - リバースプロキシ的存在が動いているのでは
    - 存在するのは確かだが、ドキュメントが存在しない
    - 調べてみたらKubeconfigで動いている
        - kubectlでたたくことが出来る
    - 結論、リバースプロキシ？？

## LT

### 短縮URLをお手軽に導入しよう

#### 参考サイト

https://learn.microsoft.com/ja-jp/shows/azure-friday/azurlshortener-an-open-source-budget-friendly-url-shortener

https://github.com/microsoft/AzUrlShortener

https://github.com/microsoft/AzUrlShortener/pull/542

- 自己紹介
    - NTTテクノクロス所属の方
- URLあるある
    - 長文URLは可読性が低くなる
    - 情報を詰め込みすぎると、QRコードが細かくなり読めなくなる
    - AzUrlShortenerが役立つ
- AzUrlShortenerとは
    - 元々は個人開発のOSS
    - 現在はMicrosoft公式のGitHubに移行している
    - GitHubをクローン⇒実行すればGUIで短縮URL作成可能
    - 任意のURL名を作成できるためブランディングにも活用可能
    - 現在大幅アップデート対応中

### .NET Frameworkでも汎用ホストが使いたい！
- 汎用ホストを入れたい理由
    - 第3位：正常なプロセスをシャットダウン
        - やる人はそこまでいない
    - 第2位：DI
        - DIベースの構築になれてきて離れられなくなる
    - 第1位：ログ
        - 運用サイドからするとエラーが見やすい
- まとめ
    - .NET FrameWorkでも汎用ホストを入れていきましょう

### Silverlightプロジェクトを令和に移植する

#### 参考サイト

https://learn.microsoft.com/ja-jp/lifecycle/announcements/silverlight-end-of-support

https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/xaml/?view=netdesktop-9.0

- 自己紹介
    - サザビーリーグHRでエンジニアをされている方
- やりたいこと
    - Silverlight製のアプリケーションをReactベースに移行
- サポート終了しているが
    - EdgeのIEモードなら利用可能（2025年も生きている）
    - Visual Studio 2015なSilverlightを開けるがダウンロードできない
    - E2Eテストは出来るので、そこからAS-ISレベルの機能理解は出来る
        - 詳細はコードの中のみに潜んでいる
    - 移植時のコーディングの方向性でメンバー間での認識齟齬はあったが
        - なんとか上手く事なきを得た
- まとめ
    - 開発時のコンセンサスは本当に重要

## まとめ

久しぶりに.NETラボの勉強会に参加したのですが、Microsoft関連の機能・アーキテクチャの理解が深まりました。そのうえで、現在、開発担当のロールを担っているので、今回得た知見をどのように実業務へ活用、個人開発としてのアウトプットの材料として活用していきたいと思いました。