Modelmap とは

## 0. はじめに

やや長い記事となりますので、時間がない人、ざっくり読みたい人は下記の記事をどうぞ。
[Modelmap って何? -ざっくりver](https://qiita.com/Modelmap/items/b745fbc8603d68f964dd)

## 1. Modelmap って何?

![Modelmap Image](https://i.gyazo.com/c7d8cc5f0b6af8cf1b570cd3eaf0259e.png "Excel and Modelmap")


Modelmap は、Microsoft の Excel 内の数式と互換性を持つ、<b>計算の過程を段階的に記録したデータ(JSON)</b>です。皆さんが普段オフィスで使っているエクセルファイル上で選択したセルから、ワンクリックで選択セルの計算を抽出し、自動的に他のセルとの関係や計算構造を解析した上で、計算過程を分かりやすく示した樹形図を描画します。現在はエクセルから樹形図を生成するツールですが、樹形図そのものを編集しながら、エクセル内の計算を直接変更できるように現在開発を進めています。


## 2. それが何の役に立つの?

皆さんの中に、業務フローの一部や、業務上の計算処理をエクセルで管理しているケースはありませんか？自分で作ったエクセルの簡易ツールならまだしも、他人が作った業務フローや、計算処理がエクセル上で管理されていると、その中身はほとんどの場合、ブラックボックス化しています。なぜならエクセルファイルは、フォーマットの自由度が非常に高く、レビューが極めて面倒だからです。他人が書いた汚いコードがブラックボックス化していくように、他人が作ったエクセルファイルは、ほぼ100%ブラックボックス化します。エクセルには、セル同士の依存関係を矢印で示す機能がデフォルトでありますが、下記の図のような計算をチェックするのがどれほど面倒か、想像に難くないと思います。

![Unstructured Spreadsheet Image](https://i.gyazo.com/dedb23422a63d2eac0c9130911c59d39.png "Unstructured Spreadsheet")

Modelmap Analyzer を使うと、エクセル上の特定のセルから数式を解析して、計算に紐づくラベルやセル間の関係性を明らかにした上で、右下図のような樹形図を生成します。

![Diagram Generation Image](https://i.gyazo.com/a957bdbfbe35d5a79f8cb39c4f836623.png "[Diagram Generation")

## 3. 誰がいつ困っているの?

エクセル上の計算処理は極めてレビューが困難なのですが、レビューをどうしても実施しなければならない厄介なシチュエーションがいくつか存在します。

1. 会社買収時のターゲット企業、事業計画の精査
2. 事業計画策定時の数値計画の精査
3. 事業会社内での経理・会計・財務に関連する業務引継ぎ
4. 税理士・会計士による経理・会計・財務資料の監査

### 3-1. 会社買収時のターゲット企業、事業計画の精査

これは今でも世界中で起こっている最も厄介なシチュエーションです。通常会社、もしくは事業を丸ごと買収するとなると、実際の買収が成されるまでに様々なチェックのプロセスが発生します。A社の事業戦略としてB社買収は正しいのか、B社をいくらで買うべきなのか、買収のための資金をどう調達するか、税務・法務上のリスクは存在しないのかなど、大きな買い物故に、ありとあらゆる観点からB社買収に向けてチェックを行い、事業シミュレーションを行います。

この事業シミュレーションが厄介です。事業計画の作成や事業シミュレーションは、エクセル上で財務モデル (Financial Model) というものを構築して行われます。なぜエクセルが Financial Modeling ツールとして第一線で使われているかの理由については割愛しますが、数百億円、時には数千億～数兆円の事業を丸ごとシミュレーションするとなると、エクセル上の計算も極めて複雑なものになります。1つ例を挙げると、私がコンサルティングファームで Financial Modelling の専門家として働いていた頃に、とある会社がメキシコ湾でガス油田の権益を買うべく、事業シミュレーションの精査に係ったことがありました。この案件の事業計画エクセルは、ファイルサイズは50MB以上、シート数は38枚で、ファイル内の計算セルの数は272,754セル、解析ソフトを用いてユニークな数式セルのみをカウントしても6,318セルありました。

これらの数式を1つ1つをエクセル上で、投資銀行やコンサルティングファームなどの我々専門家が体育会的に人力でチェック、時には構築を行います。買収側の事業想定と計算が整合しているか、計算に致命的なミスがないか、シミュレーションを行う上で重要な抜け漏れがないか、など日夜、過酷な労働を行って高い給与をもらっているというのが現状です。

![Model Review Image](https://i.gyazo.com/dc69787ea9532cbcd02d94b03d051e33.png "Model Review")


### 3-2. 事業計画時の数値計画の精査

会社の買収と聞くと、ほんの一部の人が特殊な状況で困っているという印象を持つかもしれません。しかし、会社の買収とまで大きな話でなくとも、ビジネスを行う上で事業計画に関連した計算というものは、ほとんどエクセル上で行われています。例えば、ある食品メーカーが工場の新設を計画しているとしましょう。その後に起こることは、誤解を恐れずに言うと、会社の買収と似たようなプロセスを辿ります。工場の新設が事業戦略上正しいのか、いくらで新設すべきなのか、新設のための資金をどう調達するか、税務・法務上のリスクは存在しないのかなど、様々なチェックの過程を経て、事業シミュレーションをエクセル上で行います。

工場の新設がまだピンとこなければ、以下のようなケースはどうでしょう？

- 新規事業を立ち上げる時は？
- 新商品を開発する時は？
- 資材を調達する時は？
- 新しい場所へ店舗を出店する時は？
- 節税のために組織体制を変更する時は？

それぞれ会社の買収ほど大きな意思決定でなくとも、一つ一つに対してそれらの意思決定を支える最低限の計画作成やシミュレーションが必要です。現状、これらのほとんどがエクセルで行われており、世界中でブラックボックス化した計算が量産されています。


### 3-3. 事業会社内での経理・会計・財務に関連する業務引継ぎ

企業活動というものは、会計処理を経て記録されます。現在では会計ソフトの導入によってエクセルのみで会計処理を行う企業は徐々に減っているものの、それでもかならずどこかの過程でエクセルでの業務管理が発生しています。なぜでしょうか？会計ソフトの主な目的は「記録」であり、日常の細かな計算や管理ができるほど柔軟ではなく、操作が複雑だからです。このため、大規模な会計ソフトを高い費用を払って導入している大企業でも、経理財務の日々の計算・分析タスクはエクセル上で作成・管理されていることがほとんどです。

経理スタッフが継続的に同じエクセルを管理し続けている場合はあまり問題ないのですが、厄介なのが引継ぎです。引継ぎは基本的に面倒な作業なので、為される説明は①スプレッドシートの目的、②どこにどの数値を入れてアップデートするか、の2点のみであり、中身の計算に細かく時間を割くことはまずありません。このタイミングで、引継がれたエクセルの中身はブラックボックス化し、計算のメンテナンスを行う人はいなくなります。古い言語で書かれ、ブラックボックス化したシステムを仕方なく保守・運用している人たちがまだ沢山いるのと同じように、経理・財務の分野においても同じことが未だ世界中で起こっています。

世界中で上場している企業は40,000以上あり、それぞれの国の会計基準に沿った決算報告書の提出が求められます。非上場の企業数は統計がありませんが、上場企業の100倍と保守的に考えても、4,000,000以上の企業が世界中で活動をしており、それら1社1社の経理・財務資料がエクセルで部分的に管理されているとなると、とてつもない量の計算資料がブラックボックス化していると推定されます。

### 3-4. 税理士・会計士による経理・会計・財務資料の監査

税理士や会計士の先生方は、会社の決算報告書に誤りや不正がないか、適切なタイミングでチェックを行っています。チェックの中身は多岐に渡り、請求書やレシートの数値確認や、工場内の実際の在庫量を視察したりすることもあります。チェックは、当然エクセルで作成された経理・財務の計算資料にも及びます。

先生方は企業内の担当者から、計算資料の中身について説明を受けるものの、経理担当者も計算内容を細かく把握しているわけではないので、双方において相当のコミュニケーションコストが発生し、監査時に双方を疲弊させる一因となっています。


## 4. 本当の問題

表面的には、ただツールの使い方を知らない、保守的なビジネスマン達が、イケてない労働集約的な作業を、一部の状況で行っている、と解釈されがちですが、Financial Modeler として金融エンジニアの側面を持つ私から見れば、これは以下の2点において本質的にもっと根深い問題であると考えます。

+ <b>計算においてインプット / アウトプットが明確に定義されていない</b>
+ <b>レビューというタスクにおいて、エクセルの UI は致命的</b>

まず、エクセル上での計算では、インプットとアウトプットが明確に定義されていません。エクセルでは、セルの中に数式もしくは値を打ち込んでいくような仕様となっていまが、セルごとに値が入力でき、計算処理が行われ、結果が表示されているという点で、それぞれのセルがインプットとアウトプットの両方の側面を持つこととなります。

また、計算プロセスを確認したい場合、表計算を目的として作られたエクセルのインターフェイスは致命的な欠陥です。セルごとにアウトプットの値が表示されているため、アウトプットの羅列としては非常に見やすいのですが、セルの配置が極めて自由に行えるため、セル間が連動して動くような計算になっている場合、フォーマットにルールがないと全体としての計算が把握できません。全体をきちんと理解しようとすると、セルを1つずつ遡って計算式を確認するという、かなりワイルドな作業工程を経る必要があり、相当な時間を要します。

## 5. Modelmap の価値

Modelmap は上記のような本質的な問題を解決すべく開発されました。具体的な解決策として、今まで市場に存在しなかった Data Visualization ではなく、計算の Process Visualization という新しい解決策を提示して、それに最適なインターフェースを提供しています。また、これらから生み出されるModelmapの本質的な価値は、以下の4つだと考えています。

+ インプット / アウトプットの定義化
+ 計算プロセスそのものの段階的なノード化
+ 計算プロセスのモジュール化
+ あらゆる計算のデータベース化


### 5-1. インプット / アウトプットの定義化

まず、エクセル上で特定のセルを選択し、最終的なアウトプットを1つに限定します。その上で、限定した1つのアウトプットから、エクセル内の計算を解析しインプットを紐付けることで、特定の計算におけるインプットとアウトプットを明確に定義することができます。

![Input/Output Image](https://i.gyazo.com/ce67f4f881589b686a9501ab3b739083.png "Input/Output")


### 5-2. 計算プロセスそのものの段階的なノード化

2番目の価値として、インプットからアウトプットに至るまでの計算過程を段階的にノード化することができます。計算過程をノード化して、段階的にアウトプットを設けることで、最終アウトプット、段階的アウトプット、入力値が明確にデータとして定義でき、フォーマットとして使い勝手の良いものへと変換します。

![Calculation Nodes Image](https://i.gyazo.com/cf3be226bb7b83e3e06c5add169cb64a.png "Calculation Nodes")


### 5-3. 計算プロセスのモジュール化

インプット、アウトプットを限定し、計算についても段階的な定義を与えることで、これらを1つのモジュールとして取り扱うことができます。また、モジュール単位ではアウトプットとインプットが明確に定義されているため、モジュール単位の計算を組み合わせることで、大規模な計算を簡単に構築することができます。メンテナンスを行う際にも、それぞれのモジュール単位で視覚的に管理することができ、バージョン管理を含めた運用や変更が極めて簡単なものとなります。インプットは定数を与えたり、ローカルのエクセルとリンクをさせたり、またはデータベースやGoogleスプレッドシートとリンクをさせて動的に計算を行うことも可能です。

![Calculation Module Image](https://i.gyazo.com/e260194025b1626f726cc2c73939d050.png "Calculation Module")

### 5-4. あらゆる計算のデータベース化

計算プロセスがきちんと定義され、モジュール化されると、それらをデータベースとして蓄積することができます。様々な人が色々な用途で、「計算したいもの」を検索しモジュールをダウンロードすることができるようになります。ダウンロードの後、計算を加工したり他のモジュールと組み合わせたりしながら透明性のある計算をわずかな時間で構築できるようになります。下記の例は、米国における発電事業の税金計算を検索した時のイメージ図です。

![Cloud Database Image](https://i.gyazo.com/202f0c7e67a587fc1cf6dc4c31ea648b.png "Cloud Database")

## 6. まとめ

これまでの流れをまとめると、Modelmap とは、

1. エクセルと互換性のある計算定義データであり、
2. エクセル上のレビュー・数式リサーチ・構築時間を短縮するためのツール
3. 特に投資銀行やコンサル業界に需要があり、
4. エクセルのUIの本質的な問題に対処するために開発され、
5. 本質的な価値は複合的な計算が定義されたモジュールとして扱える、という点

上記はいずれも世界で誰も行ったことのない手法であり、ビジネスや自然科学を含めた様々な分野で世界を変える程の影響があると確信しています。現在、プロジェクトに参画してくれるエンジニアの方を募集しているので、興味がある方は下記から是非ご連絡下さい！

+ [シリコンバレーで開発初期のリードエンジニアを募集中](https://www.wantedly.com/projects/177387)
+ [Modelmap Co](https://www.modelmap.co/)
+ [Linked in - John Kawai](https://www.linkedin.com/in/john-kawai-cfa-014bbbb/)