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に個人開発のコストの話が盛り上がっていて、これらの記事は面白かった。
- 個人開発を黒字にする技術 - k0kubun’s blog
- 個人開発のコストはDB次第 - laiso
- 個人でWEB開発を15年くらいやってる者ですが
- なるべくお金をかけずに個人アプリを運用したい - くりにっき
今回は FaaS や terraform 使ってみたいという技術的な興味でこの構成だが、もっとヘビーなものをつくるんだったら、Heroku や VPS のような固定費用のものが堅実だろうと思う。個人開発でいきなりスケーラビリティが必要なことなんてまぁないと思うので。
終わりに
今のところ、「haraiai」と検索しても 「haraitai」の検索結果になってしまうので、まずはこれを打破したいorz
是非、触ってみてほしい!🙌 haraiai - 払い合い
haraiai の試作品 ↩︎