Ruby on RailsでLINE Bot① csvファイルからのデータ投入

4月くらいからRuby on RailsLINE Botをつくっています。いろいろと手探りです。

shifumin.hatenablog.com

しふみんさんのブログを参考にさせていただいております!(感謝🙏🙏🙏

 

どんなBot

  • 何か特定の機能をするBotではなくて、家庭内や友人同士のLINEグループにいれておはなしできるものを想定しています。
  • Botにペットの名前をつけるなどすると、ペットとおはなししている気分になれるかなと思っています。)
  • 決まった単語に反応して、メッセージを返してくれます。

現在実装されている機能の例

おはよう→「おはよう!」
つかれた→「おつかれさま!」
hoge fuga どっちにしよう?→「hogeにしよう!」または「fugaにしよう!」(ランダムで返答)
○○(Botの名前)ありがとう!→「どういたしまして!」

 

今回実装した機能

DDRぼ”機能

(「DDRぼ」と発言すると、KONAMIアーケードゲームDanceDanceRevolutionの収録曲の中からランダムで曲を提示してくれる機能)

Dance Dance Revolution - Wikipedia

DDRって何?と聞かれて説明すると「昔流行ったやつ!」とよく言われるゲームです。(今も現役ですよ!)曲にあわせて上下左右の矢印をふむだけでダンスができるあのゲームです。

 

実装の背景

音楽ゲームをやらない方には全く刺さらないかもしれないのですが………。

ゲームセンターに行って音楽ゲームをやると、収録曲がものすご~~~くいっぱいあるのです。もちろん好きな曲をやるのもよいですが、いつも同じ曲ばかりやっているな~とか、たまには違う曲をやりたいな~というときに、ランダムで曲を提示してくれると便利!ということで、実装を試みました。

ちなみに、音楽ゲームには難易度があり、同じ曲でも複数種類の難易度の譜面が遊べます。人によって上手さが違うので、難易度を指定すると、その難易度が含まれている曲がヒットするようにします。

データ例

曲名“曲A” 難易度 “3/9/10/17”

曲名“曲B” 難易度 “5/6/10/15”

発言と返答例

DDRぼ10 →曲Aか曲Bをランダムで返す

DDRぼ15 →曲Bを返す

 

やったこと・学んだこと

DDRsongテーブルを作った。しかしテーブルへの実際の曲情報はどうやって登録すればいいのだろう?1曲ずつ登録なんてとてもやってられない……と思って調べていると下記の記事にたどり着きました。

rake db:seedを使ったデータの投入

csvデータを読み込んで、1行ごとにデータがいれられる!?すごく便利!

herokuにデプロイして、rake db:seedしました。

あとは「DDRぼ」の後の数字があれば同じレベルの譜面がある曲をとってきて、そのなかからランダムで返します。数字がない場合、または難易度としてありえない数字の場合、すべての行のなかからランダムで返します。

Array.sampleも学びました。便利だ。

 

その他

  • 今はBotに勝手に”ポンタ”と名付けて、ポンタと会話している気分になっています。(危ない人だと思わないでください)(個人的なBotなので許してください)
  • 運動不足解消のためにDDRをやっていきたいと思います。(楽しく運動できるのでオススメです)
  • スクレイピングというものをやってみたいです。
  • 家族や友人との会話の中で、ちょっとしたことをLINE Botに決めてもらうのはとても楽しいです。