かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

C#

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 + .でコンストラクタ生成される機能があるらしい。やって…

LINQで書くとデバッグしづらいよね?そんなことないよ

C#

小ネタです。 LINQで処理をぱぱっと1ステートメントで書けると気持ちいいですよね。 でも、デバッグ難しくない?ということがあるのですが大丈夫です安心してください。 ブレークポイントのはり方のコツさえつかめば大丈夫です。例えば以下のようなコードが…

DIコンテナのUnityのLifetimeManagerを拡張して任意のタイミングでインスタンスの破棄をする

C#

UnityのLifetimeManagerはシングルトンで管理するContainerControlledLifetimeManagerか、デフォルトの毎回newする‘PerResolveLifetimeManager‘か、スレッド単位のPerThreadLifetimeManagerが用意されています。あとマニアックなところだと、ExternallyContr…

ASP.NET CoreがVisual Studio Codeで動いたよ on Windows 10

簡単にメモっておきます。まずはdotnetコマンドがないと話しになりません。私の場合はいつの間にか(たぶんVS2015のASP.NET Coreの入れたときだと思う)入ってたのでこの手順は踏んでませんが、以下のページからSDKあたりを入れておく必要があると思います。…

PCLでHttpUtlitityのUrlEncodeとUrlDecodeを使いたい

C#

UriクラスのEscapeDataStringとUnescapeDataStringメソッドを使いましょう。 Console.WriteLine(HttpUtility.UrlEncode(s)); Console.WriteLine(Uri.EscapeDataString(s)); var encodedString = HttpUtility.UrlEncode(s); Console.WriteLine(HttpUtility.Ur…

DIコンテナのUnityで使用されるコンストラクタを指定する

C#

InjectionConstructorAttributeを使用します。指定しない場合はコンストラクタ引数の一番多いものが使われます。 例えば以下のようなケース。 public class Hoge { public Hoge(Foo foo, Bar bar) { } public Hoge(Foo foo) { } } だと、Foo foo, Bar barの…

Entity Framework Core RC2がリリースされたみたいです

blogs.msdn.microsoft.com 待ちに待ったリリースに向けてあと一歩といったところですね! UWPで使うときに必要だったおまじないも消えてるっぽい(未確認だけどドキュメントに記載されてない)ので気軽にUWPで使えるようになったっぽいです。UWPでSQLiteを使…

LINQのメソッド構文、クエリ式の構文

C#

LINQってメソッド構文とクエリ式の構文の2つがあります。どっち使います?という話ですが個人的な見解として、メソッド構文がLINQの全機能にフルアクセスできるという点でメソッド構文を使用しています。 LINQのメソッド構文とクエリ式の構文の対応は以下の…

C#で好きな機能

C#

Blogネタが尽きたので小ネタを。 C#でプログラムする時によく使う便利機能を3つ挙げたいと思います。 async/await やはりC#といったらこれですよね。 非同期処理を簡単に書ける。 blog.okazuki.jp これがない言語でのプログラミングは、結構ストレスです。コ…

JSON.NET使ってみる

C#

JObjectの使い方を勉強してみた。 var j = new JObject(); j.Add("Item1", new JObject()); j.Add("Item2", new JObject()); j.Add("Item3", new JObject()); こういう感じで Console.WriteLine(JsonConvert.SerializeObject(j)); とすることで { "Item1": {…

XamarinのAndroidアプリでReactivePropertyを使う 2016年版

随分昔に書いてますね。 blog.okazuki.jp 最近は事情も変わったので改めて書いてみようと思います。 ReactivePropertyは? Reactive ExtensionsをベースにしたMVVMの支援ライブラリです。 blog.okazuki.jp Xamarinでも使えるの? Xamarin.AndroidとXamarin.i…