bnsgt's diary

個人的な備忘と日記

エア予想 競馬シミュレーター作った

web職人のためのphpフレームワークことLaravelの勉強を兼ねて、何か簡単なWEBアプリを作ってみたいと思い、作ってみた。

play-keiba.x0.com

経緯

せっかくなので、自分の興味あることでかつ、あったら便利かなと思えるものにした。 自分はパチンコや宝くじなどは一切やらずむしろ嫌いで、でもたまに息抜きで少額掛けて競馬を楽しむライトな競馬ファンなのですが、競馬の良いところって、以下が挙げられると思う。

  • 自分なりに予想する楽しさがある。
  • 週末のお昼しかやっていないプレミアム感(※地方競馬除く)
  • 非日常なだだっ広い空間がレジャー感があってステキ。開催していない競馬場にいくのも人少なくておすすめ
  • レジャー感があるから売店のご飯も美味しく感じる。おすすめは京都競馬場のカレー味のキャベツが入ったホットドッグ
  • 第4コーナー曲がったあたりからの高揚感。これが1番で、今この瞬間に没頭することが出来て嫌なことや月曜からの仕事等もこの瞬間は忘れられるので息抜きにはもってこいだと思う。

でも中には生活に困窮するくらいブッ込んじゃって、本当は辞めたい人も一定数いて、馬券の収支を把握して、「年間これぐらい損している。。」ってのが、わかったり、自分みたいにあんまりお金は使いたくないけど、競馬中継をみてドキドキを味わいたい人が一定いそうってことで、競馬のエア予想アプリにした。

説明

  • 馬券を登録するだけで、当たりの判別や配当を自動で計算してくれます。
  • 会員機能はメールアドレスの他にOAuthにより、GoogleTwitterFacebookでもログイン可能。
  • レース情報(購入時&払い戻し時)については、GoutteとCRONを利用し競馬情報サイトからバッチ処理でWEBスクレイピングしています。
  • 購入画面のフロントはReact.jsとaxiosで、Laravelで作ったAPIに対してget/post処理をしています。 エア予想

使用した技術

  • Laravel
  • OAuth
  • Goutte
  • CRON
  • MySQL
  • React.js
  • axios

苦労した点

どこから開催情報と結果情報を取ってくるか

管理画面からの都度入力とかだと地獄オペレーションなので、jsonとかで配信してくれるAPIとかあればそれを使いたかったけど、LAMP環境ですんなり使える良さげなのが無かったので、競馬情報サイトからの定期バッチWEBスクレイピングでの対応とした。

ボックス買い、フォーメーション買い

一点買いでのアタリ判定は割りとすんなり実装出来ましたが、ボックス買いとフォーメーション買いは地味にややこしかった。 データベースのテーブルに画面には表示されないアタリ判定用のカラムを追加することで解決。

得たこと

  • laravelでのデータベースのCRUD操作
  • OAUTHで会員機能の構築方法

会員機能はサービス作りに必須なので学べてよかった。 他にも要件満たすために、色々試行錯誤したけど、このような方法はアクティブラーニング(能動的学習)といって、自発性や問題解決能力が上がるらしいので、今後も時間を見つけて何かしらWEBアプリなんかを作ってみたいと思いました。(できれば一山当てたい、、!!)