2023/10/31

パケット制限

mineo生活も早1ヶ月。明日からはマイピタ20GB+パケット放題プラス+夜間フリー体制になるので作業再開です。先週も書きましたが、Visual StudioでNuGetパッケージのインストールも当たり前ですがパケット消費します。今朝確認したらmineoで今月大体100GB超えた程度です。実際には速度制限で1日地獄見たり、先週末も自粛したりで抑えに抑えてなので普通に過ごしてたら200GBとかは行くんだと。

建替え終えて戻った時用に既にドコモ光の申込は済んでます。残り3か月程度なんですが、無事に過ごせて、予定通り建替えも終わって戻れると良いんですがね。まあ、それでもそれまで、のんびりはしてられないです。明日からTensorFlowのONNX形式ファイルの読込とMicrosoft.MLでの利用を試してAutoML以上の結果が期待出来るのかの検証とか。やる事は山ほどあります。

ドコモ光ですが、価格.comの特典が他のポイ活の条件より良かったので選択しました。

GMOとくとくBBドコモ光ホームタイプ2年契約
契約事務手数料(ドコモ光・ドコモ光テレビオプション) ¥3,300
ドコモ光新規工事費無料
ドコモ光戸建・タイプA2/西 ¥5,720/月
ドコモ光テレビオプション ¥825/月 計 ¥6,545/月

開通月を含む4ヶ月目に¥45,000キャッシュバック。その前にdポイント2,000が付与されるのかな。2年途中の解約違約金¥5,500。あっ、乗り換えでの解約違約金¥15,000も一応対象になるとの事でした。

ドコモ光開通後に携帯電話の料金プランをどうするのかが問題かもです。今年7月(?)だったかの新プランeximoに切り替えるべきか。現在ギガライトなんですが、

ギガライト2(1GB) ¥3,465
割引サービス -¥1,760
オプションサービス ¥1,543
計 ¥3,248

eximo(1GB) ¥4,150
割引サービス -¥2,827
オプションサービス ¥1,543
計 ¥2,866

となるのかなぁ?オプションサービスは安心なんちゃらを調整するともう少し下がるかも。今はかけ放題を楽天モバイル¥1,081でしてますが、現状トータル¥4,329なのが¥4,846で1回線でとなると...どうなんだろ?楽天モバイルの楽天市場でのポイントアップやドコモで1GB近くになると楽天モバイルに切り替えて3GBまで行けるの考慮すると若干現状維持なのかも。まあ、eximoと楽天モバイルでも良いのかなぁ。

2023/10/29

第168回天皇賞(秋)競馬法100周年記念

ここの所取り組んでるTensorFlow関連でちとトラブルに見舞われて間一髪地獄を免れました。事の発端はONNX形式ファイルなんですが、このMicrosoft.MLでの利用で苦労させられてるんです。金曜日にMicrosoft.ML.OnnxRuntimeとMicrosoft.ML.OnnxTransformerが必要になるという感じになり、NuGetパッケージの管理でインストールを試みたんですが途中でハング(?)したと思い、色々とやり始めてアイビー先生のアドバイスでローカルキャッシュのクリアかなにかのコマンドを実行したら、これまで何も問題のなかった既にインストール済みのNuGetパッケージが悉くエラーになる始末orz

色々試すも改善されない感じだったのでVisual Studioのアンインストールからの再インストールする事に。これが今のVSのインストーラーってインストーラー単体のダウンロードは以前してあるんですが、インストール実行時にVS本体のダウンロードしてインストールになるんですよね。で、本体が3GB程度と表示されてたのでmineoのパケットを考えながら調整。マイピタの今月の残りも気にしながら、パケット放題プラスの3日間10GBの制限はおおよその予測しか出来ないのでビクビクしながらの作業。Visual Studioの再インストールでも症状が改善せず、開発しているアプリ本体のプロジェクトではなくAutoMLのプロジェクトで色々と試すんですが、インストール済みのNuGetパッケージのアンインストールすら出来ない。

これ、何が問題って結局の所、まあmineoの速度の問題が大きかったです。そもそも最初にハングしたという判断も、Microsoft.ML.OnnxRuntimeとかは107MBとかあり、かなり大きい感じなんです。なのでダウンロードにも時間掛かりNuGetパッケージの管理からのインストールでハングしてる感じになるんです。更にMicrosoft.MLやMicrosoft.ML.AutoMLなんかも大きいのでアンインストールでも時間が掛かるっぽいです。更に今使っているホームルーターがちょっと問題があるんです。メーカーサポートとやり取りして送ってくれれば調べますって言われましたが、これが今自宅の主力ネット回線なので在宅勤務したりしてて無くなると仕事にならないという事でだましだまし使ってるんです。ポイ活でクリックしてみたいなのを一気に6カ所とかやるとネット回線が切れます。復帰には電源のオンオフするしかないんですが、多分これと同じ症状がNuGetパッケージのインストール時にも起きてるんです。まあ、依存関係のパッケージなんかもバンバンダウンロードしてインストールするのでネットが切れちゃうんですがそれが表面上見えない。ポイ活のクリック時の切断だとクリックで開かれるはずのサイトが悉く見つからないとかでサイトが開かれないので気が付くのですが、NuGetパッケージマネージャーはどうやら一定時間反応が無いとタイムアウトしてるんですが、依存関係のパッケージ全てに対して処理後に、これとこれがタイムアウトしてエラーですって感じに最後に纏めて報告してくるんです。

