【お手軽フロントエンド】Alpine.jsで結婚式2次会の余興を作ってみた

2023/09/10に公開

この記事の内容

html1枚で動くルーレットが

制作時間8時間くらいで

できたよ🧘


github:https://github.com/nearkillit/slotmachine

誰でも使用はできますので、結婚式の2次会か会社のイベントで是非!
https://nearkillit.github.io/nameroulette/

矢野くん結婚おめでとう

高校の親友の矢野くん(偽名)が結婚式を挙げるそうで、私は2次会のほぼ全てを依頼されました。

せっかくなので、フロントエンドの勉強がてらイベントが盛り上がりそうな何かを作ろうと思います😎

名前ビンゴ

名前ビンゴとは?

みなさん「名前ビンゴ」ってご存じでしょうか?
2次会とかでよくある(らしい)余興で、ゲームが始まる前に周りの初対面の人の名前を下記のような紙に書き込んでいって、最終的にビンゴの数字代わりに名前がランダムに選ばれて3マスどれか揃えたら景品がもらえるという神ゲーです。

名前ビンゴの辛いところ

名前ビンゴの辛いところが名前をランダムに選ぶ機構があまりないことです。(アプリとかはあるらしいけど、どうせならプロジェクターで大画面で見たいですよね!)

ということで、今回はその名前ルーレット部分をフロントエンドエンジニアっぽく作っていきたいと思います💆

名前ルーレット

どうやって表示するか

まあWebページでしょ☺️(即決)

フレームワーク(ライブラリ)を選ぶ

判断基準

  • 簡単なやつ
  • せっかくなら触ったことないやつ
  • 学習コスト低いやつ

探索

  • 簡単なやつ
    • html1つで書きたい!!
      • SPAでよくってよ
        • Next.js❌
        • Nuxt.js❌
        • SvelteKit❌
      • CDNでできるのがいいです
        • React❌
        • Svelte.js❌
        • Riot.js❌
  • せっかくなら触ったことないやつ
    • AngularJS❌
    • Vue.js❌
    • jquery❌
  • 学習コスト低いやつ
    • 触ったことがあるやつに似てるやつがいいな
      • Alpine.js○(Vue.jsに似てる)
  • 名前がいい
    • Alpine.js◎(ドイツ語でアルプスの、っていう意味。クララー!)

結論

(ほぼなんとなく)Alpine.js

Alpine.js

特徴

シンプル。
軽量。
限りなくパワフル。
https://alpinejs.dev/

す、すげぇや😲

Vue.jsと比べてみたら
Vue.jsと比べてみた

Name Size
Alpine.js 14.5KB
Vue.js 34.7KB

確かに軽いかも🥳

Vue.jsと似てるところ

Vue.js Alpine.js 短縮
v-on: x-on: @
v-bind x-bind :

上の表を見たらわかりますが、大体vxかくらいの違いですね!

マスタッシュ({{}})がAlpineではx-textとか、細かい違いはありますがこれはVueを触れたことがあれば使いやすい!しかも軽い!

詳細の違いは素晴らしい記事[1][2]があると思うので、割愛します🐱👀

作ってみて

所感

Vue.jsでよかったかも...😇

理由

  • 軽いし覚えることも少なくてよかった
    • Good👍
  • 逆にAnimation部分の実装を全部手動で書かなくてはいけなかったのが大変だった(VueだとListのAnimationとか楽だった気がする[3]
    • Bad💋

結論

  • ListのAnimationとか楽にやりたいなら
    • 👉Vue.js
  • 逆にそれ以外でかる〜くフロントエンドを実装したいなら
    • 👉Alpine.js

となんとなく思いました。

大変だったところの解説

名前を左から右に流れているようにループさせるのが大変だった

解決策は文字で書くと大変なので図解した(Miro便利!)

図解

何はともあれ

Alpine.js(とtailwindCSS)で、こんなものが1日でできるという事が分かりました!
すぐに使えて簡単なAlpine.js、是非おすすめです✌️

あと矢野くん末長くお幸せに

参考文献

https://alpinejs.dev/start-here#building-a-counter
https://ja.vuejs.org/guide/essentials/template-syntax.html#using-javascript-expressions
https://2022.stateofjs.com/en-US/libraries/
https://github.com/jorgebucaran/hyperapp
https://qiita.com/kohashi/items/ae8b1186567ec34b2a75
https://www.mitsue.co.jp/knowledge/blog/frontend/202002/21_1253.html

脚注
  1. https://www.mitsue.co.jp/knowledge/blog/frontend/202002/21_1253.html ↩︎

  2. https://qiita.com/kohashi/items/ae8b1186567ec34b2a75 ↩︎

  3. https://v2.vuejs.org/v2/guide/transitions#List-Move-Transitions ↩︎

Discussion