かずきのBlog@hatena

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

C#

Azure DevOps の Pipeline のハローワールドからビルド・単体テスト・デプロイ・スワップまで

はじめに この横浜さんの記事の焼き直しというか自分用メモてきな感じになってます。 blog.beachside.dev blog.beachside.dev 本文 Azure Pipeline についてちょっと見てみましょう。最近は、YAML で書けるので雰囲気としては GitHub Actions と同じ感じでい…

Bot Framework で全てのダイアログが終わったタイミングで処理がしたい

ダイアログの BeginDialogAsync や EndDialogAsync をオーバーライドすると、ダイアログの最初と最後に処理をさしこめるっぽい。 でも、ダイアログの外側(Botクラス)からダイアログの状態を見て全てのダイアログが終わったタイミングで何かメッセージを送…

UWP で EntityFramework Core 3.1.x を使う方法

かな~~~~り昔にやったのと変わってたのでメモ。 NuGet パッケージ 最低限だけでよければこれだけ。 Microsoft.EntityFrameworkCore.Sqlite 下準備 適当に DbContext を継承したクラスを作ります。 using Microsoft.EntityFrameworkCore; using System; u…

【eLV】Cross-Platform 開発 シリーズで Uno Platform の登壇してきました

【eLV】Cross-Platform 開発 シリーズ で Uno Platform 触ってみたというタイトルで登壇してきました。 Uno Platform 触ってみた from 一希 大田 www.slideshare.net 話したのは10分くらいで15分以上デモをしていました。個人的に好きな UWP と同じ書き味で …

空の IObservable からの ReactiveProperty と ReactiveCommand の生成

先日、こんな質問を頂きました。 @okazuki かずきさん、相談に乗ってください。以下のコードを実行してみたところ、初回起動時においては、TestCommandが実行可能になってしまいます。46行目の★だと、正しく実行不可な状態で立ち上がってきます。何が理由か…

Uno Platform から JavaScript のライブラリを使いたい

日本語情報だとひらりんさんのブログにまとまってます! himanago.hatenablog.com 私がはまったのは、iziToast というライブラリでトースト出そうとして function showToast(text) { iziToast.show({ title: 'Info', message: text }); } という関数を JS に…

Uno Platform でプラットフォームによって実装されていない機能を実行時に判別する

さて、Uno Platform ですが UWP の API を気合で Android/iOS 向けに提供しているのですが、全部の API が提供されているわけではないです。 UI まわりは、かなり動きますがそれ以外は結構 NotImplementedException が出てしまいます。 例えば以下のようにボ…

Uno Platform で MainPage.xaml を開いたときにデザイナー(とインテリセンス)が出ないときの対象方法

デザイナーがエラーになるだけならいいんですが、たまにデザイナー自体無いケースがあります。 上の画像では UWP プロジェクトを選択している状態で MainPage.xaml を開いているのにデザイナーが出ません。 一度ファイルを閉じて UWP プロジェクトをビルドし…

ARFoundation と UIWidgets を使う

ARFoundation を使うと Unity で iOS/Android 両対応の AR アプリが簡単に作れるということで注目が高そうな機能です。 docs.unity3d.com AR の世界をタップしたとき何か当たったかどうかを判定するためには ARRaycastManager で Raycast すれば OK です。こ…

C# で Discord のボットを書いて Azure にデプロイしてみよう

C#

ゲーム好きの人たちにはおなじみの Slack みたいなチャットサービスのボットを C# でも作れます。Python が一応公式っぽい?? C# で Discord のボットを作る場合には Discord.NET というライブラリを使うのが一般的みたいです。 github.com 簡単に検索した…

Unity の UIWidgets で背景が透明なところは裏側の 3D の世界にイベントを飛ばしてほしい

デフォルトだと UIWidgets が全てかっさらってしまって、例えば Cube に EventTrigger をしかけて、UIWidgets に全面透明な画面とかを置いてもクリックが反応しないみたいです。 解決策として、以下の Issue にコードが載ってます。 github.com 一応念のため…

Unity でも DI 使ったりしたいし画面もいい感じに作りたい「Zenject & UIWidgets」 その 2

前回は Zenject 使って複数シーンを跨いで有効なシングルトンなオブジェクトを作ってみました。 アプリ全体で管理したい情報などは、こういうのを使って管理したりすると捗りそうです。 blog.okazuki.jp UIWidgets を入れてみよう ということで今は The Unit…

Unity でも DI 使ったりしたいし画面もいい感じに作りたい「Zenject & UIWidgets」 その 1

表題の通りです。Zenject を使ったり UIWidgets を使ってみたいと思います。 ここで使うライブラリと環境 環境 Windows 10 1909 Unity 2019.2.12f1 Zenject Unity 向けに特化された DI コンテナで、Unity 向けの各種便利機能が追加されています。他の .NET S…

WPF on .NET Core 3.1 で Windows 10 アプリ開発というタイトルで牛タン会議 2019 で登壇してきました

C#

タイトルの通りです。資料をスライドシェアにアップロードしました。 WPF on .NET Core 3.1 で Windows 10 アプリ開発 from 一希 大田 www.slideshare.net 登壇中にデモを 3 つライブで作りながらやったのですが、それが失敗したとき用にバックアッププラン…

Azure Functions v3 リリースしてた

先日… 12 月 9 日に v3 のプレビュー試せるやったね~ってやりました blog.okazuki.jp 試せるようになってるのに気づいたのが結構出来るようになってから立った後だったのですが、ふと見てみたら 12 月 9 日くらいに GA してました。 azure.microsoft.com 現…

