BEACHSIDE BLOG

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

.NET Core

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 投げた方が早いですが、時間を…

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

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

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 のインストール …

csproj のバージョン 管理 について

.NET Core のプロジェクトでなんか作っててもバージョン情報は、csproj でちょいちょいーっとしか管理してなかったので多少なりとも知っておきたいなーと感じました。 とゆーことで最近(NuGet 4.0 以降、MSBuild 15.1 以降)の.NET Core でのバージョン管理…

Azure Functions V2 の Startup.cs で appsettings.json を読み込む(2019年5月バージョン)

前回書いた Azure Functions の DI の方法だと、ASP.NET Core ではよく使う appsettings.json の読み込みがデフォルトで設定されていません。 local.setting.json ローカルデバッグ用の環境変数の設定はできるけど、 で困るのは Array とか object に対応し…

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

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

Azure Bot Service で作成した Echo Bot (SDK V4.3.2)のソースをローカルでデバッグしたら 500 エラー

最近(2019/4ごろ) Azure Bot Service でチャットボットを作成してソースをダウンロードし、デバッグしても動かないということがあったのでちょっと調べてみました。 このエラーの対処もまた色々な変更ですぐに対処方法が変わるでしょうけど、メモしておきま…

Bot Channel のコールドスタート対策( Azure Bot Service )

Azure Bot Service では、WebChat とか外からの接続は Bot Channel 経由でなります。 WebChatとかだとここが Cold Start するので、たまーにアクセスすると初回のみ遅くて残念(一昔前よりはだいぶ早くなったけど!)。 ならば定期的にヘルスチェックして Co…

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

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

Azure Cosmos DB Emulator を使ってみた(2019年2月編)

ローカル環境だけで開発が進めれるよう Azure Cosmos DB Emulator があります。 接続文字列は固定なので、ASP.NET Core で使うなら appsettings.Development.json とかに直接接続文字列書いたりも許容範囲化と思いますし、便利に使えそうだと思っています。 …

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

Azure Functions V2 の Release pipeline の作成その2です。前回はローカルにデプロイしましたが、今回は Blob にデプロイするバージョンです。前回より実践的な方法となります。 ただ、2018年12月時点だと Azure DevOps で Azure Functions V2 の Run From …

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 する方法のメモです。前回作成したプロジェクトを使って進めていきます。

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

Azure Functions v2 の Zip デプロイと Run From Package についての整理です。 今回は、サンプルプロジェクトの作成、Visual Studio から Zip Deploy の実行方法と、Run From Package の基本的な動作についてのメモです。 Azure Function V2 (C#) で Run Fr…

.bot ファイル(bot file / ボットファイル)の暗号化・複合化(MSBot コマンド編)

Bot Framework V4 を触る際に最初に「ふぁ?」となりがちな .bot ファイルの複合化と暗号化の方法のお話です。 Cogbot アドベントカレンダー 12/3のエントリーです♪

Bot Framework V4 開発 Tips についてお話しさせて頂きました

Cogbot 勉強会 #18 にて以下の資料で登壇させて頂きました。 Bot Framework v4 開発 Tips 2018-11 from BEACHSIDE (Atsushi Yokohama) www.slideshare.net

xUnit 単体テスト 入門 : データドリブンテスト

前回はAssert の基礎について触れましたが、今回はデータドリブンなテストがテーマです。 1. Assert の基本 2. Data Driven Test (データドリブンテスト) : 今回! InlineData MemberData ClassData テストデータのコード化 3. テスト実行時の Tips ( Attrib…

xUnit 単体テスト 入門 : Assert の基礎

いつも適当に使っている xUnit について整理したいなーと数年思い続け...ついに書く日が来ました。。。 気分次第ですが、複数回に分けて書く予定です。 Overview 1. Assert の基本(今回) NULL の評価 文字列の評価 数値の評価 bool の比較 object の評価 C…

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

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

Botファイル と botFileSecret : デバッグ時の例外 の 対応方法 ( Bot Builder V4 )

9月にフロリダで行われた Microsoft Ignite 2018 で、Bot Builder V4 (正確には v4.0.7 以降が対象)も大きな変更になり、私の過去のBotV4(4.0.1)ブログは無意味な情報になった今日この頃です。 Bot ファイル(拡張子が .bot のファイル)の Secret 関連も…