Java8のStream覚えるためにネタとしてロト6の過去データから次回当選予想+Linebotで通知やってみた
データを関数型言語(Scala)でごにょごにょする系のことを今仕事で携わらせてもらってるので、Java8のStreamではどうやって書くんだろ?と、ふと興味を持ちました。
ただコピペするだけじゃつまらんということで、何かやる気が出るネタはないかなーと思っていたところ、ありました。宝くじです。
しょっちゅう買ってるんですが、なかなか当たらないので、過去のデータを使って予想とかできないかな?と思い始めたのです!
ここには詳しく書くつもりはないのでひとまず、作ってみたソースを公開してみました!
github.com
ざっくりと流れを書くと、
loto-dataプロジェクト
- みずほ銀行さんのロト6の結果ページをスクレイピングする
- そのデータを軽量のDBであるH2に溜め込んでいく(みずほさんのwebサイトは1年以上前の詳細データがどんどん消えてってしまうため)
- そのデータをjava内で簡単に扱えるようにRepositoryオブジェクトというMapを作る
loto-data-apiプロジェクト
- LineBotからのリクエストやブラウザからのリクエストを受け取れるようにする(こちらのページline-bot-sdk-java で chat bot - Qiitaをとても参考にさせていただきました。)
- リクエストに応じて上記loto-dataライブラリのRepositoryオブジェクトを使って、データを絞ったり加工したりする
- Stream操作を体に染み付くまで嫌という程に使いまくって!予想を行う!
- その結果をLineやブラウザに返す
- これをAWSにデプロイする(Lineがhttpsじゃないとダメなので、Let's Encryptなどを使ってhttps化するのがミソ)
とまぁこんな感じです。
そんなこんなで完成したLinebotの「ロングボ君」でございます!
(※やべーかなーやべーかなー写真とか勝手に使うの)
↓↓↓もしよければ以下のQRコードをLINEで友達追加してみてくだされ↓↓↓
会話で過去結果とか次回予想とかしますよ。
でね、結論としてはね、まじで当たらない笑
良い子はこんなくだらないことに時間を使っちゃダメよ。
引用:https://www.mizuhobank.co.jp/takarakuji/loto/loto6/index.html