Ruby on RailsでLINE Bot① csvファイルからのデータ投入
4月くらいからRuby on RailsでLINE Botをつくっています。いろいろと手探りです。
しふみんさんのブログを参考にさせていただいております!(感謝🙏🙏🙏)
どんな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曲ずつ登録なんてとてもやってられない……と思って調べていると下記の記事にたどり着きました。
csvデータを読み込んで、1行ごとにデータがいれられる!?すごく便利!
herokuにデプロイして、rake db:seedしました。
あとは「DDRぼ」の後の数字があれば同じレベルの譜面がある曲をとってきて、そのなかからランダムで返します。数字がない場合、または難易度としてありえない数字の場合、すべての行のなかからランダムで返します。
Array.sampleも学びました。便利だ。