「.NET Core」に関する日記

次>

バイオハザード レクイエムとAmazonストアフロントとQiita

バイオハザード レクイエム



動画投稿しました。
内容は同一です。
ゲーム音声と実況音声の音量バランスは調整したけど全体の音量調整してなかったなァ。
前回は出力設定で無茶して紙芝居になったし、動画作成手順をまとめておかないと。

Amazonストアフロント

アンパンマンDBから爆速で商品情報入れる方法思いついたので試してみた…けど、半分しか保存されてなかった!
どうやらこまめに確定させていく必要があるみたいだ。

Qiita

昔書いた記事の続編、今更書きました。
今アンパンマンDBで使っているコードほぼそのままです。
CSS、今も発展を続けているはずだけど、このCSSももっといい書き方が生まれてるのかなぁ。

あと、もう一つ別の記事も執筆中。
.NETです。

UseLayoutRounding(Today I Learned)

FrameworkElement.UseLayoutRounding プロパティ (System.Windows) | Microsoft Learn
WPFでUI要素をピクセル境界に合わせるSnapsToDevicePixelsプロパティがうまく効いてない場所があるなーと思って調べていたら、似た役割のUseLayoutRoundingを見つけました。
SnapsToDevicePixelsは指定した要素自身をピクセル境界に合わせ、UseLayoutRoundingは子要素のレイアウトをピクセル境界に合わせるということかな。
ただ、子要素の相対位置をピクセル単位に合わせるという動作らしく、指定した要素自身がピクセル境界からずれていると意味がないようです。
だから、Windowとかの一番外側の要素に指定して、あとは余計な指定をせず継承するに任せておくという運用がいいのかな。
WPF版ふにゃでもぼやける部分があったんで、これで対策できないか試してみたいところです。

Tably Music PlayerとFile.ReadAllLines

Tably Music Player

とりあえず、課題立てときました。

File.ReadAllLines(Today I Learned)

mifumi323/ReadAllLinesTest: .NETのFile.ReadAllLinesの最終行の扱いを確認するプログラム
普段何気なく使っているFile.ReadAllLines、最終行の改行コードの扱いが気になって、ちょっと確認してみました。
結論、最後の改行コードはあってもなくても同じ結果になる、つまり、最後に空行が発生したりはしないようです。

Avalonia UIとカービィのエアライダー

Avalonia UI

Avalonia UIでタイトルバーなしウィンドウ
無事記事公開しました。

カービィのエアライダー


最後のステージ手前でずっとでなおしリセマラ粘ってたらついにオール↑出た!!
これでロードトリップのクリアチェッカー完了!!
そのあとはまあ、すっきりと3周目もラスボスやっつけてクリア。


そしてエアライドもクリアチェッカーいくつか開けました。
ケイビオンの横穴探しも兼ねてフリーランをいろんなマシンで頑張ってみたり。
後はコックカワサキで順位を捨ててカレー投げるのに全力を注いだり…もしたけど、違うチェックばかり空きまくったなあ。

他の写真は以下から。
カービィのエアライダー(2025/12/13)の写真

アンパンマンDBとAvalonia UIとドラゴンクエスト10

アンパンマンDB(記事更新)

来週の放送情報。
きしめんさん再登場早いな。

Avalonia UI

本当は今日記事書いてしまう予定だったんですけど、できないと思っていた最大化最小化禁止が、つい最近の更新で簡単にできるようになったことがわかりました。
ということで、記事書き直し中です。
さすがに明日には書き終わるかな。

ドラゴンクエスト10(全員)

第24回アストルティア★ハッピーくじ『年末大勝負くじ☆2025』 (2025/12/5)|目覚めし冒険者の広場
くじ買った!

ドラゴンクエスト10とAvalonia UIと日記

ドラゴンクエスト10(ァォィョッュ)

  • クエスト「ガンバライオンの戦士たち/限界突破! レベル136」をクリアした!

はい無事クリア!
またしても30分かかってしまいました。

Avalonia UI

mifumi323/AvaloniaHideTitleBarSample
こんなの作ってました。
Qiitaとかにまとめなおしてもいいかもとか言ってたやつ、書くために。
まあ、このリポジトリがシンプルに結論なんですが、Qiitaのほうはちょっと文章書きます。

日記

Avaloniaタグ追加しました。
これまでの日記をまとめるのもそうだし、今後も書いていきたいので。

