Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

マネーフォワードは何をモデル化するか

こんにちは、第一楽章だけでも月光は早すぎた内波です。

皆さんは「モデル」と聞くと何を思い浮かべるでしょうか。 Googleに聞けばイメージにはファッションモデルが、強調スニペットには辞書の文言が並んでいます。 「モデラー」というとプラモデル(模型)を作る人が浮かぶ人もいれば、機械学習をやっている方ならまたそれとは違う職業を思い浮かべるかもしれません。

エンジニアブログの読者に多そうなソフトウェアエンジニアの方にとっては「データモデル」が一番馴染み深いのではないかと思いますが、僕は長らく物理学の分野にいたことも手伝って "Standard Model"(標準模型) と呼ばれる物理理論が浮かびます。 (余談ですが、僕が現役の頃は「ヒッグス粒子も見つかってないのに theory=理論と呼ぶな」と言われていましたが、それが見つかった今はまた違う呼び名かもしれません。というのとさらに追加の余談で、マネーフォワード社にはこの発見論文の著者の一人が在籍しています。)

物理学は自然科学の一分野で、自然界の物理現象を対象とし、それらを理解し法則性を明らかにしようとする学問です。ピアノの鍵盤を叩いて音が鳴る機序から、先に引いた研究が目指すような我々が生きる世界が究極的には何によって形作られているか、といった半ば哲学的なことまで対象とします。 自然科学は対象とする現象を観察し、どのようなモデルであればシンプルかつ矛盾なくその現象を記述できるかを考えます。例えば太陽や惑星といった天体の観測から太陽系と呼ばれるモデルを考えて理解することもその一つです。天動説の時代、地球を不動の中心としたイメージでは説明が難しかったものを、明快に理解し、その動きを予測することを可能にしてくれた優れたツールです。

僕はそういう分野のバックボーンがあるせいか、今の仕事の中では、データ化すべき対象を観察し、それをどのようなモデルとして捉えるか、既存のモデルとどのように整合をとらせて解釈するか、といったことを考えるのが好きです。

マネーフォワードが管理する代表的な概念

僕が所属している部署は「アカウントアグリゲーション」と呼ばれる仕組みを担当している部署で、マネーフォワードMEやマネーフォワード クラウド会計等のサービスで、銀行やクレジットカードといった様々なお金に関わるサービスの情報を一元管理するための機能を作り維持しています。

この機能を使ったマネーフォワードのサービスをご利用の方であればご存じだった方もいるかもしれませんが、マネーフォワードでは異なる業種で取り扱われるお金の情報であっても、一つの統一されたモデルでデータを管理しているものがあります。

お金のイベントログ

例えば、前回の記事でも述べましたが、銀行が提供するAPI仕様や項目は各銀行によって異なっていますが、マネーフォワードの中では全ての銀行の入出金データが同じモデルで管理されています。そこまでは当然と感じられるかもしれませんが、それと同じモデルで、クレジットカードや電子マネーでの決済に関する情報や、ネットショッピングやスーパーでの購入に関する情報も管理されています。

このモデルでイメージしているものは「お金の移動」です。

ユーザーが持つある「口座」(銀行口座に限らずあらゆるアカウントです)に発生するお金に関するイベントを概念化したもので、これは現金の移動だけに限らず、いわゆる「債務」が発生した場合もお金の移動として扱っています。

現金に慣れた方がマネーフォワードMEを使った時に混乱されることがありますが、ユーザーに発生するお金のイベントをこのように捉えているからこそ、ネットショッピングで後払い決済による購入をしてもそのタイミングで家計簿に記帳されますし、クレジットカードの銀行引き落としが行われる遥か前にカードで決済したという記録があがってくるのです。 「引き落としが終わるまではそれは使ったうちに入らないんだ」という考えをする方もいるかもしれませんが、法的に見ても、利用した段階で皆さんはクレジットカード会社に対して負債を背負っているはずで、それをより抽象化した「お金」の移動として捉えているのです。

今のお金の状態

他にも、マネーフォワードMEをお使いの方にとっては馴染みのある「総資産」と呼ばれるものを構成する「個々の資産」は、基本的に単一のモデルによって管理されています。

財布の現金や銀行預金は当然のこととして、株や投資信託といった現物が存在する金融商品から、FXや信用取引のような実態がイメージしにくいもの、さらには不動産や動産も一つのモデルで扱われます。 また、ローンやクレジットカードの利用残高などの「負債」も、このモデルで価値の符号が逆の資産として管理されています。

このモデルでイメージしているものは「今決済するといくらになるか」というものです。

もちろん、直ぐに現金に交換できないようなものもあれば、資産換算することが難しいものも存在しますが、それでも例えば、誰かが不幸にも亡くなったとき相続が行われる際には、税金計算のためにその人が持っている全てのものが何らかの形で計られることになる、というような考え方です。

