PHP
Calculator

懇親会で発注すべきピザと飲み物の量を一撃で計算する便利コマンド


🍻 ttskch/party


使い方

$ party

How many people? : 15
How much is budget per person? : 2000
+-------------------------------+-----+-------+
| What you have to buy | Num | Price |
+-------------------------------+-----+-------+
| Pizza (L) | 8 | 24000 |
| Cans of beer | 16 | 3680 |
| Cans of other alcohol | 8 | 1600 |
| Bottles of non-alcohol (1.5L) | 2 | 400 |
+-------------------------------+-----+-------+
| Total | - | 29680 |
| Average | - | 1979 |
+-------------------------------+-----+-------+
+--------------------+-----+
| Amounts per person | Num |
+--------------------+-----+
| Pizza (pieces) | 4.3 |
| Drink (cans/cups) | 2.2 |
+--------------------+-----+

party コマンドを実行すると対話形式で人数と一人当たりの予算額を聞かれます。

入力すると、


  • Lサイズのピザを何枚

  • 缶ビールを何本

  • ビール以外の缶アルコールを何本

  • 1.5Lのノンアルコールのペットボトルを何本

買えばいいかを即座に教えてくれます。

また、一人当たりのピザのピース数と飲み物の本数(ノンアルコールの場合は杯数)も教えてくれます。

まさに懇親会主催者必携の便利ツール!


インストール

macOSの場合はHomebrewでインストールできます。

$ brew tap ttskch/party

$ brew install party

WindowsやLinuxの場合はgit cloneして適当なパスにsymlinkしてください。

$ git clone git@github.com:ttskch/party.git

$ cd party
$ composer install
$ ln -s $(pwd)/bin/party /usr/local/bin/party


パラメータの設定

$ party config

[SUCCESS] "/path/to/home/.config/party/config.yaml" is created. Modify it if you need.

party config コマンドでデフォルトの設定ファイルを ~/.config/party/config.yaml にコピーします。これをお好みに合わせて編集することで、計算のパラメータを調整することができます。


config.yaml

version: 1.0.0

# how people drink beer, other alcohol and non alcohol are distributed (total number is meaningless)
distribution_rates:
beer: 10
other_alcohol: 5
non_alcohol: 5

# how many cups 1 bottle of non alcohol can be divided to
cups_for_one_non_alcohol: 4.3 # 1500 / 350 = 4.2857...

# how many pieces of L size pizza for 1 can/cup of drink
pizza_pieces_for_one_drink: 2.5

# JPY and MXN are supported (please add your currency to https://github.com/ttskch/party)
currency: JPY



distribution_rates

参加者のうち、ビールを飲む人、その他のアルコールを飲む人、ノンアルコールを飲む人の比率を設定します。

「だいたいいつもこれぐらいの人数比だな」という数字を設定しておくとよいです。合計数に意味はないので感覚的に設定できます。


cups_for_one_non_alcohol

1.5Lのノンアルコールペットボトル1本が何杯分に相当するかを設定します。

デフォルトでは缶ビールの350mlと同量を1杯と換算するようになっていますが、いつも使うコップがもっと小さい場合はこの数字を大きめにするとよいです。


pizza_pieces_for_one_drink

1缶(1杯)の飲み物あたり、Lサイズのピザを何ピース食べるかを設定します。

少ない飲み物でピザをたくさん食べる集団(?)の場合はこの数字を大きめに設定するとよいです。


currency

使用する通貨を設定します。現在 JPYMXN (メキシコペソ)の2つが選択できます。(このコマンドを作ってすぐの頃になぜかMXNに対応するためのプルリクエストをいただきました)


技術スタック

PHPで作りました。

ロジック部分は koriym/php-skeleton を雛形として使用し、コマンドのUI部分は symfony/console の力を借りました。symfony/console超便利。


おわりに

勉強会の懇親会やビアバッシュイベントなどを主催する人は、よかったら使ってみてください :raised_hands: