7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HerokuAdvent Calendar 2020

Day 20

プロ野球選手のリアルタイム成績を返すLINE botを作った(LINE bot+heroku)

Last updated at Posted at 2020-08-14

概要

現役プロ野球931名(2020/8/14現在)のプロフィール&今年度成績を教えてくれるLINE botを作ったという話。

経緯

自分はプロ野球が好きです。

野球を見てると、自分や相手チームの選手の成績や出身高校が知りたくなる時がありました。
ただ、気になった選手の情報を欲しいときにすぐに入手するのは意外に難しいです。

  • 選手名鑑の本だと、前年度成績しか載ってない…
  • 速報アプリだと、調べたい選手の情報にたどり着くのに時間がかかったり、欲しい情報に対して情報過多だったりする…
  • チームと背番号しかわからない選手だと、調べること自体が難しい…

そんな中、1年ほど前にBリーグの選手情報を返すLINE Botを作った の記事を拝見しました。

  • 普段から使っているLINEが選手名鑑になる! 本を取り出さなくてもいい!
  • 出てくる情報がシンプルで、欲しい情報が一目瞭然!
  • 選手名が分からなくても、チーム名と背番号だけで調べられる!(これが一番うれしいかも)

こんなツールがプロ野球にもあったらいいな と思ったのが開発経緯です!

プロ野球選手名鑑bot

色々試行錯誤して、こんなのできました!

image

使ってみたい方はこちらからご自由にどうぞ!
友だち追加
※ちなみに、botが誰と友達かとかは自分からは一切分からないので安心してご利用ください。

機能

以下がシステム構成図です。

npbmeikan

ざっくりいうと、以下の動作です。

  1. NPBウェブサイトから1日1回、現役プロ野球全選手データを取得してDBに格納
  2. 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に応用できるかも。

もしご意見ご質問、ここが詳しく知りたいなどありましたらぜひコメントください。

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?