
AIプログラミング日記:自前カレンダーに六曜を追加したみた件
Illustratorのアクションスクリプトで(AIで)月カレンダー作っていたのですが、なんかもの足りない。そう! 一般的にカレンダーには六曜(大安・友引・先勝・先負・赤口・仏滅)なるその日の吉凶を表す、いわゆる「運勢」が表示されております。コレを入れたくなっちゃったんですヨー(笑)。
六曜の赤口は「せきぐち」じゃないんだ
まず問題として、そもそも私、六曜に関する知識がほぼありません! 仏滅、大安、友引をいう名称だけ知っているぐらいです。
そこでAI(ChatGPT)に訪ねてみました。
👦六曜って知ってますかね?
はい、六曜(ろくよう)は日本の暦(こよみ)における
六つの日柄(ひがら)のことです。
六曜は主に冠婚葬祭などの行事の日取りを決める際に
参考にされることが多いです。
六曜には以下の六つがあります。
先勝(せんしょう)
友引(ともびき)
先負(せんぶ)
仏滅(ぶつめつ)
大安(たいあん)
赤口(しゃっこう)
これらの六曜は古くから日本の文化に根付いており、
現在でもカレンダーや日常生活の中で見かけることがあります。
知ってましたねー当然か。てか私、恥ずかしながら「先負」と「赤口」の読み方知りませんでした。「さきまけ」と「せきぐち」じゃないんかい?!
きっと俺のAIがなんとかしてくれる
そんな状況ですが入れたいものは入れたい! あ~入れたい! 我慢できないときのAI頼みというわけで、お願いしてみました。
👦添付したのはカレンダーを描くスクリプトですが、日にちの横に六曜を追加できますかね?
六曜を追加するために、以下の変更をスクリプトに加えます。
六曜を計算する関数を追加し、日付の横に表示するようにします。
<コード>
すげー、するっとコードができました! んじゃ、さっそく実行してみます。
エイヤッ!

六曜が出てるー! やったー!
・・・でもこれ正しいの?
そこで検証のために六曜をオンライン表示してくれる次のサイトにアクセスして比較してみました・・・すると!?
ぜんぜん違ーう! 違いすぎるー!
期待は裏切られました。 2024年7月1日は「赤口」ですが、目の前に表示されているのは「先負」です。読めないヤツばかりじゃん。あー、これでは使い物になりません。万事休すか?
誰かのお知恵を拝借してもいいじゃない!
しかし、ここで諦めるわけにもいきません。そこで、六曜のアルゴリズムをネット検索して調査することにしました。それで分かったのが次です。
・六曜は旧暦とやらを基本にしているので、旧暦の算出が必要
・それがわかれば計算できるが、たまに特殊ルールがあるらしい
・六曜には2種類あって、それによって結果が違うときがあるらしい
よくわかりませんが、
壁高けー!
これでは、自分で作ることはもちろんできませんが、
AIに指示することもできません!
人のふんどしで相撲を取るのだ!
そこでどうしたかというと・・・必殺の<他力本願>! すなわち、
こういう面倒くさいアルゴルズムは、どこかの誰かがプログラムを公開しているはず!
という信念でネット検索です。そして見つけたのが「旧暦計算サンプルスクリプト」(awk版)です(作者様に感謝!)。
AIのawkに関する熟練度がどれだけかわかりませんが、ともかくChatGPTにこれを与えてみます。
👦添付したのは六曜を計算するプログラムです。これをillustratorのアクションスクリプトでも使えるようにライブラリ化してください
このスクリプトは、指定された年月日から六曜を計算します。
これをAdobe Illustratorスクリプトとして利用するために、
スクリプトをJavaScriptに変換し、Illustratorの環境に適応させます。
<コード>
ライブラリが出力されたので、次にカレンダーにこのライブラリを利用するように指示します。
👦ライブラリを使って、添付したカレンダー表示スクリプトの六曜を計算して日にちの横に表示してください。
添付されたカレンダー表示スクリプトに、六曜の計算および
表示機能を統合するために、以下のように変更を加えます。
<コード>
実はライブラリにいくつかの問題があり、それを修正するターンがあったのですが、最終的にはできました!
俺のカレンダーに六曜ついたよ! かっけー!

まとめ:戦い終わって日が暮れる
結局「六曜」がなんなのか、いまだによくわかりません。でも、今回も無事目的を達成できました。AIの力はもちろんですが、先人の残してくれた財産も立派なリソースですから、こういったものも利用させてもらうことで、プログラミングの幅が広がるものと思います。
突然ですが「葬送のフリーレン」にハマっておりました。そこに次のようなフレーズがでてきます。
魔法というのはイメージの世界だ。人の体にどう水が配分されているのか想像できるか?それらを取り出して操るイメージは? <略> イメージできないものは魔法では実現できない。
AIという触媒を利用できるようになったプログラミングは、なんだかこの魔法と一緒な気がしますね。たくさん魔導書を集めておけば、何かに役立つときがくるかもしれません。
というわけで、
今日も我々の勝利だったよ! ChatGPTありがとう!