フリーランスプログラマのための複式簿記プログラミング

フリーランスプログラマであれば、複式簿記で青色申告するのは自力でも容易にできます。
もちろん、年度ごとに法改正などに対応するのは面倒なので、複式簿記の仕訳帳記入を日頃からプログラマティックに記述しておき、
年度末にそのプログラムを元にCSVを吐き出し、MFクラウド（無料プラン）とかにインポートするのが、僕が見つけたもっともコスパがいいやり方です。

この記事では、僕がどんな感じで毎年記帳と確定申告をしているかをご紹介します。
ただし、確定申告書の内容については保証しないので、ご自身で税務署に確認するなりして自己責任でマネしてください。

## 対象者

個人事業主として活動しているプログラマ。
ここで紹介する簡単なHaskellコードにじんましんが出ない方。

## 仕訳CSVの作成

最新の[haskell-bookkeeping-jp-sample](https://github.com/arowM/haskell-bookkeeping-jp-sample/#readme)を参考にしてCSVファイルを作成します。
Haskellは言語仕様が小さくてシンプルなプログラミング言語なので、今回のような用途なら簡単に理解できるでしょう。
必要であれば、[こわくないHaskell入門（初級）](http://qiita.com/arowM/items/9ebfb7cafecd99290663)をご参照ください。
[bookkeeping-jp](https://github.com/arowM/haskell-bookkeeping-jp/#readme) の `Business.Bookkeeping.JP.Csv`モジュールを使ってCSVファイルをエクスポートもできるようになっています。

### 記帳方法

よく使う勘定科目があらかじめ `bookkeeping-jp` の `Business.Bookkeeping.JP.SelfEmployed`に定義されています。
なんと、これらはMFクラウドのインポートに対応しています。 Freeeeeeeとかいうやつは個人的に嫌いなので聞かないでください。

ただでさえ覚えるのが大変な勘定科目なので、変に変数名を英語にせず、日本語関数名を採用しています。
日本語関数名ってこんなところに使いみちがあるんですね！

```haskell
ppr $ year 2015 $ do
  month 1 $ do
    activity 2 "ジャパリパーク取材" $ do
      _旅費交通費 340
      _消耗品費 "入場料" 1000
      _消耗品費 "ジャパリバス乗車料" 400
      _消耗品費 "ジャパリまん" 200
    activity 20 "ジャパリパーク商談" $
      _旅費交通費 340
```

基本的には`haskell-bookkeeping-jp-sample`を見たら誰でも分かると思いますが、上記のように`do`記法で宣言的に使った経費や売上などを記録することができます。
当然、これはHaskellのプログラムコードなので、交通費などを逐一計算しなくても、

```haskell
_旅費交通費 (2000 - 1344)
```

のように電子マネー利用残高の差分をそのまま記述してサボることもできます。

その他、下記のようによく使う項目を別途関数として定義することも自由自在です。

```haskell
_いつもの出費 :: Date -> MonthTransactions
_いつもの出費 d0 =
  activity d0 "いつもの" $ do
    _旅費交通費 340
    _消耗品費 "いつものあれ" 400
```

## MFクラウド会計のアカウント作成

[MFクラウド会計](https://biz.moneyforward.com/)の無料アカウントを個人事業主として作成します。
初期設定項目を設定してください。

## MFクラウド会計に仕訳帳をインポート

* 右上のメニューで、事業年度が確定申告する対象の年度(去年)になっていることを確認
* サイドメニューから「会計帳簿」->「仕訳帳」を選択
* 「インポート」ボタンから「仕訳帳」を選択してポップアップ画面で、生成したCSVをアップロード
![Firefox_Screenshot_2017-03-06T23-56-58.295Z.png](https://qiita-image-store.s3.amazonaws.com/0/16345/f2cc7a6f-fabc-af06-60ae-cda92ace9e80.png)
![import.png](https://qiita-image-store.s3.amazonaws.com/0/16345/e1d3d12a-b618-cf36-c400-09fd201d2016.png)

* 画像を参考にCSVの列とMFの項目を紐付け、「確認」ボタンを押す
![Firefox_Screenshot_2017-03-07T00-20-21.982Z.png](https://qiita-image-store.s3.amazonaws.com/0/16345/0c004735-899c-80f5-fbcf-aa49570bb12c.png)

* しばらく待つと読み込みが完了するので「保存」ボタンを押して完了する

## 各種書類の保存

* サイドメニューから「決算・申告」->「決算書」を選択
* 「エクスポート」ボタンの「決算書一括出力」でファイルを保存しておく

* サイドメニューから「会計帳簿」->「総勘定元帳」を選択
* 「エクスポート」ボタンの「PDF出力」で出てくるポップアップ画面で、「全科目選択する」にチェックを入れて「出力する」ボタンを押す
* ダウンロード一覧ページに、総勘定元帳のファイルが作成されたら「ダウンロード」を押してファイルを保存しておく
![Firefox_Screenshot_2017-03-07T00-35-25.691Z.png](https://qiita-image-store.s3.amazonaws.com/0/16345/f89231fd-10c2-e4f2-62ff-1e6b498186ff.png)


## 申告書類の作成

* サイドメニューから「決算・申告」->「確定申告書」を選択
* 「基本事項」以外にもわかりにくいUIで「収入・所得」などのタブが存在していることに注意して、それぞれの項目を入力。
    * 会社からの給与は「収入・所得」タブの「収入金額等」や「所得金額」の部分に源泉徴収票を見ながら記入する
    * 「収入・所得」タブの「所得の内訳(所得税及び復興特別所得税の源泉徴収税額)」に、源泉徴収票の内容を記入する
    * 「所得から差し引かれる金額」に、会社の源泉徴収票に書いてある社会保険料や地震保険料などを入力
* 右上の「申告書印刷(PDF)・e-Tax出力」で、以下の2ファイルをダウンロードして、印刷する。
    * 確定申告書B
    * 所得税青色申告書(一般用)

## 申請書類の郵送

各種用紙が税務署から郵送されてきていると思うので、源泉徴収票などの書類を添付用紙に貼り付け、作成した申告書類とともに封筒に入れて税務署に郵送します。
別にe-taxでやってもいいけど、結局なぜか別途書類を郵送しないといけなかったりして意味がわからないので、別に無理に使う必要はないと思います。

## 税金納付

確定申告書B の57番(申告期限までに納付する金額)の額を、[国税庁が指定するいずれかの方法](https://www.nta.go.jp/tetsuzuki/nofu-shomei/nofu/01.htm)で納付します。