Qiita
書くネタ思いついたので、書いています。
今回はアドベントカレンダーに参加する予定。
プログラミング関係の話題。プログラミングコーナーを更新したとか、プログラミングの内容に踏み込んだ話とか。
書くネタ思いついたので、書いています。
今回はアドベントカレンダーに参加する予定。
Avalonia UIでタイトルバーなしウィンドウ
無事記事公開しました。

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

そしてエアライドもクリアチェッカーいくつか開けました。
ケイビオンの横穴探しも兼ねてフリーランをいろんなマシンで頑張ってみたり。
後はコックカワサキで順位を捨ててカレー投げるのに全力を注いだり…もしたけど、違うチェックばかり空きまくったなあ。
他の写真は以下から。
カービィのエアライダー(2025/12/13)の写真
来週の放送情報。
きしめんさん再登場早いな。
本当は今日記事書いてしまう予定だったんですけど、できないと思っていた最大化最小化禁止が、つい最近の更新で簡単にできるようになったことがわかりました。
ということで、記事書き直し中です。
さすがに明日には書き終わるかな。
第24回アストルティア★ハッピーくじ『年末大勝負くじ☆2025』 (2025/12/5)|目覚めし冒険者の広場
くじ買った!
はい無事クリア!
またしても30分かかってしまいました。
mifumi323/AvaloniaHideTitleBarSample
こんなの作ってました。
Qiitaとかにまとめなおしてもいいかもとか言ってたやつ、書くために。
まあ、このリポジトリがシンプルに結論なんですが、Qiitaのほうはちょっと文章書きます。
Avaloniaタグ追加しました。
これまでの日記をまとめるのもそうだし、今後も書いていきたいので。
今日はゲーム記のカービィディスカバリーのページにスターリーワールドの情報でも追記しようかなーなんて思ってたけど…
来た! pic.twitter.com/JtDEQ5XmRB
— 📛松田美文 (@matsuda323) November 12, 2025
Avalonia Accelerate
順序的にはこっち先にやったんですが、Avalonia UIの追加ツールです。
無料版をひとまず入れてみました。
メールアドレス関連でちょっと躓くところがありましたが、それ以外はおおむね順調でした。
ソリューション構成調整 by mifumi323 · Pull Request #11 · mifumi323/FLaunch2
さっき画面写真出したけど、.NET10&C#14に移行して、ソリューションもVS2026向けに切り替えました。
あと、書き忘れてたライセンス表記も。
テンの日!
…は、ともかくとして。
ちょっとずつでもクエスト進めていくよ。
今回はお使いの最後にヨイちゃんからちょっとしたご挨拶があったぐらい。
PHP: fnmatch - Manual
ファイル名のパターンマッチに正規表現使うのだるいなーシェルとかで使うような簡単なやつ使えないかなーとか思ってたら、ありました。
Pythonにもあるぞ!
Rubyにもあるぞ!
C言語にもあるぞ!…って、これがたぶん元祖だろうな。
どこでも使われるような当たり前の機能にはちゃんと標準ライブラリがついているんですね。
確か全く別の名前だけど.NETにもほぼ同じやつがあったはず。
アンパンマンの録画をアンパンマンDBと連携させる系のツールのリリースビルド、復活しました。
最適化を有効にしていると、使われていないクラスとコンパイラによって判断されたものが削除されるのですが、System.Text.Json.JsonSerializerが復元するクラスは静的解析ではすべてを把握しきれないので、最適化があるリリースビルドではJsonSerializerでの復元は禁止されてしまいます。
これを解決するのが、SourceGenerationContext。
まあ…詳しくは以下のリンクで。
System.Text.Json でソース生成を使用する方法 - .NET | Microsoft Learn
隠者のクエスト進めました!
今回は純粋に見回りだけだったのでボスバトルなし。
ただ、ボスと思われる存在がちょっと登場。
クリア報酬で隠者装備一式手に入れたのですが、錬金のためいったんミフミンに預けているのでまだ着ていません。
他の写真は以下から。
写真置き場「2025/10/04」
いつまでも残ってたPukiWikiのコンテンツ、必要なページだけ普通のHTMLに移して、PukiWikiで作ったページは閉じました。
うちは自作のシステムが中心となって動いているサイトなので、よそのシステムが入り込んでいると、扱いにくかったんですよね。
しかも、いまやメンテナンスしていない、ほんのわずかのコンテンツにしか価値がないものに、フルスペックのCMSが入っているので、大げさすぎるって言うのもありました。
この移設により、めでたくただのHTML1枚に収まりました。
まあ、内部的には自作のシステムがHTMLを生成してたりするんですが、それでも実質1ファイルなんで、シンプルにはなりました。
同じような境遇のページに、Bomber丸World開発室があるんですが、こっちは残したいコンテンツがまあまあいっぱい眠ってそうなんで、ゆっくりじっくり作業していきます。

