堕天使の煉獄

Gallery
Comic
Story
Production
Work
Link

2025-10

20

06:10:48

転進

uLilithのフェイスエディタはちょっと後回しにしちゃおうかなと。

もともとかなり古いツールのフェイス定義ファイル編集ツールという、なかなかニッチなモノだというのもあるけど、とりあえず

QListを使ったプロパティ管理(Qvariantはリッチな共用体みたいなやつ)と、QTreeViewで独自モデルを使う方法ならびに、各項目毎に編集用のデリゲータで値編集。

といった技術的な学習目的という点のが大きかったんだけども、そのへんはもうクリア出来たのと、uLilithのフェイスのフィールド内のプロパティ的なのが……この方法にはちょっと合ってないよなぁ……っていうのもあったりで。

例えば。表示位置(Pos)の指定が、座標指定と相対位置での指定、元になるアイテムを指定しての相対位置指定の三種があって。

あのプロパティツリーでの編集にはちょっと向いてないんですよね。
あのタイプは、設定項目が固定されてるもの向けというか。

この設定すると、別の設定の項目が変わる……みたいなのとか、あとは全設定必要なくて、むしろ省略できるものは省略する感じの仕様なので、ズラーッと設定可能プロパティを全部列挙してるのもちょっと用途に合ってない感じだったりして。

……触ったのは随分昔なので今もそんななのか知らないのですが、ゲームの開発環境のunityのプロパティ周りが、最初は必要最小限のプロパティしかなく、後から必要になるものを追加(コンポジット)していくというスタイルで。
んで、機能別に一塊になってるプロパティ(geometryならposとsizeみたいな)の編集用widgetが追加される感じで。
記のpos指定なんかで、いくつかのタイプを選択して、選択された内容の編集エディタを切り替えるみたいなを個別に作って追加していく感じに出来るし、設定が必要ないものはそもそもコンポジットしないでおけば省略されるので、このタイプのほうが向いてるんだよねと。

んで、もとの学習用として作ってみたQt Creatorのプロパティ設定真似たやつは作れたのだけども、今回のユースケースには合わないんだよなぁ。
ってところでなんかちょっとやる気がなくなってきてたりしてw

さらに、あとはもう、ほんと物量だけの話なのですが、結構仕様が多くてただただ時間かかりそうだな……てのもあって、今月いっぱいどころか、いまのモチベだと、年内これで潰れちゃわないか? と。

ということで、uLilithのフェイスエディタ開発はぺーいとうっちゃることにw

そんな感じで、今月中に書庫ファイルの中身をなんやかんやするツールを作り、来月からは3DダンジョンRPGの開発を始めて、年内には少しは遊べるものを作る!
という感じの目標で行こうかと。

書庫ファイルの中身をなんやかんやするツールは、ほんとそろそろ刷新したいんですよね。
いまでも普段使いしてるこのツール、バージョン情報みると

Qt5.11.0(LGPL) msvc2015 32bit Build

いまQt6.10ですよ。msvcも2022だし。さらには32bitビルドだしw

そのうち、そのうちと先延ばしていままで伸ばしてきてしまったなぁ。
途中で何度か刷新しようと組み始めた事はあったのですけども。
結構元のがかなり複雑というか、設定項目を増やしすぎたせいで結構物量が多くて、途中でモチベーションが切れたりして放置してる残骸が3つほど残ってたりしてw

でもさすがに今回で刷新したい。せめて64bit化ぐらいはしたいw

で、もう手をつけ始めているのですが、旧バージョンでは自前でzip書庫の解析やってたのだけども、組み直し放置verの頃から7zipを使用する方向にシフトしてるのですが。

その度に大体7zipのverも上がってて、ライブラリの更新なんかをするのですが、わりと今までは更新の際にコードも結構いじらないとビルド通らないケースばかりだったのだけども、今回(7-Zip 25.01)は、コードをプロジェクトに上書き追加しただけですんなりビルド出来て良かったり。