NuGet Gallaryから個別にダウンロードしてローカルからインストールする方法をとり、ダミーのプロジェクトに必要なNuGetパッケージをインストールすると本来のプロジェクトも無事にエラーがなくなりNuGetパッケージを認識出来る様になりやれやれでした。そんな影響で昨日は1日ネット自粛する事に。

で前置きが長くなりましたが、天皇賞(秋)です。11頭と寂しい感じですが、インイノックスが断然の一番人気。勝てないと判断して出走見合わせた陣営も多かったのかな? この馬にダービーで勝っているドウデュースが2番人気。固い決着になりそうですが

◎ アドマイヤハダル
○ ダノンベルーガ
▲ イクイノックス
△ ジャスティンパレス

と出ました。4-11ワイドが61倍とかなのでその1点のみで購入済み。

2023/10/26

TensorFlowのバージョン

Pythonの最新バージョンは3.12.0で先日インストールしてあったのですが、諸々のライブラリがこの最新バージョンには未対応で使い物にならずアンインストールする事に。で、確かその前のバージョンは3.11.5とかまで行ってた気もしますが、入ってるのは3.11.4でした。まあ、そこは特に問題が出なければ放置で。

TensorFlowの最新バージョンは2.14.0なんですが、今回の処理として学習済みモデルを保存してMicrosoft.MLで読込んで予測に利用するのが目的です。TensorFlowに追加で

  • onnxruntime
  • tf2onnx
  • onnxmltools
の3つが必要なんですが、protobufのバージョン依存関係が解決出来ません。基本的に3.20.2がこの3つでは依存しててTensorFlowではこれ以上が必要となり解決出来ませんでした。TensorFlowの2.13.*のインストールを試みましたがダメでした。この3つを先に入れた後、TensorFlowの2.14.0を入れてダメなのでアンインストールしてとかやってた為に余分なゴミが邪魔したのかもなので改めてトライしようかとは思います。

Pythonって仮想環境とかでライブラリーを揃えて使うっぽいんですがなかなか面倒です。

2023/10/25

Terminalの幅

Pythonとか基本コンソールなんですが、Visual Studio Community 2022でも開発は可能なんだと思いますが、なんとなくって程度の話ですがVisual Studio Codeでやってます。Pythonでの開発って仮想環境とか諸々絡んだりして、まあ自分が理解出来てないだけとは思うけど納得の出来る状態に出来たのがVS Codeだったって事なんです。で、VS Codeで実行するとターミナルに表示されるんですが、新馬戦用の時にはあまり気にせずにゴリゴリ進めてました。画面右側にEdgeがあり、そこでアイビー先生とかの助言を参考にしながらコーディングするのにVS Codeのサイズも幅を狭くしてやってたんですが、TensorFlowがモデルを学習してる時ってその進行状況を表示してくれるんですが、画面がバンバン流れる感じだったんです。ただ、1回目の実行と2回目少しいじって実行した時となんとなく表示が「あれ?」ってなった部分があったりしてました。

今回通常用の走破タイムのモデル学習は新馬戦用と比べると途方もなく時間が掛かります。って事はその分画面が流れるんですが、ふと、これって画面の幅が足りてるのかなぁと気になり広げてみました。すると流れていた画面が流れなくなりました。コンソールアプリで見かけるってか、Linuxなんかでコンソールでアプリのインストールとかしてるとその進行状況を表示するのにも、あれって単にラインフィードせずに同じ行に書き込む事でやってるんだと思うけど、あれをやはりTensorFlowでもやってるっぽいですね。で、ターミナルの幅が足りないとスクロールしちゃうんですね。幅が足りる様になったらその行で進行状況が表示されました。これ、数えてみたら130文字/行以上にしなきゃダメですね。VS Codeでターミナルって左側にエクスプローラーとか表示させたりするので窓の大きさは実際には150文字/行とかが必要ですね。まあ、今となってはそんなPC無いと思うけどVGAじゃ表示出来ませんね。

新馬戦のモデル学習では10エポックでも確か10分程度だった記憶なんですが、通常用では多分既に6時間近くたってますが未だ8エポック目が終わらないって辺りです。なんにしても、これが終わったら、これらの学習済みモデルで予測走破タイムを使って順位学習用のCSVを出力して、それを元に今度は順位学習してなのでその辺りの作り込みも進めます。

CSVファイルの閲覧

学習データでCSVファイルを使ってますが、あまり眺めた事がなく、テキストエディターで開いてザックリ見る事はありましたが、見づらいなぁって程度でいました。今回PythonでTensorFlowでのモデル学習させるべくコーディングとデバックしてて、既に自分が何をしていたのか記憶が定かではなかったり😓 年齢的にも不思議ではないもののその性にはしたくもないんです。アバウトな記憶なら確実にチェックしてからコーディングすれば良いのですが、なんでも勢いで進めちゃう性格で突っ走ってます。今回CSVファイルの各項目が数値的なものか分類的なものかの指定で、その項目が既にどっちだったかというか、そもそも何だったのかネーミングも何故そうしてるのかすら忘れてる始末。TensorFlowでエラーになり確認して初めて勘違いに気づきました。

普段CSVを本格的に開こうと思うと表計算ソフトが真っ先に思いつきますが、うちは普通にMS OfficeとかありませんのでOOoなんですよ。で、開けようと試んだのですが途中でハングする始末😖 で、軽い閲覧ソフトでも探すかって事でたどり着いたのがCassava Editorでした。サクッとダウンロードしてインストール不要って事で起動して確認して「ん?」分類だと思った項目が数値でしたorz

