年末調整の元号表記に振り回された話

これは [SmartHR Advent Calendar 2019](https://qiita.com/advent-calendar/2019/smarthr) 12日目の記事です。

こんにちはりさきゃんです！
令和がはじまってから初めての12月！12月といえば年末調整！
SmartHRの年末調整機能を実装するときちょっと困った元号への対応について書きたいと思います。

## 年末調整の書類
年末調整とは払いすぎた所得税を再計算して精算するための手続きのこと。
年末ごろに以下の書類を記入して会社に提出します。

今年の給与所得者の扶養控除等（異動）申告書(通称・マルフ)
来年の給与所得者の扶養控除等（異動）申告書(通称・マルフ)
給与所得者の配偶者控除等申告書(通称・マルハイ)
給与所得者の保険料控除申告書(通称・マルホ)
給与所得者の（特定増改築等）住宅借入金等特別控除申告書(社内呼称・マルロ）

## 年末調整の書類は毎年変更がある
実は、年末調整の書類は毎年変わっています。 ( 詳しくは[こちらのブログ](https://tech.smarthr.jp/entry/2018/10/19/163846)を見てください。 ) そのため、毎年の仕様に合わせて開発していく必要があります。

加えて、今年は新元号への切り替わりもあり、`2019年` を表す元号の表記は、年調の書類ごとにバラバラでした。

### 今年のマルフは平成31年(2019年)

元号(平成)表記(半角数字)と西暦表記(半角数字)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/b7b62b10-2b59-62ed-0934-8e3655dea5d3.png)

[［手続名］給与所得者の扶養控除等の（異動）申告｜国税庁](https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/annai/1648_01.htm)より

### 来年のマルフは令和２年

元号(令和)表記(たぶん全角数字)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/dad91524-0bb0-ff8f-0494-9570dd2c5420.png)

[［手続名］給与所得者の扶養控除等の（異動）申告｜国税庁](https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/annai/1648_01.htm)より

### マルハイは令和元年

元号(令和)+元年表記
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/3936097c-08e7-b9ae-b0d2-fda724b4464c.png)

[［手続名］給与所得者の配偶者控除等の申告｜国税庁](https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/annai/1648_71.htm)より

### マルホは令和元年

元号(令和)+元年表記
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/9547ca01-168a-8a56-fe9c-d390db31b9f9.png)

[［手続名］給与所得者の保険料控除の申告｜国税庁](https://www.nta.go.jp/taxes/tetsuzuki/shinsei/annai/gensen/annai/1648_05.htm) より

### マルロは令和１年

元号(令和)表記(半角数字)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/494f51f3-ac9e-165d-0db2-a52f71d54e55.png)

[令和元年分　年末調整のしかた｜国税庁](https://www.nta.go.jp/publication/pamph/gensen/nencho2019/01.htm)の[給与所得者の（特定増改築等）住宅借入金等特別控除申告書記載例](https://www.nta.go.jp/publication/pamph/gensen/nencho2019/pdf/102.pdf)より

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/7cd24b27-a67f-dee5-ee6b-7d789d65e347.png)

## マルフの16歳未満の子供欄の「令和」表記
今年マルフと来年マルフの下部に`16歳未満の扶養家族（平17.1.2以後生）` という欄があり、16歳未満の扶養家族の生年月日を書く必要がありますが、今年マルフ側には「令」の文字はありません。


* 思わせぶりな今年マルフの `平・` （ドット)


![](https://s3-ap-northeast-1.amazonaws.com/kufutools-codimd/uploads/upload_2d377f2c5d1af52856ab44b425e309d3.png)


* 来年マルフには`平・令` と記載あり

![](https://s3-ap-northeast-1.amazonaws.com/kufutools-codimd/uploads/upload_29a402a40f742dd1bbcc1b820880b6bc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/7cd24b27-a67f-dee5-ee6b-7d789d65e347.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/7cd24b27-a67f-dee5-ee6b-7d789d65e347.png)


どうせなら、今年マルフにも「令」を書いてほしかった・・・

## 元号表記がバラバラだと、困る :confounded: 
SmartHR年末調整ではブラウザ上で質問に答えた結果から年末調整書類を出力します。今年からは給与所得者の（特定増改築等）住宅借入金等特別控除申告書のサンプル作成にも対応しました。

生成された年末調整の書類をダウンロードするときや、手元の書類と生成された書類を見比べて内容を書き写すとき、表記ブレしていると違う書類に見えて不安になります。

![mind note-17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85537/e0be0aa1-819f-1d63-c2a5-da77ae460ed9.jpeg)


書類を開くリンクやダウンロード時のファイル名は書類に合わせたい！ でも、年調の書類の書式がバラバラで統一できないという理由で、面倒でした。


# Rubyで元号をハンドリングする

SmartHRの年末調整は Ruby で開発されています。
Ruby で元号対応する方法はいくつかあります。

## `Date::jisx0301`を使う
Ruby 2.6.3 から「令和」をパースできるようになりました。


```rb
Date::jisx0301('R01.12.12')  # => Thu, 12 Dec 2019
Date.new(2019, 12, 12).jisx0301 # => "R01.12.12"
```

`jisx0301` というメソッド名は JIS X 0301 を表していて、これは 日付と時刻の表記に関するISOの国際規格の日本拡張である日本工業規格を指しています。


## era_ja や wareki などの gem を使う
実際は、 "○○1年の場合は、○○元年とする" などの慣習的なルールにかんたんに対応するために gem を使うことが多いです。私は [era\_ja](https://github.com/tomiacannondale/era_ja)を使っています。

```rb
require "era_ja"

Date.new(2019,12,12).to_era("%O%JE年%m月%d日") # => "令和元年12月12日"
```

他には [wareki](https://github.com/sugi/wareki) などのgemがあります。


## まとめ
今年の年末調整は、書式変更に加え、改元などの影響もあり、様々な書式で `2019年` が表されていました。
書類には元号を使わず西暦で統一するなどシンプルな仕様になることを強く願います。