結構この辺面倒で、あんまり頻繁にver上げたりしなくないんですけど、物がモノだけに脆弱性関係は怖いので最新版入れときたいよな……てのもあったりするので。

なにげにちょうとつべで、「入れてはいけないソフト」っていうお題の動画でwinrarが出てきてたなw

あれほとんどもう更新されてなくて、脆弱性発見されても対応が遅いとかなんとか。

7zipはrarの解凍にも対応してるので、ちょっぴりタイムリーな話題だったなと。

rarって、解凍はサードパーティ製でも解禁されてるんだけども、圧縮はwinrarでしか出来ないんですよね。

まあ、このツール、出力はもともと非圧縮のzipオンリーなのでアレですけど。

しかし、zip内の文字コードどうすんべかな。
現状、いまだにzip書庫内の文字コード、shift-jisが大多数なんですよね。
ascii範囲ならutf-8とおんなじなので、すでにutf-8なの知らずに使ってる可能性もあるけど。

そもそも、現状ではutf16とかutf8の場合でもshift-jisに変換してからzip出力してたりするのですが、なぜそうするのかといえば、メインで使ってるビューワがマンガミーヤだったりするからで。

しかし……Qtもshift-jisはもう切り捨ててる感じなんですよね最近は。

んでもQt6.10で、

QStringDecoder dec("Shift-JIS");
QByteArray data = file.readAll();
QString buf = dec(data);

な感じのコードがググったら出てきて、これAI生成の嘘コードなんじゃないの?

とおもって、騙されたと思ってやってみたら、ちゃんと変換出来てやんの(汗

ttps://doc.qt.io/qt-6/qstringdecoder.html


QStringDecoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)


普通の使い方だとこっちのコンストラクタの、QStringConverter::Encodingの値の中にshift-jisは含まれてなくて、Qt6ではもう完全に切り捨てられたな……と思っていたのですが。


QStringDecoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)


も一つのコンストラクタの方の1つ目の引数。

「name が既知のエンコーディングの名前ではない場合、無効なコンバータが作成されます」

とのことなのだけども、それぐらいしか説明がなくて、内部がどうなってるのかわからないのですが。

どうやら、おま環、現行のwindows(10)上なら、ここで"Shift-JIS"を指定すればShift-JISのデコーダが使えるっぽい。

ググってもAI出力っぽいサイトのコード例でしか全く出てこないのですが、これってなんかほんとにたまたま環境が噛み合って上手く動いてるだけな感じっぽいんですよね。

win11とか将来のwin12とかになったらもう動かなくなっちゃったりしそうぽ。
なので、現状は動くけど、あんまりやらないほうがいいコードなのかもしれないぽ。

win自体もいつまでshist-jisをサポートするかわからないですしね。
まあ切り捨てたくても、レガシーなのに現役なshift-jisベースのツールまだまだ溢れてるのが現状だものな……。

でもここらでshift-jis切り捨てる方向に舵切るのも必要何じゃないかなーという気もしてたりで。

まあ、そもそも、zip書庫のフォーマット自体が前時代的(フロッピーで分割するための機能とか残ってるしw)だってのも大きいけど。

基本自分用のツールなので、合わせてunicode対応なマンガミーヤ風のビューワも自作する方向のがいいのかなぁと。

マンガミーヤもいい加減古いしねw
でも結局コレに戻ってくるぐらい、代替でしっくり来るツール無いんですよねホント……。

2025-10

13

06:51:35

暑い寒い

今日も今日とてPG。

最近やっと涼しくなったなと長袖なんか着たら、10月だってのに昼間には室温30度超えの真夏日だったり、夜結構暖かかったので、今日は半袖でいいか……と風呂上がりに半袖Tシャツ着てたら、次の日の昼間、雨降ったってのもあったけどめっちゃ寒かったり。
ことごとく服と気温が噛み合わないw

そんなか。

とりあえず、FileSeeker3の代替ツールはちょこちょこ実用テストしてみたところ、そこそこいい感じぽ。

