SmartHR Tech Blog

SmartHR 開発者ブログ

労務ドメインの面白さ(届出書類機能編)

このエントリは、SmartHR Advent Calendar 2024 シリーズ2の6日目の記事です。

こんにちは、SmartHR届出書類機能でプロダクトエンジニアをしているqwyngです。
この記事では、SmartHRの届出書類機能におけるドメイン知識の話を書きます。この記事を読んだ方が、SmartHRのドメインに興味を持っていただけると幸いです。

SmartHR届出書類機能の概要

SmartHRの届出書類機能は、会社や従業員の情報を入力として受け取り、行政手続きに関する書類のPDFを出力したり、電子申請のxmlファイルを出力し電子申請するシステムです。

キーボードやスマホから届出書類機能に入力し、xmlや書類を作成している図
届出書類機能の図

最終的には行政に情報が提出されます。
SmartHRで有名な年末調整機能と比較すると、年末調整機能では税に関する申請が多く、届出書類機能では従業員の社会保険(厚生年金や健康保険等)に関する申請が中心という点で違います。
年末調整機能についての記事も労務ドメインの面白さがつまっているので、興味がある方はぜひ読んでみてください。
tech.smarthr.jp

届出書類機能に必要なドメイン知識

届出書類機能を作るためには、大きくわけて以下2つのドメイン知識が必要です。

  • 書類に必要な情報や書類の様式
  • 行政への電子申請の仕組み

書類に必要な情報や書類の様式

税制が中心で、所得額等の計算ロジックが複雑になりがちな年末調整機能とは違い、届出書類機能は社会保険の加入や喪失が中心のため、情報自体は比較的シンプルです。
ですが、社会保険は提出しなくてはならない書類が多いのがネックです。作成する書類が多いということは入力されるべき情報の種類も多いということです。
例えば、よく「書類に従業員の被保険者番号を書いてください」という指示を見かけますが、被保険者番号は以下のように複数種類あります。

  • 厚生年金保険の被保険者番号
  • 健康保険の被保険者番号
  • 雇用保険の被保険者番号

それぞれ、意味が全く違います。誤った情報を使ってしまうと取り返しがつかなくなる可能性もあります。

また、書類は同じ名前でも様式が変更されていきます。
例えば、「健康保険・厚生年金保険 被保険者資格取得届」は、2024年12月2日にマイナ保険証のために様式が変更され、「資格確認書発行要否」という項目が追加されました。 届出書類としては同じ名前の書類なので、ユーザーにはいつものように書類を作成してもらいつつ、新しい様式に変更する必要がありました。
こういった変更が何年も続くため、書類の変更点と歴史を把握していくことになります。

行政への電子申請の仕組み

届出書類機能は、行政に電子申請を簡単に行えることがセールスポイントです。
電子申請は、行政に情報を提出するために国が提供してくれているマイナポータルAPIとe-Gov 電子申請APIを利用しています。届出書類機能内部でxmlやcsvファイルを作成し、それらAPIを使って行政に提出しています。 このxmlやcsvファイルの形式も継続的に更新されていきます。書類と同じように電子申請に対しても変化に強いプロダクトにしていく必要があります。

行政の変更にどう対応するか

ここまでの話の中で、書類や電子申請の様式が継続的に変更されているという話をしました。
届出書類機能は、これらの変更に強いアーキテクチャを採用しています。具体的には、書類、書類マスタ、書類のバージョン、書類のPDF様式、電子申請の様式をそれぞれ別で管理しています。

届出書類機能の書類のアーキテクチャ図
届出書類機能の書類のアーキテクチャ図
既存の書類が変更された際には、新しい書類のバージョンの作成からはじめます。
これにより、書類のマスタ部分に依存していた部分を壊すことなく、新しい書類のバージョンを作成することができます。 電子申請の様式は中間マスタを使って使い回すことも可能です。 届出書類というドメインにおいて、なにが変化しやすくどう対応するか考えられた設計になっています。1
また、チームでは書類の作成にかかるコストがまだ高いと判断し、書類の作成を自動化するためにこれらのコードを自動生成する仕組みも開発しています。

届出書類機能のドメインの面白さ

国の歴史があるが故の複雑なドメイン、行政の変更が絶対であるが故の制約の多さ、この2つが労務ドメインの面白さだと感じています。
いかに複雑な情報をシンプルに、かつ制約を満たしながら扱うかに興味がある方には面白い環境だと思います。

We Are Hiring!

SmartHR では一緒に SmartHR を作りあげていく仲間を募集中です! 複雑なドメインをプロダクトに落とし込むことに興味がある方をお待ちしています! 少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!

hello-world.smarthr.co.jp


  1. 筆者が考えた設計ではありません。チームにジョインした際に感銘を受けました。