複雑な割り勘清算を1秒で計算できるアプリを作りました。

こんにちはMIYACHI(@_38ch)です。

去年の10月くらいに会社の同期と、複数人での複数回の割り勘の一番簡単な清算方法を計算してくれるWebアプリ「Walica」を作ったので、紹介させてください。

キャンプとか旅行とかにグループで行った時に、誰かがレンタカー代を立て替えたりだとか、誰かがホテルの予約を先にしてくれて、立て替えたりだとかあると思いますが、イベントが終わった後に、レシートを回収して、誰が誰に何円払うとか結構めんどくさいです。

想定している使用場面はそういうケースで、僕たちが作ったアプリWalicaでは、立て替え記録を残しておけば、最後にボタン一つで、誰が誰に何円払えば良いかを一瞬で計算してくれます。

使い方

1. イベントグループを作成する

イベントグループは、グループ内の、立て替え記録ができるページです。調整さんのようにグループごとにURLが発行され、メンバーにシェアすることができます。

グループ名や簡単な説明文、海外旅行の場合は、使う予定の通貨などを指定してください。

2. メンバーを登録する

イベントグループが作成できたら、今度は、自分を含むメンバーを画面上部のフォームから登録してください。

ここは基本的に名前を入力して、+ボタンを押すのみです。

3. グループページをメンバーにシェアする

グループページ上部の「URLをコピー」「LINEでシェア」ボタンを押すと簡単にメンバーにシェアできます。

イベント中に何か立て替えが発生した場合は、各々にこのグループに記録を残してもらいましょう。

4. 立て替え記録を登録する

立て替え記録登録は「+支払いを追加」ボタンから実施できます。

立て替えた人、立て替えたモノ、金額、立て替えられた人を入力して、登録します。

グループ作成時に選択した通貨も選択することができます。

5. 清算方法を確認する

最後は、清算ページで清算方法を確認しましょう。
グループページ下部の「清算方法を見る」ボタンを押すと、次のページで、清算方法を確認することができます。

基本的に支払い回数は「(メンバーの人数 - 1)回」にしかならない計算アルゴリズムになっているので、速攻で清算が終わるかと思います。

また、清算する金額の以下の単位で指定することができるので、グループの好みに合わせて選択してください。

  • ぴったり割り勘(1円単位)
  • きっちり割り勘(10円単位)
  • ざっくり割り勘(100円単位)
  • ばっさり割り勘(1000円単位)

このページも、URLコピーもしくは、LINEでシェアできるので、「この支払いでお願いします」的な感じでメンバーにシェアしてください。

“Walica”のオススメみが深い点

会員登録不要でブラウザから使える

調整さんのように簡単にメンバー全員が使えることを想定して作ったので、めんどうな会員登録やアプリのインストールはいりません。

メンバーに対して、「ごめんこのアプリ使いたいからインストールして・・・」とかは正直言いにくいです。

30カ国以上の外貨に対応済み

海外旅行で使っていただくこともかなり多いので、多くの外貨に対応して作っています。

Botが毎日為替を取得していき、最新の為替を日本円に変換した値で清算方法を計算してくれます。

理論上もっとも少ない支払い回数で清算完了

Walicaで使っている清算方法計算アルゴリズムは、理論上もっとも少ない回数での支払い完了を提案してくれます。

類似アプリで、”WARIKAN” というアプリがありますが、同じ入力を与えても、結果としては、”Walica”の方が少ない支払い回数で計算結果が算出されます。

開発ストーリー(エンジニア向け)

「Walica」は去年の10月の連休に同期と2人で開発合宿をして、3日で完成させたアプリです。

使っている技術は以下です。

  • Sketch(デザイン)
  • Vue-CLI(フロントエンド)
  • Mateialize(CSS/JSフレームワーク)
  • Flask(サーバーサイド)
  • RDS, EC2, EBS, ELB(インフラ)

最初は、viewサイド(僕)とlogicサイド(同期)で分業して、デザイン、マークアップ、APIを1日半くらいで作っていきました。

そこで密にコミュニケーションをして、APIから返す値とそのデータを描画する「箱」を互いに認識合わせをしていったのが、スピーディーに開発できた要因かなと思っています。

お互い、フロントエンド・サーバーサイドの両方の経験があったので、

「このAPIはこういうデータ構造でレスポンス返すようにクエリ調整して」

みたいなレベルで会話ができました。

そもそもMVP(Minimum Viable Product)でリリースしようという方向性は、一番最初に合意していたので、あとは ”Done is bertter than perfect” の精神で作りきりました。

まだまだユーザー数は少なく、赤字覚悟でサーバー代を払い続けているので、お小遣いが稼げる程度にはユーザー数が伸びてほしいなと思っています・・・

もし、休日にイベントがあれば、Walicaを使ってもらえると助かります!