天皇誕生日を計算するAppleScriptです。
# 日本ローカルなカレンダー計算の話なので、他の国では関係のない話題です。
AppleScriptによるデータ処理テーマにおいて、各種スケジュールや日数計算(締め切りまでの営業日計算)は割とポピュラーなものです。つまり、誰でもやりたいと思うし、実際に全世界的にやった人が多いことでしょう。このレベルのものを「カレンダー計算」と呼びます。
一方、手帳やカレンダー(印刷物)の制作を行う仕事(案件)が世の中に存在しており、それを行うことを「カレンダー制作」と呼んでいます。日数計算だけでなく、その日がどのような日であるかを明確にデータ処理する必要があります。
そのうえ、デザイン優先で山のように体裁を整える必要があるのと明文化されていない作成ルールを過去の制作物から読み取れ(とくに、RFC関連規約)というご無体な指示が後出しジャンケン的に出てくる、とても関わりたくない案件の数々です。
さて、天皇誕生日は現在在位中の天皇(current emperor)の誕生日を祝日(=休日)とするものです。カレンダー計算でもカレンダー制作でも、割と無視できない休日のうちのひとつでしょう。
祝日の中でも「天皇誕生日」の仕様がかなり込み入っており、頭痛のタネでもあります。とくに改元(=天皇交代)時の天皇誕生日の変更タイミングが要注意点でもあります。
昭和天皇誕生日:「天皇誕生日」→「みどりの日」→「昭和の日」
平成天皇誕生日:「天皇誕生日」→(2019年には設定されない)
令和天皇誕生日:(2020/2/23より)
とくに、2019年に天皇誕生日が設定されないこと(要注意)。「昭和の日」があっても「平成の日」がないことなど、カレンダー計算および制作時に落とし穴がいっぱいです。
国民の祝日は、カレンダー計算を行ううえでなかなか仕様が込み入っており、仕事(案件)によっては自前で計算するものの、あらかじめ数年分の祝日データを客先から支給されるケースの方が一般的でしょうか。
ただ、あらかじめ計算しておいたデータをもとに処理するという処理方法だけではデータ支給範囲でしかカレンダー計算が行えないため、自前で計算できるようにしておいたほうがよいと考えるものです。
AppleScript名:天皇誕生日の計算.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/08/28 — – Copyright © 2019 jp.piyomarusoft, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set dRes to getCurEmpBitrthday(1988) of me –> 1988/4/29 set dRes to getCurEmpBitrthday(1989) of me –> 1989/12/23 set dRes to getCurEmpBitrthday(2018) of me –> 2018/12/23 set dRes to getCurEmpBitrthday(2019) of me –> false set dRes to getCurEmpBitrthday(2020) of me –> 2020/2/23 –天皇誕生日 on getCurEmpBitrthday(targYear) –昭和、平成、令和 の誕生日定義 set curEmperrorsBirthday to {{"4/29", {1926, 1988}}, {"12/23", {1989, 2018}}, {"2/23", {2020, 9999}}} set hitF to false repeat with i in curEmperrorsBirthday copy i to {targDate, {beginYear, endYear}} if targYear ≥ beginYear and targYear ≤ endYear then set hitF to true exit repeat end if end repeat if hitF = false then return false end if set thisDate to (targYear as string) & "/" & targDate return thisDate end getCurEmpBitrthday |