philan.netという予算を決めて寄付するためのサービスを作りました。

一言で書くと、寄付をするために寄付する予算と寄付した金額を管理するツールを作ったという話です。

philan.netでできること

寄付したお金を記録する一種の家計簿アプリのようなものですが、基本的にその内容を公開する目的を持っています。

philan.netは、Googleアカウントでログインして利用できます。

寄付の予算

ログインすると最初のアカウント作成時に、自身の年間に寄付する額を決めておく"寄付の予算"を入力できます。(これは後から変更できます)

ユーザー登録

これはphilan.netを作った理由の一つでもありますが、 寄付が難しいという感覚は、稼いだお金を手放さないといけないとう苦痛から来ているという研究があります。 この苦痛を軽減する手法として、事前に寄付する予算を決めておくプレコミットメントの手法が有効という話がありました。

そのため、philan.netでは"寄付の予算"を決められるようになっています。 予算は単なる目標設定なので、予算オーバとか使い切らなくても別に問題はないです。 予算は年収の1~2%程度を設定すると直感的でちょうどいいんじゃないかなと思っています。

📝 この辺のデータ的なものは発見できていない。税率控除だと計算式が複雑なのでわかりにくい。アメリカではGDPの2~3%ぐらいが寄付に使われているけど、GDPから算出するとわかりにくい。

また、お金は国とか地域で違ってトータルを計算するのが難しいので、ユーザーごとに"デフォルトの通貨"を指定できます。 "JPY"を指定した場合は、寄付の額は最終的に日本円で計算されます。 (GOOGLEFINANCE関数を使って、記録した日付における為替レートで金額の計算をしています)

寄付の記録

philan.netでは、いつ(日付)、どこへ(寄付先)、いくら(寄付額)、なぜ(メモ)を寄付したのかを記録できます。

新しい寄付の記録を追加

寄付記録自体は、ログインしたGoogleアカウントに紐づくGoogle SpreadSheetへ記録されます。 そのため、philan.netがなくなった場合でも、問題なくデータは引き継げます。

記録した内容を公開できるユーザーページがあります。 ユーザーページでは、SpreadSheetに記録された内容と寄付の予算の使用率を表示できます。

ユーザーページ: azu

ユーザーページの例:

ガイドラインにも書いてありますが、 SpreadSheet自体は公開非公開選べますが、その内容は公開される前提なので、SpreadSheetには公開できる内容だけを書いてください。 (非公開記録みたいのは需要があったら作りますが、透明性をどう担保するかが難しそう)

SpreadSheetのデータ

philan.netから記録を追加するとSpreadSheetに追記されていきます。 SpreadSheetにはphilan.netで扱う情報は大体入っています。

SpreadSheet

SpreadSheet側を直接編集してもphilan.netに反映されます。 (内部的にはNext.jsのISRでSpreadSheetのデータをPullしています)

philan.netを作った理由

きっかけは寄付研究や慈善活動について研究するために色々な書籍や論文を読んだメモ書きの中で読んでいたThe Science of Givingという寄付や慈善活動の論文などをまとめた書籍です。

寄付が難しいという感覚は、稼いだお金を手放さないといけないという苦痛からきているという話があります。 これは支払うことに苦痛があるため、寄付することを躊躇してしまうという問題です。

支払った後に何かが手に入ると分かっている場合でも、短期的な快楽や苦痛を避けることを優先してしまうという話。 これは、ダイエットするという長期的な目標があるときに、目の前のケーキを食べてしまうという短期的な快楽を優先してしまうのとにた話です。

このような苦痛への対策として、事前に予算を決めておくなどプレコミットメントの手法を導入することで、 長期的に一貫性のある行動がとれるという研究も紹介されていました。

この手法を実装してみようと思ってphilan.netを作りました。

そのためphilan.netではアカウントを作るときに、年間の寄付の予算を入力するようになっています。 この予算と実際に寄付した金額から残高的な目安を出したりしています。

予算と実際の金額

実際に予算を決めてみると寄付するときの気持ちが楽になるのでおすすめです。

また、どうせ記録をつけるならそれを公開すると透明性があってよさそうと思いました。 寄付をする理由は人それぞれですが、寄付をしない理由の多くは、寄付を受け付けている団体への信頼感の欠如があります。 Pragmatic Philanthropyでは信頼の欠如(Trust Deficit)がなぜあるのかという歴史的な背景の分析があったり、寄付に関する動機の構造という論文のアンケートでは、

  • 寄付の管理団体に不信感があったか
  • 寄付の管理団体の寄付金の使い方が不明瞭だったから

といった信頼感の欠如が寄付しない理由の上位にあります。

寄付される側の透明性が必要なのもそうですが、寄付する側も同じように透明性のある状態が正しそうだなと思いました。 なので、philan.netで記録を付けるときのメモ欄は"Why?"というなぜ寄付したのかを書く場所にしています。

📝 一通り動く状態になってから@jackが同じようなシート公開しているのをおもだして見たら、Why?になっていたのでそこを参考にしました。(シートの形は大体一緒だった)

Mission

長期的な目標をある程度決めて置かないとぶれそうなのでphilan.netのミッションを定義しています。

寄付が特別な状態ではないことを目指す

寄付やお金が神聖なものとして扱われている場合があります。 慈善活動において寄付は重要な資源ですが、特別なものとして扱うと寄付をする側、寄付をされる側どちらも動きにくくなります。 寄付が特別ではない状態を目指し、寄付が最大限活用できる状態にします。

寄付の状況を公開することで透明性を出す

寄付をする側、寄付を受ける側どちらも透明性が重要です。 寄付をしない理由として、寄付の管理団体への不信感・不透明感が大きいです。 寄付を受けた側の透明性レポートは必要ですが、寄付をする側の透明性も重要です。 なぜ寄付をしたのかなどの記録を公開することで、透明性がある状態を目指してます。

今後

まだ必要な機能が良くわかってないので、使いつつ欲しい機能を実装していく感じです。

自分がサブスクリプション的な寄付はまだやっていないので、まだmontlyの寄付とかの記録に対応してないです。 GASと連携して自動記録みたいのを考えています。

あとGitHub Sponsorsのデータを自動的に取り込める仕組みを作りたい気がするけど、どうやるか迷っています。

自分もGitHub Spornsorsは募集しているので、philan.netをサポートしたい人も募集しています。

現在はSpredSheetを年単位でシートを分けていく感じにしています。 SpredSheetを年単位で切っていくのが、予算も年ごとに違う気がするので適切な気がしていますが、この辺どうするかは来年までに決めます。

技術的な部分はまた別の記事で書きます。

追記: Next.js + Vercel + Cloudflare Workers KV + Googleスプレットシートで寄付管理サービスを作った | Web Scratch

Vercel + Next.js + Cloudflare Worker KV + SpreadSheetを使っていて、 Cloudflare Workers®はかなり使い倒したのでそれを書いておきたい。

ソースコード