お宝集めて大航海!「幻の海トラシュカ2025」 (2025/7/23)|目覚めし冒険者の広場
お宝集めだ!
今回はなんだか例年以上にラグがひどいみたいで、何が起きてるかわからないうちに何度も海に落ちました。
普段ならラグ読みで早めに回避したりしていたんですが、そもそもいつの間にか画面から自分がいなくなってますからね。
本当は全員分一気に行く予定でしたが、今日のところは一回だけで終わらせました。
報酬集めるならもうちょっと空いてから周回かな。
他の写真は以下から。…って程にも多くないけどさ。
写真置き場「2025/07/30」

まだ本番環境には反映してないですが、紹介botの本日の情報、短縮表記を試しています。
TwitterAPIの制限が本当に厳しくて、なるべく情報量を落とさない範囲で投稿数を減らしたいんですよね。
で、実際に同じ日付の投稿と見比べてもらえればわかると思うんですが、投稿数を2から1に圧縮できました。
効果あるんだからさっそく使おう…と言いたいところだったのですが…

画像もまとまっちゃうので、その他大勢の合成画像が異様に縦長になっちゃう!
こっちもうまく対応できてから、本番適用と行きたいところです。
文字列(という名のバイト配列)から画像を読み込む関数。
紹介botに出す画像はPNGとJPEGなんですが、将来的にはWebPも使う可能性があるので、imagecreatefrompngとかimagecreatefromjpegとかを一つ一つ使っていたらきりがないなって思ったんですよね。
これなら、ファイルをメモリに読み込むのは自前でやる必要はありますが、ファイルフォーマットは自動で判別していい感じに読み込んでくれるはずです。
とりあえずは、本当に使えるかどうかの確認からかな。
このプルリク、どうしよう。
セキュリティ上の修正なんだから、本当ならとっとと採用したいところなんですが、これ、ビルドは通るけど実際に実行するとエラーで落ちるんですよね。
動かなかったらもうセキュリティもへったくれもないわけで。
さすがに不採用というわけにもいかないから、自分でエラーをどうにかしてマージかな。
しろいコキンも魔法使いと魔法戦士のレベル上げて竜術士になりました!
さすがに3回目なんでムービーはスキップしたんですが、見てなくてもクイズに正解さえすればいいんですね。
キャラ数検索、まだテストコード上でしか確認できていませんが、修正しました。
画面上で何パターンか確認してからアップしようと思います。
上記の問題の原因、SQLの条件句における型の不一致が原因でした。
((SELECT COUNT(*) FROM list_anime_chara1 WHERE list_anime_chara1.page_id = page_anime.page_id) + (SELECT COUNT(*) FROM list_anime_chara2 WHERE list_anime_chara2.page_id = page_anime.page_id) + (SELECT COUNT(*) FROM list_anime_chara3 WHERE list_anime_chara3.page_id = page_anime.page_id))=:p
こんなSQLを条件に入れていたのですが、この右辺の:pにPHPの整数を入れても、SQLiteの内部的な整数型とは一致せず、常時不一致扱いとなっていたのです。
左辺が単純な項だったら型が自動変換されて大丈夫だったんですが、サブクエリとかの複雑な式だと無理だったようです。
というわけで、以下のようなキャストを明示的に入れて、型を合わせるようにしました。
((SELECT COUNT(*) FROM list_anime_chara1 WHERE list_anime_chara1.page_id = page_anime.page_id) + (SELECT COUNT(*) FROM list_anime_chara2 WHERE list_anime_chara2.page_id = page_anime.page_id) + (SELECT COUNT(*) FROM list_anime_chara3 WHERE list_anime_chara3.page_id = page_anime.page_id))=CAST(:p AS INT)
次期バージョンのリリース準備中。
次回で最後の予定ですが、リリース作業を簡単にするためのスクリプトというのも用意してまして、次のようになっています。
publish.ps1(funya1_wpf)
詳細はダウンロードして見てもらうとして、PowerShellのスクリプトです。
プロジェクトファイルからバージョンを抜き出してビルドしてCompress-ArchiveでZIPに固めてます。
昔のプロジェクトはmsbuildを呼び出していましたが、今はdotnetコマンドを使っています。
浮き沈みランチャーから流用した関係で、後ろのほうにflaunch.zipの名前が残ってますが、最後のコメント群で、リリース時の最終チェックを行っています。
次で最終版のはずだからもう修正はいいかな?
技術のアウトプットが大事だけどできていないという話、毎日何かしらの開発は行っているんだから、新規性とか高度さとか面白さとかないからQiitaとかのちゃんとした記事にできないだけで、使った技術自体はちゃんとあるんだよな。「Today I Used」みたいな日記付けるか?
— 📛松田美文 (@matsuda323) July 12, 2025
StatusMessage = $"予約ツイートの予約時刻「{tweet.TweetDate}」を大幅に過ぎています。";
StatusDetail = tweet.ToString();
new ToastContentBuilder()
.AddText(StatusMessage)
.AddText("予期せぬ実行を防ぐため、予約時刻を100年後に延期します。")
.Show();