ユーザーが生まれてからの全てのお金イベントを漏らさず記録できていれば、この概念がなくともログの集計によって表現することができますが、そのログ収集が非現実的なため今の状態を独立して管理する必要があります。

モデル化によって捨てられるもの・得られるもの

このように一見異なる対象を抽象化すると、当然のことながらそれぞれ個々の事象で持っていた情報がそぎ落とされることになります。 そのようなことをせずに、全情報をそっくりそのまま単なる文字列情報として記録しておき、進化したAIによってそれをよしなに解釈する、というような方向も、近い将来はありえるかもしれません。

しかし今はそのようなことはできませんし、逆に抽象化したからこそ得られる側面もあります。 その一つは当然人が理解しやすい、ということですが、それ以外にも例えば、ユーザーの「赤字なのか黒字なのか。この状態でアクセルを100倍にして破綻しないのか?」という問いや「これを買うに足る資源を自分は持っているのか?」という疑問に対してシンプルに答える強力なツールとなります。

まだ捉えきれていないもの

これまではマネーフォワードの中ですでにモデル化しているいくつかの対象を紹介しましたが、そもそもそのようにうまく概念を捉え切れていないものも数多くあります。 その中でも本来ユーザーに価値を提供するためにモデル化したいと考えているものをいくつか挙げます。

身近な債権

先ほどクレジットカードの利用に関するモデルの例が出てきましたが、実はこれと「逆」の重要な事象を、マネーフォワードではまだキャッチすることができていません。 クレジットカードは利用のたび、その金額分の「債務」をユーザーが負い、利用残高に加算されていっているというのが、我々の捉え方ですが、実はみなさんが普段行っているある行動が、これの逆の価値を産んでいます。

それは「労働」です。

たとえ貴方が時給による雇用契約で働いていなかったとしても、月の半ばまで働いていれば、その時点で半月分の給与を受け取る権利を持っています。であるならば、クレジットカードを利用するたびに「利用残高」としての負債額が資産から引かれて見えるように、毎日あるいは毎時間あるいは毎分、働いた分だけまだ現金化されていない「債権」として資産に加算されるというのが、この思想にそった捉え方だと考えていますが、それがまだ実現できていません。

ただこれをナイーブに「労働によって都度発生するお金のイベント」と捉えることもなかなか難しく、就業していると1分毎に「20円GETしました!」というプッシュ通知がスマホに飛んでくる、というのは、中にはそれでテンションが上がって働くのが楽しくなる人もいるかもしれませんが、流石に大多数の人にとっては不要な情報でしょう。

ユーザーが働く企業が採用している給与明細サービスが、給与確定前でもその時点の給与額を教えてくれればそれが使えますが、そうでない場合、ユーザーがどのような契約を保持しているのかという情報と、そのユーザーの行動を教えてもらうことでこうした情報を表現することができるようになるかもしれません。皆さんならどのように考えますか?

まだ起きていないこと対する約束

もう一つ、マネーフォワードMEですでに扱っていて、お金に関わる重要な対象であるにもかかわらず、綺麗にモデル化できていないものがあります。

それは「保険」です。

今では様々な保険商品が存在していますが、おおざっぱに言えば「もしAにBが発生したらCがもらえる」という契約が保険です。 例えば、自分が車で事故にあったら100万円もらえる、というようなものです。

これは、ユーザーが自分の将来を考えるにあたってとても重要な情報ですが、このような仮定をベースにした未来に関する情報を、どのように捉えればそのユーザーにとって価値のあるツールとして利用できるのかがとても難しく、未だにその答えを見いだせずにいます。

保険会社の中では当然何らかの形でデータ化がされているでしょうが、マネーフォワードで扱う情報を利用するのは、支払いをする保険会社ではなく受け取をするユーザーなので、保険会社内でのデータモデルは参考になりこそすれ、そのままでは便利なものとはならないのではないかと考えています。

捉えられれば足りるのか

保険の話は個人の保険契約に限った話ではなく、事業を営んでいる企業が締結する様々な契約においても、なんらかの統一した概念が導入できるような気がしているのですが、僕が不勉強なこともあり、それを捉えられておらず、もしご存知か良い案がある方がいらっしゃれば是非教えていただければ助かります。

ただ一方で、そうしたユーザー本人の情報を全て網羅することさえできれば、それでユーザーの期待に応えられるかというと、実はそうではないのではないか、と思っています。

お金の価値とは

もう長い間物価が大きく変わっていない日本に住み、日本円で表示された数字だけを見ていると忘れがちですが、お金が「交換」のための道具であることを思い出せば、今マネーフォワードがユーザーに対して表現しているものには大きな不足があります。

