東京03メンバーがそれぞれ輝いているコントをファンが勝手に選んでみた

# 3人全員が主役になれる
東京03のコントは、飯塚さん、角田さん、豊本さんのだれがメインとなってもコントが成り立ち、当たり前のように面白くなるトリオであるということは周知の事実だ。
東京03ド級のファンである私はたまに、飯塚さんが高らかと声を上げているコント、角田さんが必要以上に頑張っているコント、豊本さんが狂気染みているコント、のような誰かが主役となっているものを見たくなることがある。
メンバーの名前を入力しただけで、その人が主役であるコントがすぐに見れたらなんて幸せなのだろう。

そんな願いを叶えるべく、メンバーの名前を入力するだけで、入力されたメンバーが主役となっているコントを返すLINEBotを作成した。
完成したものがこちらだ。

https://twitter.com/Yuki_Tamura_85/status/1584597457467453441

結果としては、メンバー1人につき1つのおすすめ動画を返すような内容となった。
かわいい。

# 使用したもの
・Node-RED（Heroku上）
・YouTube DATA API
・LINE messaging API

# 開発したフロー
Node-REDのフローは下記の通りである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885795/b7659be9-e385-f126-b869-65c887061f8b.png)

フローをJ-SON形式で書き出したものは下記の通りである。
```
[{"id":"e646b86b91ba3b13","type":"Webhook","z":"1a55500101def5a5","name":"","url":"/webhook","x":140,"y":260,"wires":[["699f2c79e467699c"]]},{"id":"0ce709559f740c94","type":"ReplyMessage","z":"1a55500101def5a5","name":"","replyMessage":"","x":1300,"y":260,"wires":[]},{"id":"19ca69c6f416efad","type":"function","z":"1a55500101def5a5","name":"","func":"msg.payload = '角ちゃんのこと嫌いにならないでね'+'https://www.youtube.com/watch?v=7b33Fk_3Qu0';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":180,"wires":[["0ce709559f740c94"]]},{"id":"699f2c79e467699c","type":"switch","z":"1a55500101def5a5","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"角田","vt":"str"},{"t":"cont","v":"飯塚","vt":"str"},{"t":"cont","v":"豊本","vt":"str"},{"t":"cont","v":"俺","vt":"str"},{"t":"cont","v":"私","vt":"str"},{"t":"cont","v":"僕","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":7,"x":290,"y":260,"wires":[["43149a15ff7e7e5e"],["e2696e970fbebf22"],["1c1f6fb285cbe792"],["6656b0baab150830"],["6656b0baab150830"],["6656b0baab150830"],["dc3953da48216c7e"]]},{"id":"e2696e970fbebf22","type":"http request","z":"1a55500101def5a5","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://www.googleapis.com/youtube/v3/search?part=id,snippet&q=\"スマイルハウジング\"&type=video&channelId=c/Tokyo03&key=AIzaSyAHHKDS_tpRf8-t0hICxGW9DXsvOBwZ5Ao","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":570,"y":260,"wires":[["b5dd400310138c6c"]]},{"id":"43149a15ff7e7e5e","type":"http request","z":"1a55500101def5a5","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://www.googleapis.com/youtube/v3/search?part=id,snippet&q=\"スマイルハウジング\"&type=video&channelId=c/Tokyo03&key=AIzaSyAHHKDS_tpRf8-t0hICxGW9DXsvOBwZ5Ao","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":570,"y":180,"wires":[["19ca69c6f416efad"]]},{"id":"1c1f6fb285cbe792","type":"http request","z":"1a55500101def5a5","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://www.googleapis.com/youtube/v3/search?part=id,snippet&q=\"トヨモトのアレ\"&type=video&channelId=c/Tokyo03&key=AIzaSyAHHKDS_tpRf8-t0hICxGW9DXsvOBwZ5Ao","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"x":570,"y":340,"wires":[["26ffc8ed7f78f802"]]},{"id":"26ffc8ed7f78f802","type":"function","z":"1a55500101def5a5","name":"","func":"msg.payload = 'かわいそうだけど豊もっちゃんはこれなんだよね'+'https://www.youtube.com/watch?v=jIhTwXqUDwU';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":340,"wires":[["0ce709559f740c94"]]},{"id":"b5dd400310138c6c","type":"function","z":"1a55500101def5a5","name":"","func":"msg.payload = '飯塚さんは声が高ければ高いだけいい'+'https://www.youtube.com/watch?v=wZSxXYqm4ik';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":260,"wires":[["0ce709559f740c94"]]},{"id":"dc3953da48216c7e","type":"template","z":"1a55500101def5a5","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"東京03の名前の由来って、3人ってことと、2003年に結成したことと、東京23区の市外局番なんだって！くぅ～","output":"str","x":560,"y":500,"wires":[["d45122a7af43ad95"]]},{"id":"d45122a7af43ad95","type":"ReplyMessage","z":"1a55500101def5a5","name":"","replyMessage":"","x":840,"y":500,"wires":[]},{"id":"6656b0baab150830","type":"template","z":"1a55500101def5a5","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"君が入って東京04にでもなれると思ってる？甘くない？？","output":"str","x":560,"y":420,"wires":[["9a6569012685c896"]]},{"id":"9a6569012685c896","type":"ReplyMessage","z":"1a55500101def5a5","name":"","replyMessage":"","x":840,"y":420,"wires":[]}]
```

今回は、switchでの分岐は下記の7つとした。

・飯塚（contains）
・角田（contains）
・豊本（contains）
・俺
・私
・僕
・その他

上段のフローは、東京03それぞれの名前を含んだ形で入力された場合に分岐するフローである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885795/c01e0a08-175e-6cf6-e12e-2bd05a0a708f.png)

同様に下段のフローは、一人称もしくはその他のワードで入力された場合に分岐する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885795/d4f53f7d-04b7-06e1-af64-bf0be2f123fb.png)

# 実装した感想
正直なところ、技術が追い付かずやりたいことができない部分が多々あった。
例えば、メンバーの名前を入力した後に、具体的にその人がどのように活躍しているコントを見たいのかをユーザーが選択肢形式で返信し、選択されたほうに合致するような動画を返すような内容だ。
そうすることで、より見たいものが結果として返ってくることになり、満足度も上昇する。
また、一度に複数の動画を返すという部分も実装できれば、より広がりを持たせることができたと感じる。

やるせない部分が多く残る実装だったが、スキル習得後再チャレンジすることとする。