Visual Studio 2026とAvalonia Accelerateと浮き沈みランチャー2

今日はゲーム記のカービィディスカバリーのページにスターリーワールドの情報でも追記しようかなーなんて思ってたけど…

Visual Studio 2026


Visual Studio 2026 リリース ノート | Microsoft Learn
最新版来てました!
リリースノートにいきなり「という意味でしたか?」とか出てきてたり、AIが進歩しても翻訳は相変わらずのMSDNクォリティですが、ソフト本体は今のところいい感じです。
新機能はあまり使っていませんが、.NET 10とC# 14が普通に使えるようになったというのは大きいです。

Avalonia Accelerate

Avalonia Accelerate
順序的にはこっち先にやったんですが、Avalonia UIの追加ツールです。
無料版をひとまず入れてみました。
メールアドレス関連でちょっと躓くところがありましたが、それ以外はおおむね順調でした。


VS2026でも問題なく動きました!

浮き沈みランチャー2

ソリューション構成調整 by mifumi323 · Pull Request #11 · mifumi323/FLaunch2
さっき画面写真出したけど、.NET10&C#14に移行して、ソリューションもVS2026向けに切り替えました。
あと、書き忘れてたライセンス表記も。

非公開ツールとドラゴンクエスト10

非公開ツール

アンパンマンの録画をアンパンマンDBと連携させる系のツールのリリースビルド、復活しました。
最適化を有効にしていると、使われていないクラスとコンパイラによって判断されたものが削除されるのですが、System.Text.Json.JsonSerializerが復元するクラスは静的解析ではすべてを把握しきれないので、最適化があるリリースビルドではJsonSerializerでの復元は禁止されてしまいます。
これを解決するのが、SourceGenerationContext。
まあ…詳しくは以下のリンクで。

System.Text.Json でソース生成を使用する方法 - .NET | Microsoft Learn

ドラゴンクエスト10(ァォィョッュ)

隠者クエスト指定場所

  • クエスト「隠者は精霊とともに/精霊の役割」をクリアした!

隠者のクエスト進めました!
今回は純粋に見回りだけだったのでボスバトルなし。
ただ、ボスと思われる存在がちょっと登場。
クリア報酬で隠者装備一式手に入れたのですが、錬金のためいったんミフミンに預けているのでまだ着ていません。

他の写真は以下から。
写真置き場「2025/10/04」

WinUI3(Today I Learned)

Slider.ThumbToolTipValueConverter プロパティ (Windows.UI.Xaml.Controls) - Windows UWP applications | Microsoft Learn
MediaPlayerElementが標準で持っている再生UIに不満があったので、自前で実装してました。
再生位置を示すシークバーにはSliderを使ったのですが、Sliderに指定できるのは単一のdouble値のみ。
当然、再生位置はTimeSpanで表されるので、doubleに変換して入れてやることになります。
そうすると当然、Sliderをつまんだときに表示されるツールチップも、デフォルトのままでは小数値が表示されます。
ということで、そのツールチップの表示変換を行うのが、ThumbToolTipValueConverterです。
IValueConverterを実装したクラスのインスタンスを渡してやると、変換されます。
表示に使うだけなので、必要なのはConvertだけで、ConvertBackは未実装のままでもなんとかなります。
これも後でまとめてQiitaあたりに書いとくか。

アンパンマンDBとUno Platform

アンパンマンDB(記事更新)

来週の放送情報。

Uno Platform


とりあえずプロジェクト作ってみたけど、UWPをベースにしてマルチプラットフォーム化した感じなのね。
私にとってUWPは今一つだったし、それがベースになってる時点で熱くないな、という印象。

最初のウィザードが充実して、最初の工程を手取り足取りやってくれるけど、その分、ウィザードが終わった瞬間複雑なプロジェクトが目の前に現れます。
Avalonia UIは「UIの他はMVVMだけ用意したから後は好きにやれ」みたいな初期状態だったので、この点は対照的ですね。
UWPをしっかり学んだあとのマルチプラットフォームを目指すステップだったらこの複雑さがむしろ嬉しくなるのかも。

あと、MVUXっていう聞いたことないアーキテクチャが。

がっつり使い倒す前提ならいいかもしれないけど、今の私には重いかな。

Uno Platformとドラゴンクエスト10

Uno Platform

