概要
現役プロ野球931名(2020/8/14現在)のプロフィール&今年度成績を教えてくれるLINE botを作ったという話。
経緯
自分はプロ野球が好きです。
野球を見てると、自分や相手チームの選手の成績や出身高校が知りたくなる時がありました。
ただ、気になった選手の情報を欲しいときにすぐに入手するのは意外に難しいです。
- 選手名鑑の本だと、前年度成績しか載ってない…
- 速報アプリだと、調べたい選手の情報にたどり着くのに時間がかかったり、欲しい情報に対して情報過多だったりする…
- チームと背番号しかわからない選手だと、調べること自体が難しい…
そんな中、1年ほど前にBリーグの選手情報を返すLINE Botを作った の記事を拝見しました。
- 普段から使っているLINEが選手名鑑になる! 本を取り出さなくてもいい!
- 出てくる情報がシンプルで、欲しい情報が一目瞭然!
- 選手名が分からなくても、チーム名と背番号だけで調べられる!(これが一番うれしいかも)
こんなツールがプロ野球にもあったらいいな と思ったのが開発経緯です!
プロ野球選手名鑑bot
色々試行錯誤して、こんなのできました!
使ってみたい方はこちらからご自由にどうぞ!
※ちなみに、botが誰と友達かとかは自分からは一切分からないので安心してご利用ください。
機能
以下がシステム構成図です。
ざっくりいうと、以下の動作です。
- NPBウェブサイトから1日1回、現役プロ野球全選手データを取得してDBに格納
- LINE-botからWebhookリクエストがあったら、DBから選手データを引っ張ってLINEに表示
コードや機能詳細は、Github (suibari/NPBmeikan_bot) を参照ください!
ふりかえり
Keep
- Promiseクラスを使った同期処理にTryできた
- SQLを基本情報で勉強して以来使えた。手を動かすことでSQLインジェクションの攻撃原理と対策方法が理解できた
- heroku postgresで人生初のDB構築できた
- heroku schedulerを初めて使ってcronっぽいことができた
- LINE flex-messageを使って、LINE上の見た目を工夫できた
- 既存の異体字検索アルゴリズムを組み込めた
Problem
- 機能分割的に綺麗じゃない
- コードが汚い。Don't repeat yourself の原則を守りたい。例えば、request→cheerio→Xする の処理は何度も出てきてるので、Xを引数でコールバック関数にするとか
- 野球に詳しくないと、数字を見ただけではどういう選手かは分からない。誰にでもわかりやすい情報を提供することはできていない
Try
- 機能分割
- リファクタリング。同じ処理を関数化・クラス化してまとめる
- どういうタイプの選手なのか、成績から評価コメントを生成する? ランダムに生成できたらすごい楽しそう
まとめ
LINE bot楽しい!
特にflex messageで見せ方を変えられるのは楽しいです。今後も色々なbotに応用できるかも。
もしご意見ご質問、ここが詳しく知りたいなどありましたらぜひコメントください。