スクリーンショット_2019-09-06_19

しりとりLINEボット紹介【おまけ:コード掲載】

フリーランスでライターやエンジニアなどやってるベナオと申します。

最近はLINEボットをいじくり回して遊んでる人になってます。アプリ開発より手軽で、自由にそれっぽいプロダクトが出来上がるのがおススメポイントです。

今回はそんなLINEボットの中でも僕の作成したしりとりで遊べるボットができた経緯をお話しして、おまけにコードを載せておくのでよければご覧ください。

「プログラミングなんてまどろっこしいもん興味ねえよ」

って人は途中まででいいので読んでってください。

エンジニアに興味のある人にも参考になるように書いてみました。

1. しりとりLINEボット誕生前夜

大した準備もせずにフリーランスの荒波へと飛び出した僕ですが、最初は外注のライターの仕事をしていました。

プログラミングの記事を書いていたのですが、ネットのトレンドに合わせて記事を書いているとどうしても新しい知識が必要なので調べながらの作業になるわけです。

そこで覚えたのがLINEボットの作り方です。

LINEはAPIというアプリの内部システムに繋がるボタンのようなものを、基本無料で公開しているので、それを利用して自由にボットを作ることができます。

「これ使えば色々作れそうだな」

と思ったわけです。

けれどなんでも作れると言われると、それはそれで困るものです。

そこで、知り合いとの何気ない会話で聞いてみることにしました。

「なんか面白いボット考えてよ」

しりとりボットとかいいんじゃない?」

「天才かよ!」

しりとりがなぜ良いのか。それは以下の通りです。

①しりとりは日本人なら誰でも知っている普遍的なゲーム(前提知識を持っている人が多い)

②ググって出てくる範囲で似たことをしてる人があまりいない(競合が少ない)

③遊んでるところを動画にするとSNSで反応が良さそう

マーケティング的に考えてものを作ると、ネットで褒めてもらえるのでおすすめです。

というわけで黙々とMacBookと格闘すること1週間。

できました。

2. しりとりLINEボット大紹介

こんな感じで可愛いJKとしりとりで遊べます! 楽しい!!

現在はひらがなのみに対応しています。

画像1

下のQRコードを保存してLINEのQRコードリーダーで、「ライブラリから読み込む」で選択するとボットで遊べるのでぜひどうぞ!!

PCで見てる方はそのままスマホのカメラでどうぞ!!

画像2

せっかくなので個人的に頑張ったポイントを自慢させてください。

画像3

ちゃんと「ん」がつく言葉が入力されると負けになります。

JKのドヤ顔が見えてくるようですね。

画像4

一定の確率でボット側で負け判定が起こり、「ん」が付く単語が飛び出してちゃんと負けます。ゲームですから勝てないと楽しくないですからね。

負けるJKも可愛い。

画像5

ちゃんと同じ文字からでも色々な単語を返してきます。500単語くらい僕が手動で頑張って入れました。これが1番しんどかった。

いかがだったでしょうか?

少しでも気になったらぜひ友達登録して遊んでみてください!!

3. しりとりLINEボットコード公開

作成に使ったのはMessagingAPIGAS(Google Apps Script)です。

LINE Developersの設定やGASの使い方は、こちらの記事をご覧ください。

まずGoogleスプレッドシートに、下のようなしりとり単語リストを作成します。

画像6

画像7

右側が少し見切れていますが、実際は単語10まで用意してます。この単語を増やせば増やすほど、ボットのボキャブラリーが豊富になります。

メニューの「ツール」→「スクリプトエディタ」でコードが入力できる画面になります。

そこで以下のコードをコピペしてください。

var ACCESS_TOKEN = '《アクセストークン》';
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var TEXT_MESSAGE = '';
var DefeatDetermination = Math.floor(Math.random() * 20);

function doPost(e) {
 // WebHookで受信した応答用Token
 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
 // ユーザーのメッセージを取得
 var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
 // 応答メッセージ用のAPI URL
 var url = 'https://api.line.me/v2/bot/message/reply';
 
 for(var i = 2; i <= lastRow; i++) {
   if(userMessage.slice(-1) == 'ん') {
     TEXT_MESSAGE = 'んがつきましたよっ。私の勝ちですね! 次も勝ちますよ〜 しりとりの「り」です!'
   } else if(DefeatDetermination == 2) {
     for(var i = 2; i <= lastRow; i++) {
       if(userMessage.slice(-1) == sheet.getRange(i, 1).getValue()) {
         TEXT_MESSAGE = sheet.getRange(i, 2).getValue() + ' ・・・ああっ、「ん」がついてしまいました・・・。私の負けです・・・。 次は勝ちますよ〜 しりとりの「り」です!'
       }
     }  
   } else if(userMessage.slice(-1)
    .replace(/が/g, 'か')
    .replace(/ぎ/g, 'き')
    .replace(/ぐ/g, 'く')
    .replace(/げ/g, 'け')
    .replace(/ご/g, 'こ')
    .replace(/ざ/g, 'さ')
    .replace(/じ/g, 'し')
    .replace(/ず/g, 'す')
    .replace(/ぜ/g, 'せ')
    .replace(/ぞ/g, 'そ')
    .replace(/だ/g, 'た')
    .replace(/ぢ/g, 'ち')
    .replace(/づ/g, 'つ')
    .replace(/で/g, 'て')
    .replace(/ど/g, 'と')
    .replace(/ば/g, 'は')
    .replace(/び/g, 'ひ')
    .replace(/ぶ/g, 'ふ')
    .replace(/べ/g, 'へ')
    .replace(/ぼ/g, 'ほ')
    == sheet.getRange(i, 1).getValue()) {
   var row = Math.ceil(Math.random() * (lastColumn-2)) + 2;
   TEXT_MESSAGE = sheet.getRange(i, row).getValue()
 }
} 

 UrlFetchApp.fetch(url, {
   'headers': {
     'Content-Type': 'application/json; charset=UTF-8',
     'Authorization': 'Bearer ' + ACCESS_TOKEN,
   },
   'method': 'post',
   'payload': JSON.stringify({
     'replyToken': replyToken,
     'messages': [{
       'type': 'text',
       'text': TEXT_MESSAGE,
     }],
   }),
   });
 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

《アクセストークン》には、LINE developers で取得したアクセストークンをコピペしてください。先ほど貼ったGASの記事に説明があります。

コードのWebへのアップロードについても、そちらの記事を参考にしてください。

全ての工程を終えるとGoogleのサーバー上にアップしたボットにLINEからアクセスできるようになり、LINEアプリ上で遊べるようになります。

不明な点はお気軽にTwitterからお尋ねください! @benao_blog

ここまで読んでいただきありがとうございます!

少しでも面白かったという方はTwitterでシェアお願いします!

サポートは料理好きなのでの食材費にさせていただきます。