かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

C#

Bot Framework のサンプルの QnA Maker の Active Learning をデプロイする方法

最近追加された Active Learning ですが簡単に言うと利用状況を見て、この QA にはこんな質問追加したらいいんじゃないの?っていうのをポータルに出してくれるみたいですね。 docs.microsoft.com 暗黙的フィードバックと明示的フィードバックがあるみたいで…

Visual Studio で名前変更のリファクタリングの一番簡単な方法

C#

個人的な主観が入った小ネタです。 Visual Studio には様々なリファクタリングのための機能がついています。 個人的に、その中で一番お世話になってるのが名前変更です。例えば… あっ、クラス名イケてない… このプロパティ名ちょっと失敗したな この変数名ち…

C# の複数ファイルの一括フォーマットツール

C#

今日、Visual Studio 2019 Preview 3 のリリースノートを読んでたら dotnet-format ツールが紛れてました。 github.com 一括で .editorconfig の適用してくれるとか。ありがたい。 試してみよう ということでインストールしてみます。.NET Core の最新版が入…

Bot Framework SDK v4 を使うときの 2019/02/12 時点で最適だと思う ConfigureServices メソッドの書き方

なんというか Bot Framework SDK v4 は v3 と違って細かくカスタマイズ可能な部品が提供されてて、それを組み合わせて使うという感じになってるので、より挙動のカスタマイズがしやすくなっていたりします。 例えば LUIS や QnA Maker との連携機能の提供の…

Livet 2.2.0 をリリースしました

しました。 www.nuget.org LivetExtensions も更新しました。 www.nuget.org プロジェクトテンプレートも最新版を初期状態で参照しているように Visual Studio の拡張機能も更新しています。 marketplace.visualstudio.com 変更内容 GitHub のリリースページ…

Azure App Service で Azure Key Vault がめちゃ簡単に使えるようになりました(プレビュー)

プレビュー機能ですが、Azure Functions とかで Key Vault が凄く簡単に使えるようになってます。 今までは、少しだけとはいえプログラムに手を入れないといけなかった部分を Azure ポータルのアプリケーション設定に指定するだけでよしなにしてくれるように…

何処でも動くサーバーレスプラットフォーム Azure Functions

この記事は Serverless2 Advent Calendar 2018 の 2 日目の記事です。 qiita.com 本文 最近 Docker でパッケージングしたらどこでも動くが実現してるようなものなので、実質 Docker でパッケージング出来たら run anywhere な感じということです! そして、A…

