【FileMaker】和暦で入力して西暦で表示する

**今回の記事は、元号に関するFileMaker社の対応がなされているバージョンが対象です。**
**お使いのFileMakerのバージョンが新元号等の対応対象かどうかは、[FileMaker社からの発表](https://support.filemaker.com/s/article/Japanese-New-Emperor-Calendar?language=ja)をご確認ください。**

新しい元号になり、FileMakerの元号対応もひと段落したところでしょうか？
FileMakerのいいところとして、
・西暦で入力して和暦表示できる
と、なーんにも考えずにレイアウトのフィールド設定だけでできてしまうところです。

ただ、これが
・和暦で入力して西暦で表示
がなーんにも考えずにできるかというと、微妙です。

FileMaker Communityには、[和暦の入力方法](https://support.filemaker.com/s/article/和暦の入力方法-1503693014297?language=ja)が載っていますので、入力の仕方はわかります。
ですがシステムを使っている人がいちいち「年」の前に「r」、「h」、「s」、「t」、「m」の文字を入力してくれると思いますか？

システム作っている側でも確実に入力しないですよね。

ですので、この和暦文字列を保管するような設計をするのが無難だと思います。
では、やっていきましょう。

# 動き
やりたいことは、和暦で入力したら西暦で表示、もしくはそのまま和暦で表示です。

## 日付フィールドで入力の場合

令和３年10月1日の入力したいので、令和ラジオボタンと"3/10/1"を入力すると、、、
<img width="508" alt="qiitawareki8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/57514881-f649-3714-3e3f-b18b7ddb4c7f.png">

西暦、和暦と表示ができています。
<img width="513" alt="qiitawareki9.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/241b4790-fe71-0196-ebd6-b331faab19a0.png">

明治生まれのご先祖様も、、
<img width="506" alt="qiitawareki10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/2868c2f8-dcef-8bc6-d273-d21c315fc7f5.png">

現代の玄孫あたりも西暦でわかりやすくご先祖様の「生きていれば１００歳越えかー」と感心できます。
<img width="519" alt="qiitawareki11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/90d392d3-43e6-7d22-5925-c595546222e7.png">

## 年月日を分けて入力の場合

入力によっては、年月日を別々に入力するケースもあると思います。
<img width="741" alt="qiitawareki7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/a6768557-f1a1-891d-3b07-89304c2f57d5.png">

今回はこの２パターンの実装について解説します。

# 実装
どちらのパターンも、和暦選択部分は、値一覧で実装しています。
これ以上の和暦に対応する場合や未来の元号に対応する場合は、元号マスタを作って管理して値一覧で表示する方が後々のメンテナンスが楽だと思いますが、この記事ではテスト的に作成していますので割愛します。

## レイアウト上のフィールド設定
レイアウト上では、和暦・西暦と表示を設定できますので、それぞれ設定しておきます。
<img width="646" alt="qiitawareki15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/262c15cb-e483-d977-7f69-45e141d94536.png">
<img width="668" alt="qiitawareki16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/f0127a99-4a5f-2208-9414-a4052f6886d9.png">


## 日付フィールドで実装の場合
FileMakerは日付フィールドに和暦フォーマットで入力すると、西暦で保存してくれますので、それをそのまま使います。
どういうことかというと、和暦で"r3/10/1"と日付フィールドに入れると、西暦"2021/10/01"と保存されます。
これを実装すると、以下の図のようになります。
<img width="886" alt="qiitawareki12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/d1ed103e-db10-e6bd-7919-8bfcb3f5e143.png">

和暦記号追加については、このフィールドだけではないと思いますので、カスタム関数化しておくと便利ですね。
元号をマスタ化する場合は、元号名・略称をセットで管理しておくと、カスタム関数化することもなく実装可能ですので、よく使う場合はマスタ化を検討してみてください。
<img width="650" alt="qiitawareki13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/65361a96-cd20-5272-2beb-fbb64880d81b.png">

## 年月日を分けて実装の場合
年月日を分けて実装する場合も同じように考えてOKです。
このサンプルスクリプトではカスタム関数化した計算式を呼び出しています。
また、このサンプルでは年月日フィールドをグローバルフィールドで実装していますが、和暦年を意図的に残したい場合は、通常のフィールドとして設計してください。
<img width="972" alt="qiitawareki14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/911a9d80-9f46-45bd-7a53-39d89d846544.png">

# どっちでもいいけど
和暦入力の方法は他にもあるかと思いますが、ここでは２通りの入力方法をご紹介しました。
元号に関しては、あまりカスタマイズしたスクリプトを実装するとメンテナンス上、負の遺産となってしまう可能性が高いので、できる限りFileMakerが提供している機能で構築した方がシステムを実装する人がとても楽（ここ重要）だと思います。
ですので、ここではマスタ化していませんがカスタム関数を使用せずに元号マスタのような形でメンテナンスされていた方がスクリプトの修正もなく、現場の使用している人が元号マスタに新元号を追加するだけで済むような形にしておくのがユーザにも優しいと思います。
ただ、そんなに長く使用するシステムではない場合は、マスタ化する意味もないですし、時間も勿体無いので、今回のような実装で十分だと考えます。

では、楽しいFileMaker Lifeを。