例えば手元に100万円があります、という情報を知ったとして、それ単体でどういう意味があるでしょうか?ビデオゲームのスコアラーのように、数字それ自体に価値を見出す人であればそれだけでニマニマできるかもしれませんが、多くの人にとってお金とは「交換のためのツール」です。 であるならば、その交換対象がいくらなのか、という情報がなければデジタルな数値になんの意味もありません。皆さんが「100万マネフォドルあげます」と知らない通貨で言われても首を傾げるのと同じです。お金の数字を見ている時、そうした交換対象となりうるモノの価値情報を暗黙的な知識としておいていますが、本来はそれと明確なセットになって初めて意味のある情報となるのです。

つまり、例えば総資産の金額を見る時にユーザーが知りたいことは「交換したいものに対して自分の手持ちの資源は足りているのか」ということのはずです。

これには2つの意味があります。 一つは「交換したいもの」とはいったい何で、今この社会でどのような相場で扱われているのか、という意味です。 それを捉えるためには、もはやユーザー本人だけを観察していても実現はできません。 一方「手持ちの資源」は円換算された資産だけとは限りません。個人であればその人の能力や社会的立場、会社であればその企業の従業員や取引先との関係といったものは、明確にそれに含まれるもののはずです。さらに「手持ち」で足りなければ外部の力を使うのが自然で、そうなるとそのユーザーが利用可能な外部資源、例えば公的機関の補助や時間経過による変化等、にどういったものがあるか、ということも整理する必要があり、ここでもやはりユーザー本人だけでは済まない問題が生まれます。

こうしたことを考えていくと、本質的には「ユーザーの成し遂げたいことは何で、その実現には何が必要か」、さらにこれをもっとマネーフォワード流の言葉で表現するならば「ユーザーが進みたい”前”とはどこで、ユーザーがその方向に進むためには何をすべきか」という問いになります。

そのような問いに答えるためのツールとなりうる概念はどのようなものでしょうか。

モデル化されたデータから観測されること

そのための一つ鍵が、モデル化されたデータの集まりからモデルを見つけることです。

一見奇妙に聞こえるかもしれませんが、この世界の現象を人間の手でモデル化したものの集合体を観測することで、そこからさらに高次のモデルを抽出する、という営みがあります。 それは特別なことではなく、皆さんがマネーフォワードのサービスを利用される中で自然と頭の中で組み立てているものです。

例えばある企業が、自社のお金のイベントログを眺めながら「自分たちの会社の売上はこういう周期の変動があるんだな。それはこの季節要因との相互作用があるからなんだな。」といったことに気づくことはよくあることで、膨大なデータをあるメッシュでまとめにして観察することで、何かの法則性や因果関係を見出す、という活動はすでに前世紀から行われてきました。

それと同じように、前節までに述べたようなデータを利用し、自社のお金のイベント・従業員の活動・取り巻く社会の状況といったものが、どのような相互作用をし合っているのかを解き明かし、地動説によって惑星の運動が理解できたのと同じように、これまでユーザーが運否天賦だと思っていたものを予測させられるようになるモデルを見つける、そのような期待を持って、ユーザーに意味のあるモデルを見せられるように、日々機械学習を進めているチームもマネーフォワードには存在しています。

マネーフォワードがモデル化するもの

ここまで長い文章を読んでいただいてありがとうございました。 ようやくタイトル回収です。

これまでも述べた通り、マネーフォワードで働くエンジニアは色々なものをモデル化しています。もちろん、僕もマネーフォワード内の全てのプロダクトや職種に携わっているわけではないため、この記事に挙げられていない対象も数多くあります。

ただ、「会社として」何を対象に、テクノロジーを用いてモデル化しようとしているかを説明することはできます。

それは「ユーザー」です。

マネーフォワードのサービスを使ってくれるユーザーが、自分自身あるいは自分の会社のことを、明確に理解し、正しく予測し、そして意図通りコントロールできるように、 * ユーザーに起きる事象を記録し * ユーザーが関わる約束を整理し * ユーザーを取り巻く環境を網羅し

そしてそれを元にユーザーをモデル化します。

天体をシンプルに理解するにあたって地球が中心のモデルが用いられなかったのと同様、このモデルの中心はもしかするとユーザー本人ではないかもしれません。 しかし間違いなく我々マネーフォワードが価値を届ける「ユーザーのため」のモデルです。 そしてそれを元に、ユーザーが自ら必要だと判断したサポートやアシストを行い、ユーザーと共に”前”へと進んでいく。

それがマネーフォワードが追い求め続けているミッションです。

もしこんな会社に興味があれば、エンジニア・非エンジニア問わず、是非お気軽にご応募ください!!!


【サイトのご案内】 ■マネーフォワード採用サイトWantedly京都開発拠点

【プロダクトのご紹介】 ■お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android

ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』

おつり貯金アプリ 『しらたま』

お金の悩みを無料で相談 『マネーフォワード お金の相談』

だれでも貯まって増える お金の体質改善サービス 『マネーフォワード おかねせんせい』

金融商品の比較・申し込みサイト 『Money Forward Mall』

くらしの経済メディア 『MONEY PLUS』