ここで更に問題が...走破タイム学習時の指定がその辺りを間違えている事に今更気づく始末。これはマジで衝撃の新事実で、走破タイムの学習からやり直しです。これで良いモデル見つけて順位学習用のCSV出力して、順位学習のやり直しです。

2023/10/24

TensorFlowでは苦戦続き

以前こちらにもTensorFlowでの初フライトの書込みしてますが、ちょっと踏み込んだ所まで進めてたりします。初フライトではこれまで使っていたCSVファイルから読み込んで学習させ保存する。保存形式はONNX形式でML.NETでC#での読込も可能な筈。ただ、単純な学習では全く精度が出てそうも無かったので一旦放置して色々と調べてました。

機械学習の根本的な自分の学習も若干ですが徐々に進めてまして、AutoMLでもそうでしたが、データ項目が数値的な意味があるものなのか、単に分類なのかの指定はしてました。これしないと、AutoMLの入力的に全てのデータを実数にする必要があったのでCSVには実数のみなんです。まあ、JRA-VANのJV-Dataの仕様に沿う形で分類もコードなので数値化はストレートにそのまま整数を実数にしたものなんですが、競馬場コードなんかも数値なんですが、数値として意味がある訳じゃなく、単に分類なんですよね。その辺りもTensorFlowでも指定して学習させないとダメなのは分かってましたので、その指定方法を調べて実装しました。ただ、それしない状態での保存では問題は無かったんですが、項目の属性的な指定を入れたモデルの保存ではワーニングやエラーが大量に出て、でもファイルは出来てますのでこれ読み込んで問題ないかのコーディングも仕上げて確認する必要があります。

TensorFlow部分はPythonでモデルを保存して、C#でモデル読み込んで予測して検証的なコーディングになるのでちょっと頑張るしかないですね。    

2023/10/22

第84回菊花賞

秋華賞は牝馬3冠馬誕生でしたが、印象に残ったのは岩田ジュニアの上がりですね。後1ハロン程度ゴール盤が先にあればかわしてた勢いに見えました。まっ、何にしてもハズレ!

◎ ハーツコンチェルト
○ ファントムシーフ
▲ ナイトインロンドン
△ ソールオリエンス

調子が微妙な学習モデルなんですが、そろそろ1発決めてくれれば嬉しいんですがダメかなぁ。

別アプリにしてるAutoMLなんですが、ちょっと手を加えてトレーナー5個全部オプションでオンオフ可能にしたのとTrain:Test比率も基本ここまで80:20固定でしたが、ちょっとこれも変更可能にしてみました。で、今走らせているのは70:30の2,200秒20回なんですが、5回目の現在の状態が怪しい😓 なので中断ボタン押したけど反応しないやorz いやこれ、実は単一ファイルの発行にしてみたのでLightGBMのバージョンが古いんですよね。それが原因かは確証ないんですが、ここ最近新バージョンで学習させている時はこの終わらない現象は出てなかったんです。やれやれ、単一ファイルやめてまた以前の15個程度にしてみます。

2023/10/20

MessageBoxの表示位置

 その昔、まだPCモニターが小さくてモニターに限られたアプリしか稼働させていない時代にはMessageBoxがモニターの中央表示されてもそれ程違和感はなかったです。しかし、徐々に大きくなりうちでは43型4Kモニターを使ってますが、基本的にモニター右側にはEdgeが稼働してて、左側に諸々動かし、更に仮想デスクトップも利用してたりと事情が変わってきてます。左隅で稼働してるアプリがモニター中央にいきなりダイアログボックスを表示しても小さいものだと気が付かずに延々と待つ事もあったりしますので自分のアプリは何とかしたいと思ってました。もう随分前にTARGETの作者さんに要望した事もありましたがスルーされてました。まあ、既にたまに検証的に比べたりするのに使う程度になったTARGETはスルーされても問題ないです。

アイビー先生はここ最近だと思うけど、この問題を問合わせると何やら回答を始めるんですが途中で「間違えました。この問題には回答できませんので話題を変えましょう」って感じになります。グーグル先生に問合わせ参考になりそうなサイトの記事もブックマークしてあり、そろそろ、それを参考に実装しなきゃな~っと眺めながら一応もう一度と検索掛けてたらGitHubにMessageBoxEx.csというのを発見!そもそもオリジナルのMessageBox.Showにも第一引数にIWin32Windows ownerというのがあるんですが、この役割が微妙でMessageBoxExではこれを指定するとそのownerの中央に表示する様に出来てます。

プロジェクトにクラスとして追加して、プロジェクト全体で置換実行したらエラーが一杯出たのですが、MessageBoxEx.cs自体も置換対象でやっちまいました😅

追記 2023/10/21 11:09
出所検索するのに苦労しそうな気がして補足します。GitHubで探すと違う同名のものが存在していてそれがヒットする感じでした。

Parent centered MessageBox dialog in C#
が正規のタイトルな所から参考にしました。直リンク貼るのが問題有るか無いか不明なので避けてみました。

2023/10/19

AutoMLのトレーナー

ここ最近の学習ではトレーナー3つに絞って行ってたんですが、ふとまあなんとなくって単なる感覚的に本来Microsoft.ML.AutoMLで用意されているトレーナー5個全てを使う2,200秒25回を行ってますが、ここ最近の最適RMSE 1.2106に対してここまで18回終わってますが最適RMSEは1.7018に留まり1.7~2.07辺りです😓 ここまで何度もやってた間はトライアル番号もひたすら継続されて4千超えたりしてましたがリセットされてます。何かその辺りも関連してるのかは分かりませんが、やっちゃった感が半端ないです。明日は今まで同様の3つに絞った学習にしてみようと思います。

