BEACHSIDE BLOG

Azure とか C# 好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

C#

Azure AD B2C のカスタム属性を Graph API で管理する (前編)

Azure AD B2C では、ユーザーの情報として Email や表示名、姓、名といったの一般的な Claim があります。それに加えて独自の Claim を追加することができます。 それがカスタム属性です。 Azure Portal からでは、カスタム属性を作成することがはきますが、…

EF Core の Global Query Filters 機能で論理削除フラグをいい感じに扱う ( Entity Framework Core )

Entity Framework Core では、はるか昔 (v2.0) に Global Query Filters (グローバルクエリフィルター)という Cool な機能が追加されました。 わかりやすそうなユースケースとして 論理削除されたデータはデフォルトで除外して、データを取得する マルチテ…

Cosmos DB の Change Feed 機能と使い方 ( Azure )

Azure Cosmos DB の Change Feed は、データの変更を検知してイベントを発火できる超便利な機能です。Azure Functions の Cosmos DB Trigger を使うことで超簡単に利用できます。 個人的には近年 RDB はほぼ使ってなくて Cosmos DB ばっか使ってるわりに Cha…

Jupyter Notebook で C# や PowerShell を実行する

.NET Interactive で C# が Jupyter Notebook 上で動くのは結構前からありましたが、PowerShell も使えるようになったらしいので試してみました。 (ちなみに普段 PowerShell は滅多に使いまてん...) 準備 conda update .NET Core 3.1 SDK のインストール d…

Slack 通知用の Azure Functions の Custom Bindings を作る (2)

前回 Slack 側の準備と送信したいメッセージの json フォーマットを作りました。 blog.beachside.dev 今回は本題の Azure Functions の Custom Bindings を実装します。 作った順にコードを解説していきますが、コード全部は下の方にリンク張ってます。 Azur…

C# で System.Text.Json 使って Json を操作するときに気になったポイント( .NET Core 3 ~)

C# では .NET Core 3系にて Json のシリアライザーとして System.Text.Json が生まれました。 長らくお世話になった Json.NET - Newtonsoft とのお別れです。 多少お作法が異なるので、個人的に気になった点を整理してみました。 TL;DR 基本的な使い方 準備 …

Slack 通知用の Azure Functions の Custom Bindings を作る (1)

自分のアプリから Slack への通知を、Azure Functions の Custom Bindings を使って作ります。 Slack の Incoming Webhook を使うことで簡単に Slack へ送信できるため、Logic Apps ...いやそれより Functions で HTTP Request 投げた方が早いですが、時間を…

NuGet パッケージ 作成と Azure Artifacts へ公開 ( Azure DevOps )

今回は .NET Standard のライブラリを NuGet パッケージ化して手作業で AzureDevOps の Artifacts への発行をします。次回 Azure DevOps の Pipelines を使って発行を自動化します。 また NuGet Package を作成するの備忘録として、バージョン管理とかライセ…

MS Teams 通知用の Azure Functions の Custom Bindings を作る

Azure Functions には、バインディング ( bindings ) という仕組みがあります。これを使うことでいちいち細かいコードを書かなくても設定と少量のコードで、Queue トリガーを指定したり、Cosmos DB からデータを取得したり登録したりできます。 bindings の…