検索ワードの先頭に空白あると、空白区切りで複数のワード対応してる都合、前頭の空白が「*」扱いで全ファイルヒット状態になったりするポカとかあったけどw
やっぱ実戦こそが最高のテストだね。

んで、気がついたらQt6.9.3が来てたんだけど、リリース情報見てみると、その一週後ぐらいにもうQt6.10がリリース予定だったりして。
なのでちょっと待ってQt6.10来たタイミングでアップデート。

んで、ついでにいくつかの自作ツールの修正アプデ&リビルドもしてたり。


で、今やってるのは古くから使ってる音楽ファイル系単体再生用で使ってるuLilithのフェイスエディタ作成。

まあ、結構古いツールだし、いまフェイス作ってる人なんて居るんかいなって感じですがw

最近老眼進んで今まで使い続けてたフェイスが文字ちっちゃすぎて読めねぇ……ってなったのが契機なのですが、どちらかといえばQtの技術的テストのほうが本命だったりもする。

これはQt Creatorのデザイナのプロパティ設定リスト。
o_031.jpg

それなりに長くQtやってる人なら共感すると思うのだけども、このデザイナのところのプロパティ設定のwidget、こんなやつ標準コントロールで欲しいんですけど? っていう。

で、わりと昔から折をみて挑戦してたりしたんですけども。
これがまた、単純な標準のコントロールの組み合わせじゃ全然作れないどころか、かーなーりディープな内部のアレコレ掘り返さないとおんなじようなもの出来ないんですよね。

んでなんとかそれっぽいの出来たっぽい。
o_032.jpg

なんかもう、色々とディープ過ぎてめっちゃ時間かかったけど。

StyleSheet適用すると、BackgroundRoleが無効化されたり、border指定しただけなのに、開閉ボタンが表示されなくなっちゃったり……。

基本、Htmlのスタイルシートだと、親から継承されてきたスタイルがあるとき、子で設定変更した場合、親+変更部分になるじゃないですか。

Qtのスタイルシートは、一部をsetStyleSheetで設定すると、それ以外の設定吹っ飛ぶんんですよね……一部のwidgetでは。
なんか内部の設定の順番的なもので、ある意味バグのような気がしないでもないのですが、中身が相当複雑な感じらしく、「破壊される場合があります」とだけ書かれてたりしてどないせーちゅんじゃいw

そんな感じの、よくわからない不具合というか仕様に悩まされ続けてめっちゃ時間かかったり。

結局、初期化ボタン追加するのもpaintイベントをオーバーライドして自分でボタン書いて、マウスイベントで押下時処理も自前で書いて……。

ツリービューの開閉ボタンは、StyleSheetでborder足すとボタンが消えちゃうので、QTreeView::drawBranchesなるメソッドをオーバーライドしてそこでボーダーだけ自前で描画……。
リスト内の分類ヘッダ的なの(上の画像でいうところの黒背景で「Prefence」て所)だけ背景色とか変えたいんだけども、StyleSheet使ってるとBackgroundRoleが無効化されるのでこれもまたQTreeView::drawRowなるメソッドをオーバーライドして、そこで該当行だけ自前で描画……。

ツリーの展開中のサイズに合わせてwidgetのサイズもfixする必要あるんだけども(スクロールバーの処理の関係上、開閉でサイズが可変するので調整しないといけない)素直に全体サイズを取れるメソッドがなかったり。
QTreeWidgetにはあるのに……QTreeViewだと無い。なんでや。
なのでちまちま上から数えて高さを計算してみたり。

とにかく、派生、オーバーライド、自前で描画、自前で計算のオンパレード。
ほんと、めちゃくちゃ面倒な作りなんだなコレ……。

コード書いてる時間よりも遥かに調べ物してる時間のほうが多かったりして。
まあ勉強にはなったけど……。

にしても、もはや増えた気がするレベルを超えて、Qt関係で調べ物するとQtのPython版の記事がかなりの件数ヒットするようになってうぜぇ……。

ていうか一時期はQtQuickが増えてきてうざい時期あったけど、最近は全くヒットしなくなったな。
でもなぜか、Qt6.10とかここ最近のリリースではQtQuick関連の新機能ばっかり紹介されてるんだけど……アレ何処で使われてるの??
組み込み系とか?