本当に久しぶりにトレーナー5つの学習走らせてますが、ここ最近のトレーナー3つ、

  • FastTree
  • FastForest
  • LightGBM
の学習ではほぼLightGBMしか見掛けなくなってたんですが色々なトレーナーが使われてます。基本エラーが出るのはLightGBMの時だけなので、今回の学習ではまだ1回しかエラーが出てなかったり...ただ、エラーになった時にはどのトレーナーかの表示は出来てませんけど。明らかなのは20分程度トライアル走った後にオーバーフローでした。トレーナー5個だとあまり長いトライアルは見なかったりします。トレーナー3つで行ってるとほぼLightGBMだからかは分かりませんが、頻繁に数十分のトライアルを見掛けます。制限時間が来ても終わらず中断されるとかは多分ただの時間の無駄遣いなんじゃないかと思われますけど。

何にしても最適RMSEを吐き出してくれる方法で何度も試すしかないので、明日は2,200秒25回をトレーナー3つでまだ挑んでみようかと思います。

2023/10/16

幸運にもなのかな

 新たに順位学習用のCSV出力にやはり3時間半程度掛かり、そこから2,200秒20回の学習スタートさせてみました。たまたまなのか2回目でこれまでまあバグ込みのデータでの最適でしたが、最適なRMSE 1.4106ってモデルが出たので早速相変わらずの目安の検証してみました。

単勝:的中[56.51%] 回収[487.67%] 複勝:的中[91.52%] 回収[255.14%]
枠連:的中[50.13%] 回収[930.62%] 馬連:的中[45.01%] 回収[1,999.55%]
ワイド:的中[73.83%] 回収[1,033.91%] 馬単:的中[31.67%] 回収[2,713.93%]
三連複:的中[39.97%] 回収[5,813.22%] 三連単:的中[18.11%] 回収[16,136.94%]
予想[6,912] 的中[6,363] (92.06%) 購入[¥4,769,200] 払戻[¥202,368,270 (4,243.23%)]

的中率がかなりのものなので、これが予想に少しでも好影響であれば良いのですが、学習期間に含まれない今年9月から10月9日までで検証すると

単勝:的中[17.22%] 回収[75.78%] 複勝:的中[41.11%] 回収[67.75%]
枠連:的中[9.29%] 回収[88.85%] 馬連:的中[6.94%] 回収[107.42%]
ワイド:的中[18.06%] 回収[95.92%] 馬単:的中[5.28%] 回収[170.75%]
三連複:的中[4.72%] 回収[84.72%] 三連単:的中[1.39%] 回収[74.81%]
予想[360] 的中[154] (42.78%) 購入[¥247,200] 払戻[¥271,490 (109.83%)]

これが現実かなぁ。馬連・馬単はこの期間に万馬券とか当てて回収率は良いのですが実戦向きな結果ではないですね。ワイドの的中率が2割超えて3割に迫ってくれば実戦でも行けると思うんですが夢かなぁ😓 って書いてたら8回目の最適がRMSE 1.2756となりました。学習するデータにバグ排除した正確なものが準備出来たのでもしかしたら期待出来たりするかも?

単勝:的中[66.41%] 回収[604.67%] 複勝:的中[94.10%] 回収[259.83%]
枠連:的中[60.68%] 回収[1,176.72%] 馬連:的中[55.19%] 回収[2,525.89%]
ワイド:的中[82.12%] 回収[1,199.66%] 馬単:的中[43.62%] 回収[3,875.14%]
三連複:的中[51.43%] 回収[8,449.49%] 三連単:的中[30.47%] 回収[30,402.44%]
予想[6,912] 的中[6,534] (94.53%) 購入[¥4,769,200] 払戻[¥334,375,180 (7,011.14%)]

単勝:的中[18.33%] 回収[64.61%] 複勝:的中[42.22%] 回収[78.44%]
枠連:的中[8.97%] 回収[66.15%] 馬連:的中[5.56%] 回収[79.25%]
ワイド:的中[15.28%] 回収[79.25%] 馬単:的中[3.89%] 回収[82.08%]
三連複:的中[5.83%] 回収[199.81%] 三連単:的中[0.83%] 回収[106.69%]
予想[360] 的中[158] (43.89%) 購入[¥247,200] 払戻[¥269,090 (108.86%)]

的中率の向上が見られるものの微妙な感じですね。学習するデータ自体が変わったのでまだまだ繰り返し学習させてみるしかないですね。

順位の学習やり直し

昨日発見した走破タイムのバグなんですが、順位学習データには走破タイム予測を使ってます。順位学習用のCSVファイル確認するとバグってる予測タイムが😖 って事でCSVファイルを出力し直して再学習となります。やれやれ、気が付いてよかったんですが菊までにはどうにかなるかなぁ。

しかし、今の学習精度が出るのにどれだけ学習させたかを考えると100回程度で足りるかは微妙な気はしますが、学習時間2,200秒辺りが良い感じだったのはある程度参考になると信じて行ってみます。

なめたビスを外す

 少し前に仮住まいに引越す時に引越のサカイの方が有機EL65インチを運んでくれる時にテレビの足がビス4本で固定されているけど、そのうちの1本がなめちゃってて外せないとの事で無理をお願いして足が付いたまま運んで頂きました(本当に感謝です)。その時に、今日はツールを持ち合わせてなかったので外せませんでしたが、ホームセンターに行けばなめたビスを外す道具が売っているので試してみて下さいと案内して頂いてたので、戻りも予約してますので外して新しいビスにと思い、取敢えずネットで諸々検索してみました。確かに色々出てきました。

