飲み会の傾斜計算が面倒だったのでアプリ作ってみた
作ったアプリ↓
背景
会社の壮行会、忘年会、新年会、参加者は部長1名、課長3名、係長4名、若手社員10名、
そんな飲み会の幹事を任され続けて早一年。
何度も傾斜をつけての支払い金額の計算を実施しました。
しかし、この「傾斜」が意外と難しいのです。Excelで頑張ればできないこともないですが、ちょうどよく全員が納得できる傾斜をつけるのにはいささか時間がかかりすぎてしまいます。
そこで、便利な飲み会傾斜計算アプリがないか調べてみましたが意外とそういったアプリは少ない。。。
傾斜計算はできてもメンバーをまとめて登録できなかったり、傾斜の値をを逐一変更しないと金額が変更できなかったりと少しばかり使いづらいと感じました。
せっかくIT企業に勤めているのだから自分でも何か作りたいという欲求もあり、傾斜計算アプリ「KEISHAN」の開発に着手しました。
飲み会傾斜計算アプリ「KEISHAN」
KEISHANを使うと何が嬉しいか
1.面倒な金額の微調整が発生しない
Excelで傾斜計算をしようとす際、支払い金額に納得がいかない場合、誰かの金額を上下させます。
誰かの金額を変えると、合計金額が変更されるのでどこかで帳尻を合わせないといけません。
この作業が傾斜計算で最もめんどくさいと感じています。
KEISHANでは「傾斜」を広げたり縮めたりすることで微調整が簡単にできます。
2.参加不参加に対応できる
1次会は参加したけど、2次会は参加していない人が出てくると傾斜計算はその複雑さを発揮します。KEISHANならチェックボックスを外すだけで簡単に計算ができます。
3.大人数での傾斜割り勘が簡単
参加者が多ければ多いほど、役職、年次のレンジが大きくなり支払い金額の算出が難しくなりますがKEISHANでは個人に対して「傾斜」という、いわば財力的な指標を与えて計算するので、視覚的に同じ役職、年次の方を同じ支払い金額に調整することができます。
使い方
1.お支払いを登録する
まずは1次会、2次会など傾斜計算の対象となる支払いを登録。
「参加者登録へ」は次の「参加者」タブに遷移するだけなのでタブを直接クリックするのと同じ挙動となります。
2.参加者を登録する
次に参加者の登録。
一人ずつ登録することもできますが、カンマ区切りでまとめて参加者を登録できます。(実は半角スペースや「、」でも登録可能)
まとめて登録の例
①「まとめて登録」に参加者を記入
②「参加者一覧に反映」を押下
参加者が反映されます。
※「傾斜」の決め方
参加者登録で突然出てくる「傾斜」という値。
「ここにどんな数字を入れたらいいか分かりません」という声をたまに頂くので少し解説します。
結論、「まずは役職や年次に応じて感覚で適当に入れちゃってOK」です。
後からいい感じに修正できる機能を作りました。
それでも気になる方のために説明すると、
例えば、合計金額20,000円で参加者3名の傾斜がそれぞれ、部長:100、課長:80、新人:20だったとしましょう。
するとアプリ内では
部長の支払い金額 = (100 / (100+80+20)) × 20,000円 = 10,000円
課長の支払い金額 = (80 / (100+80+20)) × 20,000円 = 8,000円
新人の支払い金額 = (20 / (100+80+20)) × 20,000円 = 2,000円
となります。人数が増えたり、1次会は参加したけど2次会は参加しなかった場合など加味すると少しExcelで計算するのは難しかったりします。
3.傾斜計算をする
「傾斜計算」のタブに移動すると、傾斜計算テーブルが表示されています。
最小単位を、100円、500円、1000円から選ぶことができます。
「並び替え」ボタンを押下すると傾斜の数値順に表がソートされます。
例えば課長は忙しくて2次会から参加、新人くんは最近の若者なので1次会で帰宅したとします。
その場合は該当のチェックを外せばその支払い金額は0円になります。
そしてこの支払い金額が気に入らない場合は下のボタンで傾斜を広げたり縮めたりできます。
最後にコピーボタンですが、Excelなどにこの結果を直接貼り付けたい時に使えます。
表示が変なので改良中ですが。。
以上がKEISHANの大まかな使い方です。ぜひお試しあれ。
KEISHANの構成
普段業務で使っているAngularとGCPをメインに構成しました。
本番環境へのデプロイ手順は下記です。
①Dockerコンテナイメージをローカルでビルド
②ビルドしたイメージをGCPのArtifactRegistryにプッシュ
③ArtifactRegistryに格納したイメージを指定し、CloudRunでデプロイ
ドメインはお名前.comで購入し、CloudRunのカスタムドメイン機能で設定しました。
Discussion