LINE上で手軽に割り勘できるサービスを作った

1 min read
haraiai icon

LINE 上で手軽に割り勘できる haraiai - 払い合い というサービスを作った。

ターゲットユーザーとして主にカップルを想定しているが、2人組であれば誰でも使えるサービスで、こんな価値仮設を基に開発した。

(ユーザー)    カップルなどの2人組は、
(欲求)       支払いをどちらかがまとめてした際に、割り勘を記録したいが、
(課題)       わざわざアプリを入れたりするのは面倒くさいので、
(製品の特徴)  LINE上で手軽に支払いを記録できることに価値がある

使い方

hairai 公式アカウント を友達に追加してグループを作成し、そこで支払いを記録していくだけでOK。

支払いを記録するデモ

「集計」とメッセージを送ると、支出の差額を割り勘した結果を返す。

集計を表示するデモ

haraiai 公式アカウントは「メッセージが2行」かつ「2行目が金額(数値)」であるメッセージだけを支出と判断して処理する。よって普通の会話は自由にできるつくりになっている。

開発のきっかけ

個人的にパートナーと同棲を始めるにあたって、まとめて支払ったものを楽に記録・精算できる方法を探していた。

よくあるやり方として共通の財布やカードを作るというものがあるが、準備に時間と手間がかかる。加えて、支払い方法が多様化している今、「個人のお金」と「共通のお金」を分けること自体が面倒だと感じていた。

そこで共通化することはさっぱりと諦めて、互いに支払いを記録していくととした。

いくつか既存のアプリも試したが、普段から使っている LINE 上で記録できるツールを自作することにした。そのほうが

  • アプリケーションのインストールが要らず、使い方も迷わない
  • LINE は日常的に開くのでシームレスに記録できる
  • 普通の会話もできる、記録が会話につながる

という良さがあった。

デメリットを一つ上げるなら、手で入力するのが手間、ということだ。たしかに大量の支払いがあるならマッチしないかもしれない。

でも自分はむしろ、この手で入力する行為が「支出を記録しない」という選択肢を残してくれており、自由度の高さにつながっていると感じる。

例えば、「さっきの支払いは奢りね」というやり取りがあれば、記録しなければよい。「食費は自分の方が多く食べるから多めに負担するね」となれば、好きな額を差し引いて記録すれば良い。このような柔軟性は共通口座にはない haraiai の強みと考えている

ということで、プロトタイプ 1 をブラッシュアップして公開することにした。

精算はどうやるの?

一つ、さきほどの使い方の項で触れなかった操作がある。それが「精算」だ。支払いの不均衡を解消するために月末にやる人が多いと思う。

実は haraiai でも「精算」と呼びかけることでできる。だが、あえてサービス説明などでは載せておらず、 支払いの少ない側が次回払うようにしてバランスを取る ことをおすすめしている。

理由は、どちらかがまとめて払っている時点で、一時的に多く払っている状況は許容できるケースが多いと思うからだ。プロトタイプを使う中でも、シーソーゲームのように支払いのバランスを調整していくことで、精算はなくても良いと感じた。

不要なことに時間を使うのはもったいないので、是非、払い合ってほしいという思いを込めてサービス名をこのようにした。haraiai では自然と精算を回避するように設計されている。

運用コストの話

haraiai は LINE Bot なので、LINE上でメッセージ送信などのイベントが起こった際に送られてくる webhook event の処理が主となる。今回はコストを最低限に抑えることを考えて、 GCP の Cloud Functions と Firestore Database を使った。

Cloud Functions は 200万リクエスト/月 までは無料。1グループあたり月100メッセージ飛んでくるとしても、月2万グループまでは無料で運用できる。

Database の方は読み取りと書き込み、保存データ量でそれぞれ無料枠の基準が設定されている。haraiai は最低限のグループ情報と各ユーザーの支払総額を保持しているだけなので、グループあたりのデータサイズは小さくて済む。1グループのデータが1KBと仮定すると、

  • 毎日5万件のwebhookの受信 (read)
  • 毎日2万件の割り勘 (write)
  • 10万グループの永続化

が無料でできる。やはり月間2万LINEグループくらいが目安になりそうなので、ほぼ無料で運用できる見通しだ。

懸念点としては、LINEのメッセージが送られるたびに webhook を受信せざるをえないので、スタ爆みたいなことをやられると辛い。今はすべてのリクエストでグループ情報を read しているので、Function も Database も使われてしまう。

よって今後の対策として、関係のない会話など、処理する必要のないイベントはDBアクセスをスキップさせることを考えている。

LINE プラットフォーム側にもユーザーごとのリクエスト制限機能などがあると良いのになとは思うが…。

ちなみにGWに個人開発のコストの話が盛り上がっていて、これらの記事は面白かった。

今回は FaaS や terraform 使ってみたいという技術的な興味でこの構成だが、もっとヘビーなものをつくるんだったら、Heroku や VPS のような固定費用のものが堅実だろうと思う。個人開発でいきなりスケーラビリティが必要なことなんてまぁないと思うので。

Github Repo

終わりに

今のところ、「haraiai」と検索しても 「haraitai」の検索結果になってしまうので、まずはこれを打破したいorz

悲しいGoogle検索結果

是非、触ってみてほしい!🙌 haraiai - 払い合い


  1. haraiai の試作品 ↩︎

comments powered by Disqus