夢幻郷2回目!
実は時間になっても見えなくて、当てずっぽうでパシャパシャやってたんですが、見えてない写真で成功扱いになってしまいました。
これは成功後ちょっと待って見えるようになったから改めて取り直したやつ。
見えずに成功したやつは残っていません。
来週の放送情報。
例年よりちょっと遅くなりましたが、無事映画のテレビ放送となりました。
うちのサイトの開発環境では、Node.jsを使っています。
だいぶ古くなってきたんで、新調したいと思うじゃないですか!
バージョン一気に上げすぎると普通どこかしらエラーが起きて動かないじゃないですか!!
検証必要じゃないですか!!!
しました。
何もエラー起きませんでした。
生成された成果物もまったくもって問題なしです。
こんなことってある!?
急ですが、ユーザーページの新規登録&パスワード変更画面のパスワードフォームに簡易的ですがパスワード強度チェックを付けました。
ないよりましレベルの簡易的なものなので、このチェックに頼るよりはパスワードマネージャーとかでパスワードを作ることをお勧めします。
実装は、ある程度AIに頼りながら書きました。
ただこれ、自分で書くよりAIに書かすより、誰かが作ったライブラリを探したほうが良かったかもなと思ってます。
人が気軽にAIに頼む程度の要求仕様じゃAIも気軽で雑な実装しか書かないし、それが正しい保証もない。
ライブラリなら、しっかり作り込まれたものであればという前提は必要だけど、仕様は練り込まれ、テストも入念に行われて、サンプルも充実し、使いやすく整備されているはずです。
と考えると、AIを使うのは直接コーディングさせるよりも、便利なライブラリを探させるのに使ったほうがいいのかも。
別に実装は進んでないです。
さっきあんなこと言ったけど、こっちのプロジェクトはむしろ直接コーディングさせるほうでAI活用したいんで、AIの都合に合わせた構成にしたいなーとか考えています。
例えば今GitHubではAmazon Q Developerを入れていますが、こいつはIssueを割り当ててやると、作業用ブランチを作って作業して、元のブランチへプルリクエストを出します。
だったら元のブランチになる候補は数を絞ったほうがいいなということで、フェーズごとのブランチを廃止して、小さな機能ごとでも開発が終わった分はmasterブランチに統合していくことにしました。
Phase2 by mifumi323 · Pull Request #6 · mifumi323/funyan
ということで、このプルリクエストです。
この日記を書くタイミングでプルリク出したので、AIのレビュー待ちでマージは保留しています。
[PHP]DateTimeのtimezone_typeって何だ? #PHP - Qiita
記事投稿しました。
アンパンマンDBで日時の出力をDateTimeそのままjson_encodeしてみたら見たことないプロパティが出て来たんで不思議だったんですよね。
で、json_encodeに限らず出てくるので、題材としては変数の中身を見るためにより広く使われるvar_dumpのほうを挙げた次第です。
それはそうと…
【PHP】Qiita デイリーいいね数ランキング【自動更新】 #LGTM - Qiita
なんか1位になってました。
他誰もいないけどな!
鶏口となるも牛後となるなかれということわざがあるけど、鶏どころか単細胞生物ですな。
古いスタイルシート整理してました。
レスポンシブ対応前の古いページ用の古いスタイルシートもまだ残しているんですが、さすがに数が少なくなってきたので名前を変えたり。
コメントに関するちょっとした機能実装中。
関係あるのは一部の人に限られますが。
更新履歴ページのRSSはずいぶん前にURL変更していたんですが、各ページからのリンクがずいぶん長いこと古いURLのままだったので、修正しました。
あわせて、ずいぶん長いこと残っていたけど使われていなかったスタイルシートとかリダイレクトとかも整理しました。
DateTime関連で不思議なものを見つけたのでちょっと記事書いてます。
来週の放送情報。

