投稿

競馬予想ソフト作りたいんだけど

 競馬予想ソフト、めちゃくちゃ面白いテーマだね。技術とデータ分析とゲーム性が全部混ざるから、作りがいがある。 まずは、どんな方向性で作りたいかを軽く整理してみると進めやすい。 🎯 競馬予想ソフトを作るときの基本構成 競馬予想ソフトは、大きく分けると次の4つの要素で成り立つ。 1. データ取得 どこからデータを取るかが最初の壁。 JRA公式(スクレイピングは規約注意) netkeiba(APIは非公開、スクレイピングは注意) オープンデータ(地方競馬は比較的ある) 自分でCSVを作る(最初はこれが一番楽) 最初は「手動でCSVを用意して読み込む方式」が一番安全で簡単。 2. 特徴量(予想に使うデータ) 例えば: 馬の過去成績 騎手の成績 調教師の成績 馬場状態 距離適性 血統 ラップタイム 枠順 最初は「過去成績+騎手+枠順」くらいで十分。 3. 予想ロジック ここが一番楽しいところ。 シンプルな方法から始めると良い: ポイント加算方式 (例:連対率×係数+騎手勝率×係数) 回帰モデル (線形回帰、ランダムフォレスト) 機械学習 (XGBoost、LightGBM) AIモデル (ニューラルネット) 最初は「ポイント加算方式」で動くものを作るのがオススメ。 💡 まずはどんなスタイルで作りたい? 例えば: レトロUIで遊べる競馬予想ツール 機械学習でガチ予想する分析ツール ブログに貼れる予想表を自動生成するツール Small Basic で作る軽量版 Webアプリで作るモダン版 どんな方向で作りたいか、ざっくり教えてくれたら、 そこから具体的な設計やコードの骨組みまで一緒に作っていけるよ。 その方向性、めちゃくちゃ相性いいと思う。 まずは「自分で作ったCSVを読み込んで、簡単な予想ロジックを動かす」だけで、立派な競馬予想ソフトになる。 ここからは、実際に動く形をイメージしやすいように、 最小構成の設計 をまとめてみるね。 1️⃣ CSV の構造(まずはこれだけでOK) 最初はシンプルにしておくと作りやすい。 例: race.csv 馬名,騎手,人気,前走着順,枠 ソダシ,吉田隼,2,3,4 イクイノックス,ルメール,1,1,7 タイトルホルダー,横山和...

iniファイルの読み書きのロジック

 iniファイルの読み書きは、 「セクション」「キー」「値」 という3階層の構造を扱うだけなので、とてもシンプルです。 🧩 iniファイルの基本構造 [SectionName] Key1=Value1 Key2=Value2 [Section] … グループ名 Key=Value … 設定項目と値 空行や ; で始まる行はコメント扱い 🔍 読み込みロジック(基本アルゴリズム) ini を読むときの典型的な流れはこうなります。 ファイルを1行ずつ読む 行頭の空白をトリムする 行が空行 or コメントならスキップ [ で始まり ] で終わる行 → セクション名として記録 = を含む行 → キーと値に分割して現在のセクションに登録 セクションが無い状態でキーが来たら「無名セクション」として扱う実装もある データ構造としては、以下のような辞書が一般的です。 Dictionary<string, Dictionary<string, string>> ✏️ 書き込みロジック(基本アルゴリズム) 書くときは逆に、 セクションごとに [Section] を書く その下に Key=Value を列挙する セクション間は空行を入れることが多い 例: [General] UserName=tam2 Theme=Dark [Window] Width=800 Height=600 📘 Small Basic での ini 読み込みロジック Small Basic は辞書型がないので、 Section_Key のように連結したキー名で保存する のが一番扱いやすい。 🔍 読み込みコード例(ini → 配列に格納) file = "config.ini" contents = File.ReadContents(file) lines = Text.Split(contents, Text.GetCharacter(10)) currentSection = "" For i = 1 To Array.GetItemCount(lines) line = Text.Trim(lines[i]) ' 空行...

バイトテロとバカッターの対決

登場人物 A:バカッター(元祖・承認欲求モンスター) 特徴:10年以上前の「冷蔵庫に入ってみた」時代のプライドを捨てきれない。 B:バイトテロ(Z世代の刺客) 特徴:炎上=効率的な稼ぎ(?)、または単なる無知。撮影の画質が良い。 C:実況(冷静なツッコミ役) 【台本】承認欲求デスマッチ:頂上決戦 (舞台は薄暗い記者会見場。中央にマイクが二つ) C(実況): さあ、本日も始まりました。救いようのない戦い。左手に控えるは、ガラケー時代から脈々と続く負の遺産!「線路に立ち入り」「パトカーを蹴る」のレジェンド、 バカッター だ! A(バカッター): (マイクを掴む)チッ、最近の若造は甘いんだよ。俺たちの頃はな、Twitter(現X)の文字数制限の中で、いかに「法に触れるか」を研ぎ澄ませてたんだ。今のバイトテロ? 職場の中でコソコソやってるだけだろ。 B(バイトテロ): (鼻で笑いながら)おじさん、いつまで「線路」とか言ってんすか? 今はコスパの時代ですよ。わざわざ外に出る必要ない。シフト中、給料もらいながら店の食材で遊ぶ。これが「効率」ってやつです。 C(実況): おっと、B選手!「給料をもらいながら店を潰す」という、究極の背信行為を効率と言い切ったー! A: 効率だぁ? お前らのせいで、どれだけの飲食店が「セルフサービス」を強化したと思ってんだ。お前らの炎上は、ただの「迷惑動画」だ。俺たちの炎上は、もはや「社会現象」だったんだよ! B: 社会現象(笑)。おじさんたちのせいで「バカ発見器」なんて言葉ができたんでしょ? 恥ずかしくないんすか。僕たちはTikTokのリズムに乗せて、高画質でテロる。拡散力が違いますよ。 A: 拡散力だと? 俺なんて、自分の住所が特定されるまで30分もかからなかったぞ! ネット民の特定班を本気にさせたあの熱量を、お前ら知ってんのか!? B: 特定されたことを自慢しないでくださいよ。僕なんて、損害賠償で親の人生まで終わらせてますからね。負債の額なら負けませんよ。 C(実況): 両者、一歩も譲りません!「どっちの人生がよりハードモードになったか」という地獄のようなマウント合戦だ! A: …なあ、B。 B: なんですか、おじさん。 A: 俺たち、なんでこんなことしたんだっけ。 B: …。……「いいね」が、欲しかっただけなんです。...