kintoneで生年月日から学年を算出する式を作ってみた with chatGPT
こんにちは!
「クラフテクス株式会社」にてインターンシップに参加しているコウです!
さて、kintoneを用いた生徒カルテ作成の第2弾です。
今回は生徒一覧のマスターデータに含まれている生年月日から、
学年を自動計算する仕組みを作っていきます。
1. アプリの全体像
今回用意したアプリはこんな感じです。
ほぼ初めてですので、フィールドの形式などはあまり気にせず作りました。
今回の目標は「生年月日」から「学年」を計算することです。
なぜ、元データからの挿入ではなく、計算したいかというと、
「更新する手間を削減したい」からですね。
ちなみに、ここでは生年月日は「日付フィールド」という形式で、
誕生年や誕生月のみをDATE_FORMAT関数というものを用いて、
以下のように取り出しています。
DATE_FORMAT関数の詳細については、
以下のページを参考にしてください。
[DATE_FORMAT関数]日付や時刻の表示形式を指定して表示する | kintone ヘルプ (cybozu.help)
2.chatGPTに計算方法の相談
誕生日から、学年を計算する方法はなんとなく思い描けていましたが、
ここで、あえてchatGPTの力を借りてみることにしました。
まずは、kintoneならではのルールである、
「日付の扱い方」と「DATE_FORMAT関数」について、学ばせました。
ページを読み込むことはできなかったので、コピペして
そのまま学習してもらい、書いてみてもらいます。
(参考1)日付、時刻、日時の計算 | kintone ヘルプ (cybozu.help)
(参考2)[DATE_FORMAT関数]日付や時刻の表示形式を指定して表示する | kintone ヘルプ (cybozu.help)
そうすると・・・
pythonで書き始めたので一度止めてもらい、
「pythonではなく、与えられたルールで記述してください」
というお願いをしてみました。
その結果・・・
DATE_FORMATについては教えたつもりでしたが、
明確に伝わっていなかった様子です。
説明してくれている通り、
kintone用にチューニングするには、もう少し学習させる
内容を検討する必要がありそうです。
一方、「{}年生」に1から15くらいまで入ってしまう形となり、
「小学生」「中学生」「高校生」という概念を
教える必要がありそうです。
いったんは・・・
「『中学生』や『高校生』も指定してください。」
と依頼をしてみました。
…これでは、
該当生徒が、小学生・中学生・高校生のどれにあたるのか。
しか指定することができません。
(「●年生」という記載はないことが見て取れると思います)
確かにそうです、僕は「中学生なのか」「高校生なのか」
を指定ほしいとしか言っていない・・・
(自分の指示が下手なことに気づかされますね)
「小学1~6年生、中学1~3年生、高校1~3年生を条件分岐して
表示できるようにしてください」
と、追加依頼してみました。
いいですね。やりたいことはほとんど完成しています。
3. 早生まれの適用
ここでちょっとした問題に気づきました。
そう、「早生まれ」が考慮されていません。
現在日から誕生日を引き算して、年齢が決まるまでは良いのですが、
このままでは、誕生日を過ぎた瞬間、学年が上がる形になってしまいます。
「日本の学生制度では、4月に学年が一つ上がることになっています。
いただいたプログラムではそれが表現されていないので、
修正してください。」
このように依頼してみると・・・
4月以降生まれの場合、年齢を+1として設定することにしたようです。
良さそうに思いましたが、逆でした。
4月以降に生まれた場合、ここでは同年1~3月生まれの人に対して
学年は1つ「下げる」べきですので、年齢も下げなければなりません。
また、先ほどは「4月に1学年上がる」と伝えましたが、
正確には「4月2日以降に生まれた場合」となります。
「4月2日以降に誕生した場合は、学年が一つ下がるようにしてください。」
とお願いしてみました。
目的のプログラムとしては完成でしょうか。
とはいえ、あまりきれいには思えないですね…。
ここまでで、
・誕生年度を設定
・現在年度-誕生年度で仮の年齢を決定
・学年を決定
ということをすれば良いことが分かりましたので、
一度、自分で計算式を作ることにしました。
4. いったん自分の力で計算を設定
まずは、「誕生年度」というものを作ります。
4月2日以降であれば、「誕生年」をそのまま使いますが、
1月1日~4月1日生まれの人の場合は、「誕生年-1」を誕生年度とします。
次に、「現在年度」から「誕生年度」を引き、仮の「年齢」を作ります。
あとは、学年に割り当てるだけなのですが、
ちょっと混乱もしており、
いったん、力業な計算式をいれて、きちんと計算されるか試しました。
こちらの計算式を「学年」フィールドの
「自動計算する」にチェックを入れて、入力します。
計算式を入れて更新しただけでは、レコードに反映されないので、
再度、csvファイルを読み込みます。
でましたね!
とはいえ、先ほどの計算式をそのままにしておくのは悲しい。
ここで再度chatGPTに依頼をし、
もっと簡単な式になおしてもらうことに。
※こういった動作を「リファクタリング」と呼ぶことを
後になって知りました(笑)
先ほどの計算式をそのまま突っ込み、
「条件分岐を減らして記述するにはどのようにするべきでしょうか。」
と聞いてみると・・・
良さそうです。
18歳以上は卒業に、
15歳以上であれば、”高”+(18-年齢)を、
12歳以上であれば、"中"+(15-年齢)を、
6歳以上であれば、"小"+(12-年齢)を、表示するということですね。
ロジックは分かったので、以下のように修正しました。
いいでしょう!
すっきりしました!
これで、現在の年度だけ更新し、csvファイルを総入れ替えすれば、
学年が一括更新されるようになりました!
今回のchatGPTとの協力では
・「中学生」「高校生」を指定して!と伝えるだけでは、
各学年に振り分けてはくれなかったこと
・日本の学校制度における「早生まれ」を伝える必要があったこと
・プログラムのリファクタリングは完璧だったこと
などが、面白いポイントでしたね!
次回は、kintoneの「ルックアップ」を使って、
別アプリから、生徒一覧の情報を取り出せるようにしてみます。
この記事が気に入ったらサポートをしてみませんか?