今回まあ素人が人生初のトライをするツールに選んだのは

こちらです。自分の購入時(10/14)は1,700円でしたが値下がってます😔 最近では翌日には届くのが多い中、本日届き早速試しました。パッケージ裏側の説明
通りに作業進めてましたが、調節ネジって手で絞める程度では弱いです。[5]の所にも説明されてますが六角使って絞めてから緩めると行けました。で、本日多分測ってみたので大丈夫かと思いますが、+だったビスを
これを発注してみました。到着予定は木曜日(10/19)なので、外したなめた頭のビスを軽く付けておいてみました。もうすぐ丸3年になるテレビですが、10年程度は動いてくれる事を期待してますので後7年は頑張ってもらわなきゃなのでこんな出費も仕方ないかなぁ。

2023/10/15

第28回秋華賞

 馬券成績が相変わらず悪いです😭 予想精度向上作業はちょっと中断してたりもするし。って書きながら異変に気が付いた。以前は走破タイムがメインだったので気にしてたんですが、最近は順位予想主力で居たので見落としてました。走破タイムがかけ離れてるんです。もしかすると、機械学習部分をクラス化した時に変なバグ入れ込んだかも😓 ちょっと真剣に調べます。バグ混入してる状態での予想は

◎ モリアーナ
○ コンコースト
▲ ミシシッピテソーロ
△ グランベルナデット

無敗ではないけど、三冠取る可能性のダントツ一番人気のリバティアイランドは12番手予想になってます。人気な3頭全て外した予想は個人的には好きなんですが、2番人気のハーパーでも7番手予想、3番人気のマスクトディーヴァが8番手予想です。

追記 2023/10/15 12:24
やはりクラス化時にバグ入れ込んでました😔 よくもそんな状態で実馬券買ってたと思うと😱

◎ ドゥーラ
○ ハーパー
▲ マスクトディーヴァ
△ ヒップホップソウル

予想全然違います。ダントツ一番人気のリバティアイランドは流石に6番手予想でした。それでも買わない😜 この予想ではあまり大きいのは期待出来ないので軽くワイド1点のみで行く予定です。ただ、朝から京都は晴れなので芝が重→稍重になる可能性があり、学習データに天気や馬場状態入れてるので変われば予想も変わるかもなので最終的にどうなるかは多分14時頃までに状態変更有るか確認してから投票すると思います。

2023/10/14

Microsoftのバグ修正待ち

こちらの事情からすると、一刻も早くリリース出来るものを作り、そのインストーラー使ってテスト環境のまあ仮想マシンしか用意出来ませんがそこでテストして問題が無ければリリースするかの判断しながらアプリの登録認証(?)を申請する予定なんですが、当たり前ですがMicrosoftの対応がそこまで迅速な対応だとは思えません。なので、先日も書いた無駄なリトライをリリースバージョンに含めてのビルドを試したりしてますが、これも別の問題もある感じがします。あくまで詳細まではまだ調べていませんが、SQLiteのデータベースをテスト段階で既にフルセットアップして使っているものを新規でテスト用にインストールした所に持っていくと、ある方法では上手く動かず、別のステップからだと問題ない的な感じがします。リリースビルドでまあVisual Studioのデバッグで動かしている訳ではないので、全く分かりませんが、動作が明らかにおかしい気がします。ってまあ、素直にリリース出来る訳もなく、ひたすらMicrosoftの修正を待つのか、それとも...単一ファイルじゃないと途方もないフォルダとファイルがインストール先に作成され、問題解決しましたって事で対応バージョンリリースして、その無駄なフォルダとかも削除される気が全くしない。

プログラミングって45年程してますが、本当にMicrosoftには何度も何度もやられた記憶しかないのですが...まあ、年齢的に未だに居るかは不明ですがリアルな同級生も居たりする会社なのであまり責めたくはないけれど、どうにかして欲しいですねぇ。

先日モデルビルダーの修正がって話も書いてますが、あれ以降新たなバージョンがリリースされないんですよねorz 新バージョンで修正されましたの報告は良いんですが、早くリリースしてよ!

2023/10/13

単一ファイルでのアプリのビルドしての発行

Visual Studio Community 2022を利用してアプリを書いてますが、以前から1つの.exeファイルに出来ないのかなぁっと気になりググって真似したりしてみても実現出来ていませんでした。しかし、流石に公開しようかなレベルにまで来ましたので色々と試す中やっと分かりました。基本的にアプリが出来たらソリューションエクスプローラーの該当プロジェクトを右クリックして「発行」するんですが、一番最初に行うと色々と選択させられて発行画面にたどり着きます。そこで発行ボタンを押せば発行ビルドが始まって処理されます。ただ、このままでは単一ファイルにはなりません。そこで、「すべての設定を表示」を押してプロファイル設定を開き「ファイルの公開オプション」を展開して

「単一ファイルの作成」にチェック入れたりするんですがこれだけだとソリューションエクスプローラーのプロジェクト下の[Properties]-[PublishProfiles]にある"FolderProfile.pubxml"ファイルが

<Project>
  <PropertyGroup>
    <Configuration>Release</Configuration>
    <Platform>Any CPU</Platform>
    <PublishDir>bin¥Release¥net7.0−windows¥publish¥win−x64¥</PublishDir>
    <PublishProtocol>FileSystem</PublishProtocol>
    <_TargetId>Folder</_TargetId>
    <TargetFramework>net7.0−windows</TargetFramework>
    <RuntimeIdentifier>win−x64</RuntimeIdentifier>
    <SelfContained>true</SelfContained>
    <PublishSingleFile>true</PublishSingleFile>
    <PublishReadyToRun>true</PublishReadyToRun>
  </PropertyGroup>