全く最近検索でも引っかからなくなってきたので、QtQuickとか空気な印象なんですけど、世界の何処かでは熱い所あったりするんだろうか??

QtQuickばっかりじゃなくて、QtWidgetの方でもdirectXでシェーダーとか簡単に使わせて欲しいんだけどなぁ。

Python版の方は、コードは概ねc++に置き換えられるので、役に立たないってことはないんですけども、いちいち置き換えるのが面倒くさいぽ……。

んーでも、日本人&日本語でQtの話題とかも、最近はあんま見ないので、将来とかどうなんでしょねw

最近ではスマホ環境向けとの統合がメインストリームな感じなので、c++でwinアプリ専用開発みたいなのは、かなりニッチなジャンルになりつつあるからなぁ。


ちょっと関係ある話だけど。

uLilithのフェイスエディタ、何年も前に一度作りかけて頓挫したのですが。
その時のコードを参照して、思い出しながら組んでる感じなのですが。
とりあえず、何が必要なのかみたいなものは出揃う程度には組んであったので、今回組むにあたって、その分はかなり時間短縮出来てるぽ。

で、その中でフェイスの定義ファイルのI/Oのあたりのコードにこんなコメントが。

どうもUTF-8 BOM付だとダメっぽい
bom無しだといけるっぽいけどShift-JISと文字コード判定とかしてるのかな??


uLilith自体かなり古くからあるツールなので、定義ファイルも文字コードがshift-jisなのがスタンダードだったりするのですが。

もう当時の事は昔過ぎてあんまり覚えてないのですが、文字コード変えて保存して読み込めるかテストした調査結果だと思うのだけど。

うーん。
shift-jisとutf-8の判別って100%には出来ないんですよね。
んで基本的にはascii範囲はどっちもおんなじバイナリになるのですが、こんなコメント残してるぐらいなので、日本語周りもshift-jisとutf-8(bom無し)どっちも行けたので、自動判別してるっぽい?
とか言ってるとおもうんだけども。

なので、今回改めて調査。
……あれ普通にbom付きutf-8行けるぞ?

わりとwinだとbom無しutf-8は鬼門なので(古いアプリなんかだとshift-jisが現役なので混ぜるな危険)できればutf-8ならbom付きを採用したい所。
てかまあ、面倒なのでutf-16をデフォルトにしたい所ではあるけど、bom付きutf-8使えるようになってるのなら無問題ですね。
当時以降のアプデで出来るようになってたっぽい。


んで、それとは別に調査の過程でとっても面倒な事態が。

uLilith上で「フェイスの変更」すると強制終了するようになってるw

それ以外の機能は一通り試してみたけどクラッシュせず。
色々調べてみると、window10である時期のアップデート以降、その症状が出たみたいな情報が。
どうも、vc++のランタイム周りの問題らしい。
uLilithの現行最新版はvc++2019のランタイムが必要らしいのだけども、msさんのサイト見に行ったらば、いまは2015~2022までのがセットのバージョンしか無い&すでにうちのPCには最新版のランタイム入ってるっぽいんですが……。

詰んだなコレw

エラーログ見てみると、ucrtbase.dllでBEX64がエラー吐いてるらしい。
そのへんでぐぐってみると、なんか古いエロゲでそのエラーが出て動かないんですが。
と、結構硬めのサポートフォーラムみたいなところでエロゲのタイトルがいくつもでてて、なんかシュールな光景が広がってるとこにぶち当たったりw
そして質問者の、エロゲタイトルをなんの躊躇もなく書き込んでる清々しさにちょっと
漢らしいと思ってしまったりw

そこではなんかファイル名に日本語混じってると駄目みたいな話が出てたりで。

最近はwindowsも内部コードがutf-8に以降するみたいな感じで、なんかある時期のwindows10のアップデートでそのへんのなんか変更したみたいなのあったなぁと。
なんかタイミング的にもそれ関係での不具合のような気がしないでもない。