Durable Functions の状態管理と起動の基本 ( Azure Functions / C# )

Durable Functions を使うと、基本的に Azure の Storage で状態が管理されますが、久ぶりに使ったときに基本的な内容が改めて全く記憶がなかったのでメモしました。 状態管理 Table Queue 起動 Durable Functions の基本構成 starter の起動 Orchestrator …

Durable Functions: Human interaction pattern ( 人による操作 pattern )

Azure Functions の拡張機能である Durable Functions にはいくつかの実装パターンがありますが、ここでは Human interaction pattern を取り上げます。 今年の1月頃に書きかけてから、書くほどのことでもないなーと放置してたブログを更新しました...あの頃…

Speech Service の Speech To Text で音声をコンソールに表示する ( Azure Cognitive Services )

Microsoft Inspire で HoloLends 使った翻訳デモがあったりして盛り上がりを感じたので久々に触ってみようと思いました。 今回は、話した音声を Speech to Text でテキスト化して表示するコンソールアプリを作ります。 プロジェクト作成と Nuget のインスト…

TensowFlow の学習モデルを C# で読み込む( ASP.NET Core 編)

犬種の画像分類の学習モデルを ASP.NET Core に組み込みんで画像分類できるようにします。 Azure の Custom Vision で画像の分類器を秒殺で作成することで(盛りました、作成に数分くらいです)、TensorFlow の画像分類のモデル作成のターンでは、機械学習の…

TensowFlow の学習モデルを C# で読み込む(コンソールアプリ編)

犬種の画像分類の学習モデルを C# のコンソールアプリに組み込みんで画像分類できるようにします。 Azure の Custom Vision で画像の分類器を秒殺で作成することで(盛りました、作成に数分くらいです)、TensorFlow の画像分類のモデル作成のターンでは、機…

ASP.NET Core の インメモリー キャッシュ 機能を使う

ASP.NET Core 2.2 で In-Memory にデータをキャッシュしておくための専用の機能のひとつ、System.Runtime.Caching/MemoryCache の使い方について軽く整理してみました。 In-Memory キャッシュの利用ガイドライン コーディング Nuget Package のインストール …

Azure Functions V2 での DI ( Dependency Injection ) : 2019年5月編

気づけば Azure Functions V2 のC#で DI ( Dependency Injection )が正式にサポートされましたね。依存性の注入とか依存関係の注入とか、MSのドキュメントだと依存関係の挿入とかってやつです。 実装のざっくりな要点は以下だと思ってます。 Startup.cs で D…

Azure Cosmos DB の一意キー制約(Unique Key Constraints)

Cosmos DB の一意キー制約(Unique Key Constraints)について、実装方法やエラー時の挙動を調べたメモです。 いきなり余談ですが、 一昔前に Cosmos DB で Collection と呼ばれていたものは、Azure の Portal だとまだ "Collection" と表現されていますが、…

Azure Function V2 (C#) で Run From Package の CICD と Azure DevOps (3/4)

今回は、Zip デプロイ・Run From Package の CI/CD パイプラインを作ります。具体的には、Azure DevOps 上で Build Pipelines と Release Pipelines を構築します。 以前の回で作成した Azure Functions V2 のプロジェクトを使ってやります。

Azure Function V2 (C#) で Run From Package の CICD と Azure DevOps (2/4)

今回は Azure Function Core Tools の CLI を使って Blob Storage へ Zip デプロイ、Run From Package する方法のメモです。前回作成したプロジェクトを使って進めていきます。

Bot Builder V4 開発入門 : C# : 会話ログ を Blob Storage に保存

Bot Builder V4 での会話ロギングを、Nuget パッケージ: Microsoft.Bot.Builder.Azure でサクッと実装する方法のメモです。

Bot Builder V4 (v4.0.7) 入門 ハンズオン (2018-09-27版)

Bot Builder V4 (v4.0.7) のハンズオンを、日本マイクロソフトが運営している Azure Antenna で9/27にやらせて頂きました。 azure.connpass.com ハンズオンコンテンツは、以下になります。 ご興味がありましたら遊んでみてください♪ github.com

Bot Builder V4 (4.0.1-preview) 開発入門 : C# : State の保持

2019-10追記: 2018年9月末に GA したバージョン V4.0.7 で、破壊的変更が多かったためこのバージョンと互換の無い部分があります。バージョンにご注意くださいね。 State は、外見だけなら V3 からあまり変更はないですが...さらっと整理しておきます♪ 手順…

Bot Builder V4 (4.0.1-preview) 開発入門 : C# : 準備編(Azure Bot Service / Microsoft Bot Framework)

2019-10追記: 2018年9月末に GA したバージョン V4.0.7 で、破壊的変更が多かったためこのバージョンと互換の無い部分があります。バージョンにご注意くださいね。 2018年7月時点で Bot Builder v4 は プレビュー中(Microsoft.Bot.Builder.Core v4.0.1-prev…

Bot Builder v4 (4.0.1-preview) SDK のメモ: UseBotFramework() とか(2018-07版)

Bot Builder SDK v4 のサンプルコードを見ると、V3 までの仕組みとして存在した ASP.NET の Controller から...という実装が無くなっています。 じゃー ASP.NET Core で Middlewareでなんかやってるんだろなって想像はつきますが、気になったのでちょっと調…

ASP.NET Core の TempData (ASP.NET Core 2.1 ~)

ASP.NET Core(2.1)で TempData の動作確認しようと思った際のにメモです。

Azure Functions の バインディング - Binder 編

Azure Functions では、関数の出力するデータをBlob や Queue に投げる処理を簡単にプログラムで書くことができます。 実装方法として、 宣言型のバインディング( declarative binding ) 命令型のバインディング( imperative binding ) があります。 今…

Azure Functions - Queue トリガーの キュー の 接続文字列

Azure Functions の Queue Trigger で、キューの ConnectionString のメモです。 たまーに新規に Queue Trigger 作るとき、後述する 余談 が気になって試して時間を浪費している気がしたので..メモっておきました。 環境 Visual Studion 2017 で C# ( C# scr…

AWS Lambda から CloudWatch Events を呼ぶ

AWS Lambda から CloudWatch を呼ぶ際の実装メモです。 (2017/10月時点 =.NET Core 1.0しかサポートしてない時点の話です) Overview 1 開発環境の準備 (その1) 2 .NET Core 1.0 対応の .NET Standard 1.6 のクラスライブラリの作成(その1) 3 簡易なク…

C# HttpClient の小ネタ(Content-Type、Basic / OAuth2 認証とか)

C# ビギナー向けネタとして、以下のHttpClient のTipsを整理です。Content-Type で application/json どこに設定すんねーんとかですね。 Content-Typeの設定 認証関連 Basic認証 OAuth2認証 便利拡張メソッド おわりに 2017年はかなり昔なので一応追記してお…

C# HttpClient の Mock でFake のレスポンスを返す in 単体テスト

単体テストでHttpClient のMock的なので Fakeなレスポンスを返す時の方法のメモ(..というか聞かれたので答えた内容書いたってお話です。) 今回の単体テストする対象クラスは以下の想定です。 とあるビジネスロジックがあるクラスの中に HttpClient がいて、…