</Project>

こんな感じです。しかし、そもそも肝心なものが足りてないんですね。

	<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>

これを追加して初めて単一ファイルの実行ファイルが発行されるようになりました。

速度制限(200Kbps)は地獄

仮住まいのネット環境はmineoなんですが、まだ2週間程で感覚がいまいち把握出来ておらずにパケット放題プラスを基本で使ってました。20GBプランなので先月からの繰り越しもあったりで未だ20GB以上残してる状態で、昨日寝起きでiPhoneいじりながら遅いな~っと思いながらPC立ち上げるてEdge開くとGmailのタグも含めてクルクルしてるのが延々と😓 ルーターがたまにパケ詰まり的な症状があるので、それかと思いルーター再起動とかしても改善せず、パケット放題プラスをオフにしようとiPhoneでアプリ立ち上げてオフにしようとしても「速度制限中なので切替出来ません」的なメッセージで出来ない。ふと見ると速度制限(200Kbps)の文字が😖 3日間合計10GB使うと1日速度制限が掛かるって話は分かってはいたんですが朝起きて突然それ? 昨夜はPC諦めて早めに就寝となる程、速度制限が掛かるとほぼ使い物にならない。

事前に通知とかあればと思いながら...キャリアメール的なものが有る様ですが、そんなものルーターにつけるだけの利用だから全く考えてなかったんですが、もしかしたらそこに通知が来てたのかも。しかし、PCだとGmailすらなかなか開かない状態にされるとなるとそんなメール自体も確認が大変かもだし。まあ、2日放題したら1日は解除してって気を付けていくしかないかもです。

2023/10/11

System.Data.SQLite.Core Ver1.0.118での新規DB作成

 先日インストーラーが作れるようになったのでリリースモデルをビルドしてテスト用の仮想マシンにインストールしてテストを始めてます。まあ、新規にアプリをインストールして起動すれば当然ながらSQLiteのデータベースファイルを作成する様にしてあるんですが、これまで特に問題が無いと思っていましたが、まさかのデータベースの新規作成で躓きました。

ただ、グーグル先生もアイビー先生もエラーの情報は無い感じ。まあ、自分でググって諸々見ても簡単な成功例ばかりです。確かにデバッグビルドでは問題なかったと思うので皆さんリリースモデルでは既にデータベースファイルは作成されているので、リリースモデルでの新規作成をしてないのか? それとも自分が何か間違えてるのか判断出来ません。

SQLiteConnection.CreateFile(UserData.UserDataFName);
SQLiteConnectionStringBuilder sqlBuilder = new SQLiteConnectionStringBuilder()
{
    DataSource = UserData.UserDataFName
};
using (SQLiteConnection con = new SQLiteConnection(sqlBuilder.ConnectionString))
{
    con.Open();
    using (SQLiteCommand cmd = con.CreateCommand())
    {
        cmd.CommandText = UserData.USER_MARK_CREATE_TEXT;
        iReturnCode = cmd.ExecuteNonQuery();
    }
    con.Close();
}

こんな感じで新規作成してテーブルも作ったりしてるんですが、SQLiteConnectionのコンストラクター辺りで与えたパスに多分起動パスか何かをCombineしてる所でnullがって感じのエラーになるのですが、当然こちらは単純に"UserData.db"的なファイル名を与えてるのでnullではないです。試しにファイル名ではなくフルパスにしてみたりもしましたがNG。実はユーザー用と検証用のデータベースファイルを初回起動時にまあ同じ感じのコーディングで新規作成してるんですが、先のユーザー用ではエラーになり、2番目の検証用の新規作成ではエラーになりません。どこが違うのか間違い探ししてみましたがありませんでした。で、更にその後にJV-Linkからのデータ収納するデータベースも新規作成するのですがこれもやはり同じエラーが出るんです。デバックビルドでは何度もデータベースの新規作成はしてるのでコード的には問題ないと思うんです。苦肉の策で

try
{
    SQLiteConnection.CreateFile(UserData.UserDataFName);
    SQLiteConnectionStringBuilder sqlBuilder = new SQLiteConnectionStringBuilder()
    {
        DataSource = UserData.UserDataFName
    };
    using (SQLiteConnection con = new SQLiteConnection(sqlBuilder.ConnectionString))
    {
        con.Open();
        using (SQLiteCommand cmd = con.CreateCommand())
        {
            cmd.CommandText = UserData.USER_MARK_CREATE_TEXT;
            iReturnCode = cmd.ExecuteNonQuery();
        }
        con.Close();
    }
}
catch (Exception ex)
{
    try
    {
        SQLiteConnection.CreateFile(UserData.UserDataFName);
        SQLiteConnectionStringBuilder sqlBuilder = new SQLiteConnectionStringBuilder()
        {
            DataSource = UserData.UserDataFName
        };
        using (SQLiteConnection con = new SQLiteConnection(sqlBuilder.ConnectionString))
        {
            con.Open();
            using (SQLiteCommand cmd = con.CreateCommand())
            {
                cmd.CommandText = UserData.USER_MARK_CREATE_TEXT;
                iReturnCode = cmd.ExecuteNonQuery();
            }
            con.Close();
        }
    }
    catch (Exception ex2)
    {
        Debug.WriteLine(ex2.ToString());
    }
}

とすれば動いてくれます。ちょっとこの無駄なリトライコーディングをリリースビルドに入れるのは忍びないのですが、バージョンアップで修正される事を期待したいです。英語でまた報告しなきゃ改善されないかもなので報告はしようかとは思うんですが...

