AIの勉強もかねて競馬予想AIを作っていたのですが、どうせならwebで公開しようかと思ったので作りました。どうせ作るなら腰が重くてやれなかったブログも始めてみたいなと思い、ブログの機能も実装しました。
これから記事を投稿し続けられたらなと思います。

AIの勉強もかねて競馬予想AIを作っていたのですが、どうせならwebで公開しようかと思ったので作りました。どうせ作るなら腰が重くてやれなかったブログも始めてみたいなと思い、ブログの機能も実装しました。
これから記事を投稿し続けられたらなと思います。
言語:typescript
フレームワーク:next.js
スタイル:tailwind、daisyUI
言語:python
フレームワーク:Django、wagtail
データベース: PostgreSQL
サーバーアプリケーション: uWSGI
ホスティング:vercel
サーバーアプリケーション:nginx
アーキテクチャは以下のようになっています。

アーキテクチャ図
nginxを経由してnext.jsとdjango間でAPIを通信を行い、得たデータを元にページを生成しています。
仕様からもわかると思いますが、基本的にpythonのDjangoサーバーで持っているデータをnext.jsがAPIを叩いて取得することでページを生成しています。
もともとAIをpythonで作っていたので、
あたりが候補でしたが一番多機能なDjangoを選びました。
CMSの機能を1から作るのはさすがにできないのでwagtailを使いました。
DjangoベースのCMSライブラリはwagtail以外にもいくつかありますが、
といった特徴があり、一番勢いがあるので選びました。
CMSの大枠部分はwagtailが用意してくれているので、
などを実装しました。
バックエンドのサーバー起動にはuwsgiを使用しています。
nextjsで作成していて、ページごとにISRとSSRを使い分けています。
ブログページは、コンテンツの更新が頻繁にあるわけではないのでISR、競馬予想ページはオッズなど最新の情報が必要なのでSSRで実装しています。
スタイル周りはなるべく楽に進めたかったので、 クラス名でスタイリングができるtailwindcssと、コンポーネントライブラリのdaisyUIも使用しています。
3着以内に入る馬を予想し、確率が高い馬を5匹選んで印を打っています。
の順で確率が高いです(△については2頭選ばれます)。
レースの1,2日前に体重と印以外の項目が反映されます。体重と印については大体レースの30分前くらいに反映されます。
ちょっと動作が不安定なところがあり、時々予想がされていないときもあるので、ここは何か対策をする予定です。
学習用データの収集からモデルの作成まで試行錯誤しながら1年ぐらいかけて作りました。
現状精度がよくないので、データ項目を増やすなりモデル自体を変えてみるなりで少しずつ精度を上げていけたらなと思っています。
作ったAIの詳細は後日記事にしようと思います。
ブログ部分も競馬予想AIも改良点がいろいろありますが、色々触って完成させる前に飽きてやめることが多かった自分としては
ということもあり、今回の開発は結構満足してます。
ブログに関しては方針もろくに定まっていないですが、とりあえず記事を書いていくのを続けるように頑張ろうと思います。