Taxman の紹介


こんにちは。Webエンジニアの神保と申します。

この記事では、[Open Knowldge Foundation](http://okfn.org/) のプロジェクトの一つである [OpenSpending](https://openspending.org/) が開発している **Taxman** という API について紹介します。

## Taxman とは

Taxman は、世界中の国や地域の税金が計算できることを目指して開発が進められている、シンプルな RESTful API です。（Taxman という名前は、[ビートルズの曲名](http://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B9%E3%83%9E%E3%83%B3)に由来しているようです。）

https://github.com/openspending/taxman

まだプロトタイプのレベルですが、[http://taxman.openspending.org](http://taxman.openspending.org) でいくつかの地域のものがすでに稼働しています。対応しているエリアのリストは、何もパラメータをつけずにリクエストを投げると JSON形式で取得できます。

```bash
$ curl -s "http://taxman.openspending.org" | jq '.'
{
  "jurisdictions": {
    "jp": "http://taxman.openspending.org/jp",
    "gb": "http://taxman.openspending.org/gb",
    "ba": "http://taxman.openspending.org/ba",
    "mx": "http://taxman.openspending.org/mx",
    "za": "http://taxman.openspending.org/za",
    "bg": "http://taxman.openspending.org/bg"
  },
  "message": "Welcome to the TaxMan"
}
```

この Taxman ですが、実際にいくつかのサイトで利用されています。私が知っているのは、イギリスの [WHERE DOES MY MONEY GO?](http://wheredoesmymoneygo.org/dailybread.html)と、そのボスニア・ヘルツェゴヴィナ版である http://budzeti.ba の2つです。どちらも OpenSpending が開発したサイトですね。というか、[WHERE DOES MY MONEY GO?](http://wheredoesmymoneygo.org/dailybread.html) でもともと実装されていた税金の計算部分を API として切り出して、汎用的に使えるものにしようというのが Taxman というわけです。


## 日本版 Taxman

ところで、上記の対応エリアリストを見てお気づきでしょうか。`jp` がありますね。そう、なんと日本版もあるのです！

「なんと」と書きましたが、実はこの日本版は私が開発したものです。今年の7月に行われた [Spending Data Party 2013](http://spendingparty2013.peatix.com/) をきっかけに開発を進め、8月の終わり頃に本家に取り込まれる形となりました。

現段階では、年収（年間給与収入）、配偶者の有無と年齢、扶養親族の人数と年齢から、所得税と住民税の2種類が計算できるようになっています。

例）年収400万円、配偶者あり（37歳）、扶養親族2人（17歳と13歳）の場合（見やすいように一部編集してあります。）

```bash
$ curl -s "http://taxman.openspending.org/jp?income=4000000&spouse=37&dependents=17&dependents=13" | jq '.'
{
  "calculation": {
    "total": 333500,    # 税額の総合計
    "inhabitant_tax": { # 住民税
      "municipal": {    # 都道府県民税
        "income_tax": 100200,
        "per_capita_tax": 3000,
        "allowances": {
          "from_tax": 0,
          "from_income": 990000
        },
        "rate": 0.06,
        "taxable": 1670000,
        "income": 2660000,
        "total": 103200 # 都道府県民税額
      },
      "prefectural": {  # 市町村民税
        "income_tax": 66800,
        "per_capita_tax": 1000,
        "allowances": {
          "from_tax": 0,
          "from_income": 990000
        },
        "rate": 0.04,
        "taxable": 1670000,
        "income": 2660000,
        "total": 67800  # 市町村民税額
      }
    },
    "income_tax": {   # 所得税
      "taxable_allowances": 97500,
      "allowances": {
        "from_tax": 0,
        "from_income": 1140000
      },
      "rate": 0.1,
      "taxable": 2600000,
      "income": 3740000,
      "total": 162500  # 所得税額
    }
  },
  "data": { ... },
  "options": {
    "dependents": [
      "17",
      "13"
    ],
    "spouse": 37,
    "year": 2013,
    "income": 4000000,
    "annual_salary": 4000000
  }
}
```

詳しい仕様については、[README](https://github.com/openspending/taxman/tree/master/tax/jp) をご確認ください。なお、現在開発中ですので、途中で仕様が変更される可能性があります。また不具合がある恐れもありますので、あらかじめご了承ください。


## Civic Techに関わって感じたこと

この Advent Calendar のテーマは Civic Tech ですので、このことにも簡単に触れておきます。

Civic Tech とは何ぞやということについては、[1日目の関さん](http://qiita.com/hal_sk/items/3f78031e7fcd9f9d02ec)はじめ、皆さんがすでに書かれているのでそちらをご参考いただくとして、ここでは 1人のWebエンジニアとして Civic Tech に（多少ですが）関わることになった経緯と、その中で感じたことを書いてみたいと思います。

私が Civic Tech に興味を持つようになったきっかけは、[spending.jp](spending.jp)のプロジェクトでした。4月に会社を退職し、東京から地元である大阪に戻ってフリーランスになったのですが、ちょうど自分が払う税金に対して関心が高くなっていた時期にこのプロジェクトを知り、その趣旨に共感して7月1日に[大阪府吹田市版](http://suita.spending.jp)を立ち上げました。

数日後に[WHERE DOES MY MONEY GO?](http://www.wheredoesmymoneygo.org/)で使われている SVGアイコンを一覧で確認できるサイトを公開しました。MLで報告したところ、OpenSpending 本家にも報告してみてはというアドバイスをいただき、拙い英語でメールを投稿した結果、https://github.com/openspending/openspendingjs にリンクを張ってもらえることになりました。

<blockquote class="twitter-tweet" lang="ja"><p>.<a href="https://twitter.com/jmblog">@jmblog</a> created an amazing selection of icons for Where Does My Money Go? sites <a href="http://t.co/8CgAD6itRs">http://t.co/8CgAD6itRs</a> <a href="https://twitter.com/search?q=%23openspending&amp;src=hash">#openspending</a></p>&mdash; OpenSpending (@openspending) <a href="https://twitter.com/openspending/statuses/399644023566372864">2013, 11月 10</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

それに気を良くして、今度は OpenSpending の GitHubリポジトリで見つけた Taxman の日本版を作ってみようと思いたち、開発するに至りました。現在も OpenSpending のテクニカルリーダーと Taxman の仕様の共通化について GitHub 上で議論をしていたりします。

OpenSpending の方々との慣れない英語でのコミュニケーションにはいつも時間がかかってしまいます。また、秋からはスタートアップ企業で働いており、開発時間もあまり取れなくなってしまいました。それでも、これからも継続的にこういった活動をしていきたいと考えています。そのモチベーションになっているのが、「自分のスキルで多少なりとも社会貢献できている」という思いと、「OSS（オープンソースソフトウェア）のコミッターとして世界とのつながりが広がっていく」という実感です。向こうの方々がすごく褒め上手なのも、活動の原動力になっているかもしれません。

Civic Tech について興味はあるけど、何をしたらいいかわからないというエンジニアやデザイナーの方がいらっしゃるかもしれませんが、あまり深く考えすぎずに、小さなことでもいいので、自分にできそうなことを見つけて、実際に手を動かしてみることから始めてみてはいかがでしょうか？思いがけない世界が広がっていくかもしれませんよ。


## 最後に
今後は、引き続き Taxman の開発や、Taxmanを使った新しい「税金はどこに行った」サイトのテンプレートを開発できたらなと考えています。もし開発にご協力いただける方がいらっしゃいましたら、是非ご連絡ください！