Uno Platform: Build Cross-Platform .NET Apps Faster
.NETでデスクトップアプリ開発と言えばこれもあったなと。
なんか微妙なまま立ち消えになってなかったっけ?って思ってたけどまだまだ元気でした。
今度また試してみようと思います。

ドラゴンクエスト10(しろいコキン)

バッフル町長

  • クエスト「よみがえる王国/希望となった男」をクリアした!

自分以外が救世主になっちゃうと困っちゃう町長さんの依頼。

(クエスト内容ネタバレ)

トマホーガー
町長さんの人気取りのためテグラムさんが倒すはずだった魔物を横取り。
まあ、バージョン2範囲のボスなんで今更苦戦するはずもなく。

トマホーガー ショック
こないだ火竜行った時のままの絶対ひるませる編成だったので、見事にひるみまくってくれました。
で、町長さん、この戦いの直後にテグラムさん本人に助けられ、一瞬で手のひら返してテグラムさんの太鼓持ちになり、ちょっと笑いました。

ちなみに、昨日テグラムさんのこと「たぶん塔に潜入してた時に何かされてた兵士かな」とかうろ覚えで言ってましたが、改めてムービー確認したら、全然関係ありませんでした。
ダイム老の人となりを再確認できたのは良かった。純然たるいい人だった!

Avalonia UIとドラゴンクエスト10

Avalonia UI(Today I Learned)

どうやらウィンドウも普通に表示できる模様。
ビューモデルから親ウィンドウを直接たどる方法が見つからなかったので、メインウィンドウのインスタンスを静的プロパティに入れる必要があったけど、もっといい方法あるのかな。

ドラゴンクエスト10(しろいコキン)

カノック

  • クエスト「よみがえる王国/生きていた男」をクリアした!

突然、かつ今更、しかも季節外れのクリスマス衣装ですが、偽グランゼドーラのクエスト進めました。

(クエスト内容ネタバレ)

ひとくいドール
ボスのひとくいドール。
ニードルマンみたいなやつですね。
襲われてた人、めちゃくちゃモブ兵士顔で「誰?」って感じだったけど、たぶん塔に潜入してた時に何かされてた兵士かな。
ダイム老の孫という設定のようで、絶望に沈んでいた偽グランゼドーラにちょっとだけ希望が戻りました。

他の写真は以下から。
写真置き場「2025/02/25」

のんびりナマライザとAvalonia UIとドラゴンクエスト10

のんびりナマライザ

.NET Frameworkのバージョンを上げるだけの単純な修正。
CI関連の機能が古すぎて動かなくなっていたので、そっちも更新しました。
さて、特に新機能も本体のバグ修正もないわけだけど、いつリリースしようか…。

Avalonia UI(Today I Learned)

Avalonia UI
.NET向けのクロスプラットフォームUIフレームワーク。
Microsoftではなく、サードパーティ製です。
WPFみたいな感覚で使える模様。

ドラゴンクエスト10(しろいコキン)

人食い火竜 煉獄火炎

  • 食人火竜スレイヤーの称号を得た!

しろいコキンも人食い火竜やっつけました!
ミフミンのときの経験から、ハンマー盗賊が相性よさそうだったので、それ中心の編成で。

人食い火竜 獄炎テンペスト
ミフミンがやられたのはこの技、獄炎テンペスト。
さすがにこれが来るとわかっていれば、近寄ればいいだけなので難なくやり過ごせたのでした。
…と思いきや、効果範囲が正反対のスーパーノヴァをその後使われて、同じ感覚で近寄ったら、密着状態で見事に燃やされてしまったのでした。
まあ、最終的に炎耐性100%の優秀なサポたちがどうにかしてくれたわけですが。

アンパンマンDBとWinUI3

アンパンマンDB(記事更新)

来週の放送情報。
歴史の長いキャラで固めてきた感じですな。
食パンとジャムって一番合うのにキャラの組み合わせとしてはこれが初なんだ。

WinUI3(Today I Learned)

先日悩んでた動画スクショの件、解決しました。
CopyFrameToVideoSurface メソッドを使えばよかったのでした。
実はあの時もそのことまでは突き止めていたものの、コピー先となるIDirect3DSurfaceをどう用意すればいいのかがわからなくて詰まっていたのでした。

MediaPlayer を使ったオーディオとビデオの再生 - UWP applications | Microsoft Learn #フレーム サーバー モードでの MediaPlayer の使用