追記 2023/10/12
色々と調べてますが、一概にSystem.Data.SQLite.CoreのバグというよりはVisual Studio Community 2022のC#での発行時の実行形式生成時に何かしら原因があるのかもです。少なくともVisual Studio上でリリースビルドをデバッグ無しで実行するとエラー無く実行出来るのに発行してインストーラー作成してインストールしたものを実行するとエラーが発生します。リリースビルド時にはまだ.exeと.dllに分かれてたりしますが、発行すると.exeに纏められます。
予感的中!発行時のオプションに「すべての設定を表示」とあるんですが開くとプロファイル設定ダイアログが表示され「ファイルの公開オプション」を展開すると「単一ファイルの作成」というオプションが有り、これを選択しないと無数のフォルダを含めかなりの量のファイルが出来てしまい面倒に感じます。なので当たり前の様に選択する事で極力減らしてましたが、試しにこのオプション外して発行してインストーラー作成してみとるエラーが出ません。やれやれ、またMicrosoftに報告して修正してもらわなきゃです。昨日だったかVisual Studioがバージョンアップされてましたが...

2023/10/09

mineo マイピタ20GB Dプラン

 仮住まいに引越して早2週間が経ちました。いやまあ、まだ先は長いですが、ネット環境で苦労した最初の1週間でした。現在契約してるのはmineoのDプランってドコモ回線だと思いますが、会社支給のソフトバンク回線のスマホも繋がってますので、auは分かりませんが楽天モバイルは「圏外」と微妙なロケーションなんだとは思います。ドコモ回線も決して良好(アンテナ4本立ってますが)とは言えない感じで、アマプラとか半分諦めてましたが、パケット放題プラスって1.5Mbps程度に速度制限されるモードなんですが、アマプラで無事に1本見れる事が分かったので良かったです。まあ、若干ってか多分画質は落とされてると思います。

妻がテレビでYouTube見れるの?って言われて、スピード制限有りだとこんな画質で、毎月20GBまでならこんな感じで観れるよってした時には明らかに画質に違いがありました。うちはテレビもPCモニターも4Kなんですが、テレビのYouTubeでは多分4Kではない感じは見て取れました。PCでのアマプラも確かに画質が落ちた感じですが、別に気にしなければ視聴に全く支障ないです。

まだ4ヶ月は仮住まいが続きます。ゲームは諦めてってか、目の負担が深刻で、いやまあ、アマプラでも目の負担にはなるとは思いますが、ゲーム程ではないかなぁって感じで、PS5は息子にあげました。息子も子供が生まれてゲームどころではない感じでやっているのかは微妙ですが、最悪売り飛ばしても1万円位にはなるかもねって感じであげましたので、後は息子の判断に任せてます。GT7とかまだまだやりたい気持ちは有りますが、グッとこらえてアマプラで我慢してみます😉

ちょっと悩むのは、確かに光回線は快適でした。大体月に6千円程度掛かります。mineoで今後暮らすとして毎月2千円で済むんですよね。定年退職して再就職はしてますが暮らしていけるか疑問な給料です。この4千円の差は大きいので検討材料ですね。20GB→10GBプランの差は200円程度なのでそこは20GBのままでも良いのかなぁっと。ただ、ちょいちょいパケ詰まり的なのがあるのも事実で、PIXELAのルーターのリセットボタンでは全く意味がない感じで、電源のオンオフで復帰させてますが、ハードへの影響は微妙ですかね。電源のオンオフは少なからず負担だと思うのでやはり回数行うと故障のリスクは伴うかと思います。

老後ヤバいな~😖

2023/10/06

Inno Setup

やっと希望通り(?)のインストーラーが作れるツールが見つかりました。HeatWave for VS2022もMicrosoft Visual Studio Installer Projects 2022もVisual Studioからアンインストールしました。アンインストールした2つは多分どちらもアプリ自体のビルトもサポートしてたのかもですが、Inno Setupでは基本的にVisual Studioでリリースビルドを用意して(まあ、普通に当たり前にも思えますが)それがどこに出来ていてメインの実行形式とまあ付随して必要なファイル群なんかも指定して1つのインストーラーにしてくれる感じです。よく見かける使用承諾なんかもテキストファイルで用意して指定すればインストール時に表示してくれますが、最初に単にファイルを用意して作成すると文字化けしました。使用承諾のテキストファイルはエンコードとして"UTF-8 (BOM 付き)"にしなきゃなりませんでした。まあ、メモ帳で名前を付けて保存時に指定するだけなんですけどね。確か、WiX Toolsetではインストーラーがランタイムで必要なものなんかもチェックして入れるとかなんかも指定可能なのかもですが、あっ、まあ、もしかするとこのInno Setupでは可能かもですが、サラッとやってテスト用の仮想マシンにインストールして実行すると、必要なランタイムが無いよって言われて指示通りにランタイムをダウンロードして入れなきゃなりませんでした。まあでもインストールして実行まで行けたのでやれやれです。

ただ、現状で登録申請するかの判断がまだ出来ていません。アプリの出来もそうですが、もう少し機能を揃えてからリリースした方が、新規リリースで興味を持ってくれた方が「使えね~」のレッテル張られるとバージョンアップしたからってまた試してくれるかは微妙だと思う。やはり第一印象は重要かと思うので慎重に行くべきかな~っと。まあ、更にヘルプ的な部分としてサポートサイトの準備が整ってないので、その辺りもある程度出来てからかな。