うーん。
フェイスの切り替えが本体から出来ないんじゃテストもクソもないし、もはやソフトの寿命とも言える感じか?
最新版っても2019/12/07が最新版なのですでに約5年前だしなぁ。

uLilithのexeある所のConfig/uLilith.cfgの中に「LastFace = ...」て箇所あって、そこのパス変えたらフェイスの変更は一応出来たけど……。

……そういえばuLilith上からフェイスを切り替えるコマンドとかあった気がするな。
調べてみたら「ShowFaceSelector」と「ShowOpenFace」コマンドなるものが。
前者の「ShowFaceSelector」が、uLilith上で右クリックメニューからのフェイスの変更で呼ばれるフェイスセレクターを起動コマンドで、「ShowOpenFace」は定義ファイルを指定して読み込むだけのダイアログを開くコマンドらしい。

で、後者の方だとダイアログは開くし、選択したフェイスに切り替えも出来る!

どうやらフェイスセレクター内の、ツリー表示か、フェイスのサムネ表示あたりの処理でvc++ランタイムのバージョン問題が発生してクラッシュする感じっぽい。

デフォだとなかったので、「ShowOpenFace」コマンドを実行するショートカットキーを設定して、とりあえずuLilith上からフェイスを切り替えることは出来るように。

ただ、この方法だと、定義ファイル選択で開く最初のフォルダがexe直下の「Face」フォルダ固定のようで、フェイスのテストしようと思ったら、その場所に入れとかないと面倒くさい感じに……。
まあ、このぐらいなら許容範囲内かなぁ。

何にせよ、やっぱ古くて開発も止まってるツールだとこういう問題がポコポコ出てくるよね……。

そして、もとの話に戻るけど、今どきc++でアプリ開発とか、かなりニッチな世界になっちゃったなぁという現実を突きつけられるなぁとw

ほんと、最近はフリーソフトの開発者さんとかめっきり減ったものな。

そんな感じで……特に公開するつもりもない、自分で使うためのツールとかもりもり作ってるけど、生産性? っていうワードが脳裏をよぎるたびに頭をブンブン降る毎日です(ぉ
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
03
04
05
06
07
08
09
10
11
12
13
暑い寒い
[スポーツの日]
14
15
16
17
18
19
20
転進
21
22
23
24
25
26
27
28
29
30
31
total:2178973 t:500 y:102
■記事タイトル■

■年度別リスト■
2025年 2025年12月(0)
2025年11月(1)
2025年10月(2)
2025年09月(5)
2025年08月(3)
2025年07月(1)
2025年06月(2)
2025年05月(1)
2025年04月(2)
2025年03月(3)
2025年02月(8)
2025年01月(3)
2024年 2024年12月(1)
2024年11月(2)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年 2023年12月(3)
2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年 2022年12月(4)
2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年 2021年12月(8)
2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年 2020年12月(3)
2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年 2019年12月(1)
2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年 2018年12月(1)
2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年 2017年12月(2)
2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年 2016年12月(7)
2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年 2015年12月(7)
2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年 2014年12月(12)
2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年 2013年12月(15)
2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)

■レス履歴■

2025-05-11 11:50:17 - まうる

2025-05-09 02:22:38 - 織田霧さくら

2025-05-05 11:04:08 - まうる@ZONA

2023-09-26 14:59:38 - 久慈光樹

2023-09-26 14:29:10 - 織田霧さくら

2023-09-26 13:10:45 - 久慈光樹

2023-03-20 05:30:16 - 織田霧さくら

2023-03-15 20:42:58 - まうる

2022-12-26 19:14:57 - 織田霧さくら

2022-12-25 02:28:36 - まうる@まるるん


■ファイル抽出■

■ワード検索■

堕天使の煉獄

https://rengoku.sakura.ne.jp
管理人

織田霧さくら(oda-x)

E-mail (■を@に)

oda-x■rengoku.sakura.ne.jp

堕天使の煉獄バナー 堕天使の煉獄バナー