答えは結局サンプルコードの中にあったのです。
使うのはCanvasDeviceCanvasBitmapです。
WinUI3本体には入っていないので、NuGetでMicrosoft.Graphics.Win2Dを入れます。
VS2022に任せているとWinUI2用のWin2D.uwpを入れさせようとしてくるので注意です。

アンパンマンDBとWinUI 3

アンパンマンDB(記事更新)

来週の放送情報。
再放送ですな。

WinUI 3

MediaPlayerElementで今表示されている映像を静止画として使いたいけどやり方がわからぬ…。
MediaPlayer.IsVideoFrameServerEnabled プロパティあたりを使えば何かできそうな気はするけど、これを使うと画面に表示されないし…。

WinUI 3(Today I Learned)

スレッド機能の移行 - Windows apps | Microsoft Learn
WinFormsでも厄介だった非同期処理でのUI処理。
WinFormsで使ってた方法そのままは無理なので、ちょっと違う方法になります。
とはいえ、使うメソッドが変わっただけで、メソッドを一枚噛ませてやるという構造自体は変わらない模様。

ListViewBase.ScrollIntoView メソッド (Windows.UI.Xaml.Controls) - Windows UWP applications | Microsoft Learn
そんでもってこっち。
ListViewはプログラムで選択を変えても自動でそこまでスクロールしないので、同じくプログラムでスクロールさせてやる必要がありました。
とはいえ、どこまでスクロールするかを指定する必要はなく、メソッド一つでよしなにしてくれます。

アンパンマンDBとWinUI 3

アンパンマンDB(記事更新)

コラムから転記。
転記元の時点で文章がおかしな部分があったので、コラムともども修正しています。

WinUI 3(Today I Learned)

データ バインディングの詳細 - UWP applications | Microsoft Learn
これまで「Binding」によるバインディングしか使ってなかったけど、「x:Bind」によるバインディングも調べてみました。
「Binding」が動的に解決するのに対して、「x:Bind」は静的に解決するということ。
つまりまあ、コーディング中にもう既にどこからデータが来るのかわかっているということですな。
で、コーディング中に既に分かっているので、インテリセンスがどんどん自動的に候補とかを出してくれるし、実行中にデータを探しに行ったりしないので、動作も高速と。
「Binding」でしんどい部分があったから「x:Bind」を調べ始めたんですが、思ったよりだいぶいいですね。
もちろん、やりたいことを全部簡単に完全にできるというわけではないですが。

アンパンマンDBと.NET 9

アンパンマンDB(記事更新)

来週の放送情報。

.NET 9

Visual Studio本体のバージョンを上げたら.NET9が使えるようになっていました。
WinUI3試してるプロジェクトでもさっそく適用。
今のところ、ビルドが問題なくできたのを確認できただけで、新機能とかはまだ見ていません。
C#13も使えるはずなんで、コードがもっといい感じになるはずなんですよね。
いつもの流れなら、普通にプログラムを組んでいたら、コード解析が新機能を提案してくるという形で触れることになると思いますが。

アンパンマンDBとWinUI3

アンパンマンDB(記事更新)

コラムから転記。

WinUI3(Today I Learned)

ピッカーでファイルやフォルダーを開く - UWP applications | Microsoft Learn
Windows App SDK, WinUI3, Desktopでファイル選択ダイアログを表示する #C# - Qiita
ファイルダイアログを開く方法。
やっぱりWinUI3でもファイルの読み書きはしたいですからね。
エラーなく動かすためには気持ち悪いおまじない書かないといけないというのが残念なところ。
将来的に開発が進んで不要になったらいいけど、マイクロソフトのこれまでから考えると、普及しないまま開発が止まって立ち消えるというのもありうる…。

WinUI 3

Config.Netで設定読み書きうまくいきました。
デフォルト値とか項目名の別名作れたりするし、初期値→設定ファイルで上書き→コマンドライン引数でさらに上書きみたいなこともできるし、ファイルから読み込んだ設定は自動で同じファイルに保存されるし、標準のWindows.Storage.ApplicationDataよりむしろ便利。
あとは、CommandBarでツールバー的なものを作ってみたり、ページ遷移で値を受け渡すのとかやってみたり。
着実に作りたいものに近付いてきた感があります。
まあ、作ってるのは一般公開しない自分専用ツールですけどね。

次>