Edited at

サイゼリヤ1000円ガチャをつくってみた(Heroku + Flask + LINEbot)

Progateを一度やった程度のプログラミング初心者ですが、

何かWebアプリケーションを作りたいなぁと思い、Flaskを学ぶついでに

サイゼリヤのメニューから1000円以内で組合せを出してくれるガチャを作りました。

(*2019.04.01追記 2018.9月時点のグランドメニューのみとなります。メニューの更新に対応する予定はございません)


2019.5.10追記

Twitterで紹介頂いたようで、たくさんの方から反応を頂いていてびっくりしております!

メニューが古いままだと、何かと店舗側にもご迷惑をおかけしそうだったので、

本日時点でのグランドメニューに更新させていただきました。

非公式であることをご了承の上、店舗ではマナーを守って楽しんで頂ければ本望です!

(たくさん注文して食べ残す・・・などが起こらないことを祈ってます)

また、Tweetボタンやガチャ条件を絞る機能など、諸々ご意見いただきましたので

参考にしながらゆったり実装できたらな、と思っていますのでよろしくお願いいたします。


できたもの


Webアプリ

サイゼリヤ1000円ガチャ


LINEbot

上限50人のプランなので、登録できないかもしれません。

内容はWebアプリ版と同じです。

友達に追加

結構意外な組み合わせでも1000円以下で、改めてサイゼコスパ高!ってなりますね。

どちらもHeroku無料枠でデプロイしているのでアクセスに時間がかかるときがあります。

(30分でスリープしてしまうため)まぁ非公式なのでお楽しみ程度ということで。


モチベーション

Webアプリ作成の勉強のためにFlaskとSQL使ってみたかった。

LINEbotはちょこちょこ使っていて、インターフェースとして良いなぁと感じていたので

データベースを使って何かをするbotで簡単なもの、ということでガチャかなと。

なんでサイゼリヤかというと、単純に好きだからっていうのもあるんですが、

けっこう「サイゼリヤで何を頼むか」っていうのがネット記事でもネタになってるんですよね↓

実用性+ネタで面白そうだと感じたためです。

参考

* 【対決】とにかく周りをビビらせろ!「サイゼリヤ通ぶり選手権」!

* 「サイゼリヤ」で1人千円以内で完璧に飲むための極楽メニュー【ヒョイ飲み】

* 【せんべろ企画】千円握りしめて「サイゼリア」で飲み会してみた


使ったもの


  • Heroku

  • LINE Messaging API

  • Flask

  • SQLAlchemy(SQLite)

ソースコードはgithubに置いてあります。

メニューはグランドメニューで100種類ちょっとなので手打ちでcsv→dbに入れました。

本当は勉強がてらスクレイピングしたかったんですが、画像データだったので・・・。


参考にしたページ

:star: Flask チュートリアル

めちゃくちゃ参考にした。

一度通してやるだけで掲示板的なWebアプリを作れます。

SQLAlchemyの使い方やHerokuへのデプロイまで解説してくれています。

また、SQLの叩き方などは以下を参考にしました。

* 【PythonのORM】SQLAlchemyで基本的なSQLクエリまとめ

* カラムに格納された値のデータ型の確認

HerokuとLINEbotの繋ぎこみはこちら

* LineBot(MessageApi)を試してみる-heroku版


感想

初心者でもこんなに簡単につくれるんだ!と思いました。

特にHerokuやLineAPIなどのインフラがあるおかげで、Pythonのコードを少し学ぶだけで

ある程度形にできるちゃうところが凄い。

ガチャで出たメニューを実際に頼んでみた、みたいな人が現れるといいな笑