フードコートで必ず見る”アレ”を再現するWebアプリを作りました

フードコートの”アレ”をスマホで再現できるアプリを作りました。

https://tools.ic731.net/food_court

[クソアプリ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/kuso-app)の**11日目**です。
# アプリについて
皆さんフードコートって行ったことありますか？ありますよね(強制)
イオンモールなどの一区画に多くの飲食店が出店しているやつです。銀だこ、丸亀製麺、リンガーハット、オムライス、ビビンバ、クレープ、アイス…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/c0a5d997-7118-2927-166f-77249afe44e0.png)
そんなフードコートですが”アレ”見ますよね？
…そう。**食事ができたことを知らせるブザー**です。(以下いらすとや様画像)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/4496771c-4478-5696-988a-b3ae00165519.png)
そんなフードコートのブザーを**スマホで何時でも使えるWebアプリを作った**のでアドカレでご紹介します！
## 使い方
以下のURLにアクセスして、あとは**右下の再生ボタン▶を押すだけ**。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/a660a723-bd04-95e9-e3f7-ed42f1f7fdc6.png)

音と共にブルブル端末が震えますので料理を取りに行くノリを体験してください。**外観やバイブパターンは2種類ずつあります！**
以上。（Twitterでシェアもすると喜びます）
※**Safariは非対応です！**iPhoneの方は音しか再現できませんので御注意を。動画で見てみてください。（JS APIの仕様なので私のせいじゃないです。後述）

https://twitter.com/ichii731/status/1469476402420678656?t=sI9omfQHVfbMsV5g5VlyLQ&s=19

### うまく動かすコツ
うまくブルブル震わせるためのコツとして、**ケースを外して硬めの机に置く**のがオススメです！(?)
![ogp.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/e6e0cd1d-e9a6-e985-ca4f-76e50c89345d.jpeg)

### PWA対応でオフラインでも動く
PWAに対応させて、キャッシュを効かせてオフラインで動作できるようにしました。![Screenshot_20211209_182959_com.brave.browser.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/c691d749-768c-786c-94cc-2cc4ebc2b3cc.jpeg)


**これで飛行機の中でも楽しめます！！**（←迷惑になるので✕）
### 何故作ろうとしたのか
なんで作ろうと思ったのかと言いますと今年地方から東京都区内へと転居いたしまして、これまで当たり前にあったイオンモールや（九州人ならお馴染み）ゆめタウンなどが殆どみられなく何故か恋しくなった。
ただそれだけです（笑）
# 技術について
アプリの開発に当たるお話を少しします。
技術スタックは以下のとおりです。

- HTML / CSS
- JS (Vanilla)

単純に端末を振動させて同時に音を流すだけなので、特段フレームワークも使わずにTSも使わずに制作しました。
また、以下のようなアセットで構成されています。

- Winbox.js … ウィンドウ型のモーダルを出現させるJSライブラリ。設定等の表示に使用
 - A Modern CSS Reset … リセットCSS([GitHub](https://github.com/hankchizljaw/modern-css-reset))
- ブザーの画像 … [**ンバヂ** @nbaji9](https://twitter.com/nbaji9?s=20)様の画像を利用
- 背景画像 … 撮影者：私 @丸亀製麺中野店
- 音 … フリー音源を編集ソフトで加工。**YouTubeに上がってたブザーの音を何度も聞いて忠実に再現したつもりです**

　設定などを表示する為に、子ウィンドウを表示出来るWinbox.jsを使いました。

https://nextapps-de.github.io/winbox/

背景画像は私が撮影しました。フードコートで席についた直後にありがちな飲料水のコップも一緒に取ることで再現度を上げました。
　
メイン画像は[こちらの投稿](https://twitter.com/nbaji9/status/1399671486353346565?s=20)の画像を編集して利用させて頂きました。自分で作っても良かったのですが、せっかく素晴らしいセンスのあるTweetだったのでお借り致しました。
（突然「フードコートのアプリ開発したいんですけど…」と意味不な連絡してすみませんm(_ _)m）
##殆ど使われないﾌﾞﾙﾌﾞﾙさせるVibration API
最後に端末のバイブレーションをJavaScriptで操作するAPI「Vibration API」を紹介します。
以下のようにミリ秒を指定するだけで端末のバイブレーションを制御できます。

```js
window.navigator.vibrate(200);
window.navigator.vibrate([200, 100, 200]);
```
配列に値を入れて渡すと、ON,OF,ON,OFF,ON...のようにオンオフを交互に指定することも出来ます。
`setInterval` および `clearInterval`を併用することで継続的にバイブレーションを動作させることも可能です。
MDNのDocsは以下にあります。

https://developer.mozilla.org/ja/docs/Web/API/Vibration_API

問題なのは**使い道があまり浮かばない上に、Safariブラウザが非対応**だという点です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/6c0d600b-d59c-3fe8-03d5-7370c300b42a.png)

https://caniuse.com/?search=vibration

Win11になってInternet explorerがご臨終になった昨今、Safariが圧倒的に面倒くさいブラウザになっちゃいました。
想定される用途としてはゲームのデバッグや業務システム以外ほぼ思いつかないですし、あったとしてもワンクリック詐欺系に使われそうな機能だなぁと感じました。
toCサービスにおいてバイブレーションは怖がらせたりする可能性もありますからね…

以上、**Vibration APIを活用したフードコートのブザーを再現するクソアプリ**でした。
是非SNS等も宜しくおねがいします…（普段メディアの代表をしてます）
**[Twitter](https://twitter.com/ichii731) | [GitHub](https://github.com/ichii731)**



おまけ:index.htmlのソースを見ると何かがあるかも…