Azure Functions + Application Insights で POST されたデータのログを残す(C# & JavaScript)

liginc.co.jp なんとなく見かけたので Azure でもやってみましょう。 Azure なら一番簡単に REST API 作るんだったら Azure Functions かなぁ。ログは Application Insights かなぁ。 Azure Functions のドキュメント - チュートリアル | Microsoft Docs Azu…

Microsoft Tech Summit 2018 で Windows 10 対応のデスクトップアプリを作る技術 というタイトルで発表してきました

2018/11/05 - 2018/11/07 で開催された Microsoft Tech Summit 2018 で登壇してきました。 その時のセッション用に準備したコードを以下のリポジトリに公開しました。 github.com 伝えたかったこと AI とか無関係じゃないし、新機能とかもあるし、デスクトッ…

Azure Functions で Alexa, Google Home, LINE Clova 対応のスキル(アプリ?アシスタント?)を作る方法

スマートスピーカーのスキルは、基本的にスマートスピーカーが受け取った音声をテキスト化する部分、テキストから意図(インテント)とキーワード(スロットとかエンテティとかって言われる)を抜き出すところまで、各スマートスピーカーを提供してくれてい…

Prism の v7.1 がリリースされてました

Prism v7.1 が2週間ちょっと前にリリースされてました。 github.com かなり大きな更新に見えます。 個人的にインパクトが大きそうだと思ったのが Autofac と MEF が Prism の将来のサポート対象から外れてしまうことでしょうか。 Autofac はイミュータブルに…

Bot Builder SDK v4 を使って QA ボットを作ってみよう

とりあえず、スタート地点は Bot Builder SDK v4 のテンプレートの中の Echo ボットを使います。 テンプレートを Visual Studio に追加するにはこの拡張機能を入れます。 marketplace.visualstudio.com Echo のテンプレートを使って作成したら、とりあえず E…

REST API から Windows アプリの操作

Project Roma というのが発表されてもうかなりの時間がたちますが、UWP 同士では GA してて Android/iOS/Microsoft Graph API は Preview な感じです。Microsoft Graph API のカテゴリを見ると Cross-device experience という名前になってますね。 早く GA …

Livet v2.0.0 をリリースしました

先日リポジトリを触る権利と nuget のパッケージの更新の権利もらったので pre バージョンを公開してたのですが新たな issue も上がってこないので一旦正式版として公開しました。 marketplace.visualstudio.com プロジェクトテンプレートもありますし。 ア…

Bot Builder SDK v4 で認証をつけてみよう

単純なものなら動くようになってきたので、個人的に興味のあった認証部分をやってみようと思う。 前回はこちら。 blog.okazuki.jp ドキュメントはこちら。 docs.microsoft.com Azure AD にアプリを追加 v1 と v2 があるけど v2 の機能が必要ない限りは v1 で…

Bot Builder SDK v4 勉強ログ

ドキュメント読みながらのメモ Bot Builder SDK v4 の処理の流れ こんな理解 ユーザーからのメッセージ from 各種クライアント(slack, teams, etc...) -> Bot Connector サービス -> Bot Builder SDK v4 製のアプリ Bot Builder SDK v4 製のアプリがメッセー…

LivetCask v2.0.0-pre1とLivetExtensions v2.0.0-pre1 を公開しました

とりあえずプロジェクトの構造を自分好みにしたのとターゲットフレームワークを現在サポートされている最低バージョンの .NET Framework の 4.5.2 まで上げました。 NuGet 以外は今のところメンテナンスするつもりはありませんが、気が向いたら vsix 作って…

LINE Clova のスキルと Windows 10 の連携

LINE Clova にアカウントリンキングの機能があるので、割と簡単に特定サービスと連携したスキルが作れます。 今回は、これを利用して Microsoft Graph API にある Project Rome を叩いて Windows 10 のアプリを起動してみました。 動作してる様子はこちら。 …

スマートスピーカーで時間のかかる処理を呼び出す方法と実装方法

スマートスピーカーって何処のやつも大体数秒でレスポンス返さないとタイムアウトになってしまいます。 なので、ちょっと時間のかかる外部 API を呼び出したらタイムアウトしてしまいスマートスピーカーがスキルを起動できないなどの定型文を話して終了して…

Azure Functions v2 で設定情報を使う方法

local.settings.json やアプリケーション設定に設定された情報を Azure Functions v2 で使う方法をメモしておきます。 Microsoft.Extensions.Configuration を使います。 ASP.NET Core ではおなじみのやつですね。local.settings.json を使うために Executio…

タイプセーフな Clova Extension の開発環境を求めて on Azure Functions その2

1 つ前の記事ではタイプセーフにしたいと思って頑張った結果 TypeScript にトライしてみました。 blog.okazuki.jp 今回は C# でいってみようと思います。 開発環境 とりあえず Windows, macOS, Linux あたりで行けるはずですが私の環境は以下のような感じで…

System.dll という名前のファイルを Visual Studio のプロジェクトに含めると System の参照が自動で置き換わる?

C#

知らなかったんですが、プロジェクトの中に System.dll というファイルがあるとプロジェクトの参照のところの System が置き換わるんですね…。 ふーむ。 追記 プロジェクトのルートフォルダーに置いたら検索の優先順位的に仕方ないかなと思うのですがルート…

LINE Clova Extension を作るときの JSON をシリアライズとデシリアライズするクラスの入れ物をライブラリにしました

1 つ前の記事で作った JSON のシリアライズとデシリアライズ用のクラスを毎回作るのがだるいので NuGet に放流しました。 .NET Standard のクラスライブラリで作ると Visual Studio から nupkg (NuGet にアップロードする形式) にしてくれるので楽ちん。 htt…

App.config / Web.config に秘密の情報を入れたいときはどうする? その 2

C#

blog.okazuki.jp さて、時代はクラウドですね。 ということでクラウド使う場合はどうなの?っていうケースです。 ASP.NET MVC では Web.config に設定を書きます。 開発中はローカルにあるエミュレーターとかを使うという感じにしておけば Web.config にはと…

App.config / Web.config に秘密の情報を入れたいときはどうする? その 1

C#

入れないのがいいんですけどね。ローカルで実行するときに、開発用のキー情報を入れることもあるでしょう。 でもリポジトリには入れたくないという感じ。 App.config を分割する App.config を作って、こっちには当たり障りない情報を書きます。そして、appS…

LINQ を使う時に一般的に気を付けること via C#でLinqを使うよりPythonの方が2倍速かったのでベンチマークをしてみた

C#

追記 2018/04/25 GroupBy が遅延評価じゃないという旨の記載があってまちがえていたので修正しました。 本文 以下の記事を見ました。 qiita.com そして、それを受けての記事があります。 qiita.com 上記記事に ToList を複数回呼び出してることに関する言及…

C# で何か出来るのか?まとめてみた

C# は好きな言語です。C# 1.0 が 2002 年 4 月に出てからもうすぐ16 年!?になろうとしています。 今でも結構イケてる部類にランキングしてると個人的に思ってる C# ですが何が出来るのか?というのをまとめてみたいと思います。C# をこれから始めようと思…

2018 年はじめの INotifyPropertyChanged の実装方法

C#

前にこんな記事を書きました。 blog.okazuki.jp まぁ別にこの時と何かしら INotifyPropertyChanged を実装するために使える機能が増えたりしてないので状況が変わったわけではないのですが…。現実問題としてどういうものを選択するのかということをつらつら…

foreach でループの index を知る方法

C#

前に匿名型を使ってやりましたが Tuple 使った方が今風で値型なのでヒープ的にも優しいということでこうなりますね。 using System; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var items = new[] { "i…

最近のテンプレートメソッドパターンの実装方法

C#

テンプレートメソッドパターン好きでした。割と。 Template Method パターン - Wikipedia 処理の流れは親クラスで定義しておいて、それぞれの処理の流れのポイントポイントでは、継承先のクラスで好きにしてねっていうスタンスですね。 テンプレートメソッド…