かずきのBlog@hatena

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

C#

何処でも動くサーバーレスプラットフォーム 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 処理の流れは親クラスで定義しておいて、それぞれの処理の流れのポイントポイントでは、継承先のクラスで好きにしてねっていうスタンスですね。 テンプレートメソッド…

CsvHelper でパースするときに NULL という文字列のセルを null として扱いたい

C#

こんな csv を扱う必要がありまして。 Tanaka,38 Kazuki,NULL Kazuakix,98 muu,NULL null が入ってるところには丁寧に文字列で NULL と記載されています。 こういう csv を見るたびにデータ部分に NULL っていう文字列データつっこんだらどうするんだろうと…

色々なプログラミング言語で JSON をパースするためのイカしたサービス quicktype

今日、マイクロソフト本社から来た David さんとお昼ご飯をしたときに教えてもらえた彼のプロダクトが凄かったので紹介したいと思います。 quicktype.io quicktype JSON をペーストするとシリアライズ・デシリアライズするためのコードを出力してくれるサー…

Json.NET で enum を文字列で保存したり数字で保存したりするものを混在させたい

C#

Json.NET は便利ですよね。ということで、こういう感じのクラスを… public enum Size { Small = 100, Large = 1000, } public enum TargetType { None, TypeA, TypeB, TypeC, } public class Target { public string Name { get; set; } public Size Size { …

DI コンテナの Unity の v5.0.0 がリリースされています!

C#

ゲームエンジンじゃないほうの Unity がバージョンアップしてました!! Added support for .NET 4.0, 4.5, 4.7, .NET Core 1.0+ and .NET Standard 1.0+ where available. ということなので .NET Standard 1.0+ というとても幅広い環境で使えるように仕上が…

Emotion API でビデオ分析機能を呼ぶ方法

C#

画像を投げ込むパターンはよくあったのですがビデオの情報がなかなか見つからなかったのでメモ。 var emotionClient = new EmotionServiceClient("key"); var result = await emotionClient.RecognizeInVideoAsync(<ここにstreamを渡す>); // 分析をポーリン…

VIsual Studio 2017 Previewで一押しの機能 だと思ったら VS2017で既に出来た話

C#

追記 VS2017 Previewで凄くいいなと思った機能を紹介したのですが id:neuecc さんに、それVS2017でできるよ?って言われた話です。 コンストラクタに指定したいプロパティやフィールドを選択してCtrl + .でコンストラクタ生成される機能があるらしい。やって…