
Photo by
photochemie
生命保険に数式を
さまざまなIT技術を業務に取り入れる仕事をしている関係で、業務を数式化することに関心を持つようになってきた。
たとえば入院日数の計算基準を数式に表すことができれば、プログラムのロジックが簡潔になる。可読性が高いプログラムだと原因の特定や保守が楽になる。
理屈は関係なくとにかく目の前の仕事を捌けば良い立場の人相手には、「この数式に当てはめて処理してください」と指示を出せば良いので教育が簡単だ。
そのため、理屈を抑えなくてはいけない立場の人に、「なぜこの数式によって業務のやりたいことが実現できるのか」を文章で残すことにエネルギーを割くことができる。
何が変数になって結果が変わるのかも明確になるので、テストケースで何を組めば良いかもすぐに見通せる。
システムと数式はとにかく相性が良いのである。しかし、私は国公立の勉強のために数学は勉強したが知識が数ⅡBで止まっている。これは誰かの力を借りて数式化に取り組まないとダメかなと思っていた。
そこへChat GPTが登場して、様相は一変した。数式を用いなくても、自然言語で語りかければ計算式のような指示を出せるようになった。
これは私にとっては革命的で、数式やプログラミングに苦手意識を持つすべての文系的な人間にとっては福音である。指示の出し方に少しプログラミング的な素養が求められるが、そこさえクリアしてしまえば、かなりの業務が数式的な記述で自動化できる。
例えばこんな感じだ。
命令文
今回の入院日=2022/3/10
今回の退院日=2022/3/20
前回の入院日=2022/2/20
前回の退院日=2022/3/1
前回の退院日と「前回の退院日から60日経過した日数」の間(同日も含む)に今回の入院日が入っていれば、「同一の入院」、入っていなければ「別の入院」と結果を返してください。
「今回の入院日から今回の退院日までの日数」と「前回の入院日から前回の退院日までの日数」を足しあわせてください。(これを「合計日数」とします)
「合計日数」が60日以下ならば、「今回の入院日から今回の退院日の日数」を結果として返してください。
「合計日数」が 60日を超える場合、「合計日数」から60を引いてください(これを「超過日数」とします)。その後、「今回の入院日から今回の退院日の日数」から「超過日数」を差し引いた結果を返してください。
(回答)
前回の退院日から60日経過した日数は、2022/4/30です。
今回の入院日と前回の退院日から60日経過した日数の間を確認すると、2022/3/10は前回の退院日から60日経過した日数の範囲内にあります。つまり、今回の入院は前回と同一の入院ということになります。
合計日数は、前回の入院から退院までの日数(10日)と今回の入院から退院までの日数(11日)を足し合わせると、合計21日になります。
合計日数が60日以下の場合、今回の入院日から今回の退院日の日数は11日になります。
しかし、合計日数が60日を超える場合は、超過日数を計算する必要があります。合計日数が21日であり、60日を超えないため、超過日数はありません。したがって、今回の入院日から今回の退院日の日数は11日となります。
他の派生バリエーションも研究中である。API連携できる社内システムに組み込んだら、業務の様相は一変するのではないだろうか。