とりあえずプロジェクト作ってみたけど、UWPをベースにしてマルチプラットフォーム化した感じなのね。
私にとってUWPは今一つだったし、それがベースになってる時点で熱くないな、という印象。
最初のウィザードが充実して、最初の工程を手取り足取りやってくれるけど、その分、ウィザードが終わった瞬間複雑なプロジェクトが目の前に現れます。
Avalonia UIは「UIの他はMVVMだけ用意したから後は好きにやれ」みたいな初期状態だったので、この点は対照的ですね。
UWPをしっかり学んだあとのマルチプラットフォームを目指すステップだったらこの複雑さがむしろ嬉しくなるのかも。
あと、MVUXっていう聞いたことないアーキテクチャが。
がっつり使い倒す前提ならいいかもしれないけど、今の私には重いかな。
どうやらウィンドウも普通に表示できる模様。
ビューモデルから親ウィンドウを直接たどる方法が見つからなかったので、メインウィンドウのインスタンスを静的プロパティに入れる必要があったけど、もっといい方法あるのかな。
突然、かつ今更、しかも季節外れのクリスマス衣装ですが、偽グランゼドーラのクエスト進めました。

ボスのひとくいドール。
ニードルマンみたいなやつですね。
襲われてた人、めちゃくちゃモブ兵士顔で「誰?」って感じだったけど、たぶん塔に潜入してた時に何かされてた兵士かな。
ダイム老の孫という設定のようで、絶望に沈んでいた偽グランゼドーラにちょっとだけ希望が戻りました。
他の写真は以下から。
写真置き場「2025/02/25」
.NET Frameworkのバージョンを上げるだけの単純な修正。
CI関連の機能が古すぎて動かなくなっていたので、そっちも更新しました。
さて、特に新機能も本体のバグ修正もないわけだけど、いつリリースしようか…。
Avalonia UI
.NET向けのクロスプラットフォームUIフレームワーク。
Microsoftではなく、サードパーティ製です。
WPFみたいな感覚で使える模様。
しろいコキンも人食い火竜やっつけました!
ミフミンのときの経験から、ハンマー盗賊が相性よさそうだったので、それ中心の編成で。

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