Azure Functions v3 試せるようになってる

試せますね!!ということで早速。VS 2019で試すにはテンプレートとかを出すために環境変数設定して…とかがいりそうなので CLI でさくっとやってみました。 Core tool の更新 特別なことは何もなし。コマンドでさくっと。 npm install -g azure-functions-co…

Hello ML.NET world

C#

.NET Core 3.1 もリリースされたし ML.NET でも少し触ってみようと思います。今はカフェで Surface Go しか持ってないので先日作って寝かせておいた VIsual Studio Online につないでやってみようと思います。 .NET Core 3.1 このページに従ってコマンドをう…

SDK StyleのプロジェクトファイルをUWP, Xamarinで使いたい

ReactiveProperty のパッケージ分割するにあたってやろうとしてるんだけど標準だときびしい…?ということで MSBuild.Sdk.Extras というパッケージを使いました。 空のクラスライブラリを作って Sdk 属性に MSBuild.Sdk.Extras/2.0.54 を設定して TargetFrame…

Livet v3.2.1 をリリースしました

しばらく触ってませんでしたが、リリースしました。 Microsoft.Xaml.Behaviors.Wpf が .NET Core 3.0 対応したので、Livet も警告が出ない状態で .NET Core で使えます。 変更点 v3 系になってから各種機能を個別の NuGet パッケージに分離してきましたが以…

.NET Core 3.0 + Windows 10 で WPF 開発 というタイトルで .NET Conf 2019 で登壇してきました

登壇資料アップロードしました。 .NET Core 3.0 + Windows 10 で WPF 開発 from 一希 大田 www.slideshare.net 関連記事 基本的に、過去のブログで結構書いてた内容のまとめになります。 WPF 関連 MSIX での自動更新 XAML Islands その 1 XAML Islands その …

WPF on .NET Core 3.0 + XAML Islands で Windows UI Library を使おう

前回 blog.okazuki.jp Windows UI Library を使おう Windows UI Library(WinUI) は、次のメジャーアップデートから Windows の OS のバージョンアップに紐づいてアップデートされてきた UWP の UI 部分を OSS として切り離して開発するというポジションにな…

WPF on .NET Core 3.0 で XAML Islands してみよう

しばらく目を離してると手順がガラッと変わっててびっくりしてる今日この頃。 docs.microsoft.com WPF on .NET Core 3.0 で XAML Islands を試してみたいと思います。 プロジェクトの構成 前は WPF プロジェクトにライブラリ追加して…という感じだったのです…

新しい csproj 形式で NuGet パッケージに外部 dll を含める方法

Livet を新しい csproj 形式に移行した後に苦労したのが、Windows API Code Pack の dll を LivetExtensions のパッケージに含めたいというものでした。 わかってしまえば簡単で、dll をプロジェクトに含めて Pack="true" PackagePath="lib\net452" の属性で…

C++/WinRT で Windows Runtime Component を作って C# から呼ぶまで

ちょっと迷ったのでメモしておきます。 C+/WinRT自体についてはこちら docs.microsoft.com 上のドキュメントの、このページの部分に関連してます。 docs.microsoft.com docs.microsoft.com Step 1: Windows Runtime Component プロジェクトの作成と idl の定…

全てサーバーレス + 全て C# で SPA

DB に Cosmos DB を使って Azure Functions を使って少ないコードで読み書きする API を作って API Management で CORS の設定と Open API の定義を作って Blazor で AutoRest で生成したクライアントを使って API を呼ぶ SPA を作ってストレージアカウント…

C# で完全サーバーレスで SPA とバックエンドを作れるようになりますね

Azure API Management の従量課金プランが GA しました。 azure.microsoft.com つまり… Azure Storage Account の静的 Web サイトホスト機能で SPA をホスト Azure Functions の HttpTrigger で処理を作成 Azure API Management で Azure Functions を SPA …

Bot Framework SDK 4.4.3 時点でのボット作成の最小手順からダイアログまで

Bot Framework SDK (Bot Builder SDK?) v4 で v3 から大きく実装方法が変わったわけですが、結構 v4.1, 4.2, 4.3, 4.4... と進んでいくうちに、意外と v4 当初の作り方が非推奨になったりしてしょんぼりすることがあったので v4.4.3 時点での Bot Framework …

C++ 製の Windows ランタイム コンポーネントを .NET Framework のアプリから呼ぶ方法

ここではないブログに書きました!下のリンクからたどってください。 techcommunity.microsoft.com

Visual Studio で一番費用対効果の高いショートカット「Ctrl + .」

今日は、Visual Studio 2019 Launch Event in Tokyo で登壇してきました。 資料はこちらです。 Visual Studio 2019 の個人的なお勧め機能(発表時点) from 一希 大田 www.slideshare.net とりあえず個人的に便利だと思ってる機能とかを中心に色々話したので…

Azure Bot Services の Web App Bot で作成したボットのソースをダウンロードしてビルドしていると「**」というフォルダーが出来る

こんなやつです。 ちなみにビルドを重ねていくとパスの長さに関するエラーが出ます。 原因 何のためなのか調べてないのですが、EchoBot の csproj ファイルには 以下のような定義が含まれています。 <Import Project="PostDeployScripts\IncludeSources.targets" Condition="Exists('PostDeployScripts\IncludeSources.targets')" /> </import>