苦労していたインストーラー作成はクリア出来た(実は他の方々が使っているインストーラーとは若干違うのが気にはなってます)ので、最初にインストーラーとか試してから数ヶ月以上苦労してましたのでまた1歩前進出来たのは良かった。

2023/10/05

HeatWave for VS2022

Microsoft Visual Studio Installer Projects 2022をVisual Studio Community 2022の拡張機能でインストール指示して普通に入れて自作アプリのインストーラー作成に挑む事多分今回2度目かなぁ。以前チャレンジした時も何だか思う様には行かないし、そもそもインストール出来なかったんですが、2度目なので少し学習してますので今度は完璧かなっと挑みました。もしかすると一応出来ているのかもなんですが、

  • setup.exe
  • Installer.msi
の2つのファイルが出来上がります。え?普段気になるアプリとか見つけてダウントードすると大体1個のインストーラーファイルですよね?なぜ2個?まあ、この2つをZIPでまとめてダウンロードしてもらって解凍して実行ってのもありかもですが、ちょっとそれは最終手段としておきます。

他のインストーラー作成ツールを探してみるとWiX Toolsetがある。ざっくりと眺めても、ちょっと検索しても単純なものは無いので悩んでみたものの試してみる事にしました。しかし、非常に情報が少ないのは今年の春にどうやらv4になったらしく、v3とはちょっと違う(どの程度とか把握してませんし、したくもないです)らしく、v3の記事とかはいくつかあります。

取敢えず、色んなバージョンとかもあるらしいが、無難(?)な感じというか、自分として理想的なVisual Studioへの組み入れを選択してみました。拡張機能から素直にいきなり検索に「HeatWave」と入れてみても見つからないのでマーケットの方にして再度検索すると見つかります。VSIX Installerでインストールされます。

インストールされれば当然Visual Studioからプロジェクトか作成出来ます。いくつかのテンプレートがありますが、取敢えず"MSI Package (WiX v4)"を選択してみます。

  • Package.wxs
  • Folders.wxs
  • ExampleComponents.wxs
  • Package.en-us.wxl
の4つのファイルが出来上がります。このまま単純にビルトしても一応多分空のPackage.msiが出来上がります。

追加したWiXのプロジェクトの下にある「依存関係」をマウスで右クリックして"Add Project Reference"を選択して自分のプロジェクトにチェックを入れて「OK」する。

ExampleComponents.wxs内の

<Component>
  <File Source="ExampleComponents.wxs" />
</Component>

の部分に自分のアプリの.exeファイルを指定する。

<Component>
  <File Source="SaraD.exe" />
</Component>

って感じです。これ以外でも"ExampleComponents"となっている所があるので自分のアプリ用に修正する。これで一応の設定は終りらしくビルドすれば良いって説明にはなってますが、実際にビルドしてもそもそも何故かDebugでReleaseではないし、3つもファイルが出来ます😓 まだまだ奥が深くて色々と学習しなきゃ使い切れない感じですorz

2023/10/04

仮想マシンでの設定方法が変わってた

 仮想マシンだからっていうよりは、多分ここ最近のアップデートがなのかパッチなのかは不明ですが、5月に仮想化ベースのセキュリティ(VBS)を有効にする方法について書いてたんですが、今日新たな仮想マシン(自分のアプリのインストーラーのテスト用)を用意する為に作業していて、その辺りの事を以前書いたからブログを参考に作業しちゃおうと見ながら進めてたんですが、自分が書いた事が理解出来ない位変更が有ったっぽいので再度先生方にお尋ねしてみると、アイビー先生はスタートメニューの検索バーに「コア分離」として詳細開いて、メモリ整合性のスイッチをオンにして再起動となんとなくシンプルになってました。ただ、これって本当に必要な事なのかが理解出来てないのですが、その後の作業としては[設定]>[アカウント]>[ユーザーの情報]に移動して[ローカルアカウントでサインインする]を選択すれば、後は毎度のレジストリーをいじってパスワード無しにしますよって話です。

こんなタイミング(いや、月末には23H2だと思うから)にこんな事書いてもまた変わる可能性は大だし、こんなタイミングで仮想マシンを新たにってのも微妙なんだけど、自分のアプリのインストーラーのテストを数週間待つのも微妙と判断しての作業です。どうせ問題あるだろうから諸々テストして23H2で再度テストもしますが...逆に言えば、それ以前はテストしない予定なので問題あれば最新のOSにして下さいって話ですね😅

で、まあ、実は自分のアプリのインストーラー作成してダウンロード出来る様にして、仮想マシンでダウンロードしてインストールと試みましたがNGです。インストーラーが出来上がるフォルダにはsetup.exeとInstaller.tmpと2つのファイルが有ったので、普通にsetup.exeをダウンロード出来る様にすればと判断したんですが、

って事で、何だこれ?そもそもインストーラーが別ファイルが必要とか一般的なアプリでは無いと思うんですが...勉強不足です。どこか指定ミスとかがインストーラー作成時に有ったんだと思います。

2023/10/02

現状は実戦には不向き

 約1ヶ月実戦に挑んでみましたが、惨敗です。何かが足りなんですね。モデルの学習は続けながら、やはり別の要素ってか方法なのか打開策は必要です。そもそも機械学習の知識を増やす必要はあるんだとは思いますが、簡単な話ではないので地道に続けます。

今月はPythonもバージョンが上がる予定らしいし、他の諸々もバージョンが上がるのかな?TensorFlowも何とかしたいです。今月末にはWindows11も23H2に上がるのかなぁ。自分の知識もメジャーバージョンアップ出来なきゃ多分一線超えられないので...