/
588.txt
1057 lines (876 loc) · 52.1 KB
/
588.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[1] [DFN[[[qreki]]]] は[[グレゴリオ暦]]から[[旧暦]]に変換できる[[プログラム]]です。
'''[TIME[西暦1948年][year:1948]]から[TIME[西暦2016年][year:2016]]'''の間の[[日付]]を正しく扱えます。
[2] オリジナルは [[AWK]] [[スクリプト]]ですが、
様々な[[プログラミング言語]]に移植されて広く使われています
(>>6)。
[40] 後述の通り、もはや本[[ソフトウェア]]を使用するべきではありません。
[FIG(important)[
[19] [[日本の旧暦]]一般や他の旧暦変換表等との比較、
他の変換ソフトウェア等については、当該記事を参照。
[SEE[ [[旧暦]], [[暦の換算]], [[旧暦データファイル]] ]]
]FIG]
* 正確性
[65]
[[qreki]] およびその派生ソフトウェアの正確性には問題があります。
[FIG(important)[
[18] [TIME[西暦1948年][year:1948]]から[TIME[西暦2016年][year:2016]]の間の日付については、
正しい結果を返すことが知られています。それ以外の期間については、
誤った結果を返す場合があります。
[33] 既に正しい結果を返せる期間を過ぎている以上、メンテナンスされていない本ソフトウェアを使うべきではありません。
移植版も正しく動作しない可能性が高く要注意です。
]FIG]
[23] オリジナル版には原理の説明も入っているのですが、
移植版は十分に説明していないことがあり、利用者に誤解を与える危険性があって要注意です。
[26]
[[過去の日時]]については、実際の[[旧暦]]は時代により計算法が異なっていたところ、
本ソフトウェアは[[現代日本]]用の計算法を実装しているため、
歴史的に正しい結果を得ることができません。従って、本ソフトウェアを歴史上の出来事に関する[[暦の換算]]に用いることはできません。
[SEE[ [[旧暦]] ]]
[WEAK[(これは[[不具合]]ではなく仕様。)]]
[25] [[将来の日時]]については、そもそも原理的に不確定なものであり、
本ソフトウェアが作成された[TIME[西暦1994年][year:1994]]の時点よりも後の時代の[[日時]]を完全に予測できませんから、
正しい値を返さないとしても、必ずしも[[不具合]]というべきものではありません。
[WEAK[(かといってそれが有用かどうかはまた別の問題ですが。)]]
[30]
本ソフトウェアは[[旧暦2033年問題]]を正しく扱えません。
本ソフトウェアが作成された時点では対策が確定していなかった
[WEAK[(問題も広く知られていなかった)]]
のですから、無理も無いことです。
[SEE[ [[旧暦2033年問題]] ]]
[29]
本ソフトウェアが[TIME[西暦2224年][year:2224]]について正しく扱えないことがドキュメントにも明記されています
[SRC[>>28]]。
これも[[旧暦2033年問題]]同様の問題であることが後に知られています。
[SEE[ [[旧暦]] ]]
[31] 本ソフトウェアは[[21世紀]]中だけでも他に[TIME[西暦2017年][year:2017]]
([[西暦2017年問題]])、
[TIME[西暦2051年][year:2051]]、
[TIME[西暦2074年][year:2074]]を正しく扱えません。
これらは[TIME[西暦2000年][year:2000]]に出版された[CITE[21世紀暦]]で、
自転速度や誤差が原因で異なる[[日付]]になる可能性があると指摘されているもので
[WEAK[([CITE[21世紀暦]]は他に[TIME[西暦2096年][year:2096]]も指摘しているが、これは [[qreki]] も正しい)]]、
[[qreki]] 以外の[[ソフトウェア]]も異なる結果を返す場合があります。
[SEE[ [[旧暦]>>24] ]]
;;
[32] ただし、ここでは[CITE[21世紀暦]]が主たる表で採用しているものを正しいとしていますが、
[[未到来の日付][将来の日時]]は [[qreki]] の結果が正しい可能性も残っています。
[66]
不正確なソフトウェアの普及による被害は、
[[西暦2017年問題]]を参照。
[REFS[
[FIG(quote)[ [28] >>27
> 2224年 3月21日から、同年 4月18
日の期間(グレゴリオ暦法による日付)の月名が間違って表示する現象が確
認されています。 具体的には、 正しい答えが3月であるのに対して、 閏2
月と表示する現象です。中気の計算に問題があると判明していますが、 今の
所、良い対策方法が見つかりませんので、そのままにしてあります。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[151] [CITE[旧暦を取得する Web API]]
([TIME[2012-03-21 23:30:31 +09:00]] 版)
<http://api.sekido.info/qreki?output=usage>
]FIGCAPTION]
[FIG(quote)[
> 本スクリプトの計算精度については、暦計算研究会編の「新こよみ便利帳」に記載の新旧対照表で、2000年から2020年までを確認したところ、2017年2月26日~同3月27日までが、旧暦・六曜表示に誤差のあることが確認されています。
[FIGCAPTION[
旧暦計算ライブラリ(Perlによる旧暦計算プログラム)
<http://www3.biwako.ne.jp/~nobuaki/qreki/index.html>
]FIGCAPTION]
]FIG]
]FIG]
[FIG(quote)[
[FIGCAPTION[
[24] [CITE[QReki.javaの不具合 - Qiita]]
(2017年03月13日に更新 [TIME[2018-05-20 11:56:12 +09:00]])
<https://qiita.com/yamori813/items/b4d2d3d34e25654ecbe6>
]FIGCAPTION]
> 日本時間の2/26はユリウス日の2457810.125から2457811.124となります。ところがQReki.javaの計算値は2457811.125400158となり次の日になってしまっているので旧暦の2/1が2/27になってしまっています。
> 日をまたぐ0.125日前後に新月になるとこのように誤差でずれてしまう事がありあります。計算で出すには1分は0.000694日なので小数点以下3-4桁くらいの精度が必要と思われます。
> そもそもQReki.javaのユリウス日の扱いはちょっとおかしい気がします。上記の数値はちょっといじって出しています。
> QReki.javaはawkスクリプトからの移植で、このawkスクリプトはいろいろな言語に移植されているようですが、他でも問題が起きている可能性があるかと思われます。
> [SNIP[]] 根本的に直すのは難しいのでアプリには2017/2/26から3/27までのworkaroundを入れました。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[57]
[CITE[C版 旧暦計算プログラム]],
by 白井豊(Converted in 2017.08.25),
[TIME[2017-08-24T23:44:28.000Z]], [TIME[2021-02-25T05:50:11.686Z]] <http://souzousha.iinaa.net/www/Source/oldDateC.txt>
]FIGCAPTION]
[PRE[
// 旧暦の2017年問題で, 新月になる旧暦2017年2月1日は
// 新暦2月26日23時58分ですが,これを2月26日とするか27日にするか
// という問題があり,本プログラムでは2月27日となります。
//
// もし,新暦2017年2月26日を旧暦2017年2月1日とみなす場合,
// 求められた日付を以下のようにずらす必要があります。
//
// 1/30→2/1, 2/1~2/29 →2/2~2/30
]PRE]
]FIG]
;; [58] 2月27日とする本プログラムは誤り。
[TIME[2017-02-27]]を半年も過ぎた[TIME[2017-08-25]]にこのような誤ったプログラムをわざわざ移植するという不思議 (過ぎたからこそ、
間違っていても構わないということかも?)。
- [62]
[CITE@ja[2017年旧暦二月の朔: [[suchowan's blog]]]],
2017年10月18日,
[TIME[2022-06-19T09:26:17.000Z]] <https://suchowan.at.webry.info/201710/article_18.html>
--
[FIG(quote)[
[FIGCAPTION[
[63]
[[anonymous]],
2017年10月21日 09:19
]FIGCAPTION]
>
震源地は1993年に公開された旧暦計算サンプルスクリプト(qreki.awk)で間違いないでしょう。
このスクリプトはいわゆる略算式を用いているわけですが、地球の自転の遅れを無視しています。それはドキュメントに書かれているのでいいとして、一番の問題は「視黄経」ではなく「黄経」で計算していることです。
]FIG]
]REFS]
-*-*-
[106]
本ソフトウェアが誤った結果を生成することは、
オリジナル版制作当時に出来たことの限界もありますから、
あまりその責任を追求しすぎるのも適切ではありません。
しかしその社会的影響の大きさを考えると、
誤りがどのように発生し、見過ごされてきたかは検討されるべきで、
今後の教訓とされるべきといえます。
[100]
ドキュメントによると、
- [101]
「任意の日付を何ヶ所か与えて計算させ」て[CITE[暦の百科事典]]と比較
- [102]
[TIME[1600-01-01]]から[TIME[1899-12-31]]まで
「91日(約4分の1年に相当する)を増分として、 新暦の暦日を与えて旧暦の日付を計算」
する過程の「朔日行列が正常に生成される」
- [103]
[TIME[1873-01-01]]から[TIME[2099-12-31]]まで
「1日(つまり、毎日)を増分として、 新暦の暦日を与えて旧暦の日付を計算」
して
「結果が正しく表示されている」
... を検査し、西暦2224年問題 (>>28) を除き問題がないと確認した
[SRC[>>70]]
とされています。
[104]
これを読むと十分な正しさが保証されているように感じられます。
ところが[TIME[平成11(1999)年][1999]]に
[[JavaScript]]
移植版の作者が[TIME[西暦1884年][1884]]、
[TIME[西暦1908年][1908]]、
[[西暦2017年問題]]、
[[西暦2033年問題]]を発見しています (>>93)。
なぜオリジナル版でこれらの問題が検出されなかったのでしょうか。
(できれば当時の [[AWK]] 版の実行環境を再現して検証したいところですね。)
[105]
>>101
は
[CITE[暦の百科事典]]
を規範としているのですが、
>>103 は
「結果が正しく表示されている」
ことしか検査していません。
適当な正解データが得られなかったために[[西暦2017年問題]]等は見落とされたのでしょうか。
西暦2224年問題を検出しながら、西暦2033年問題を検出できなかったのはなぜでしょう。
[107]
オリジナル版制作のきっかけとなった [SRC[>>70]]
[CITE[TODAY]] というソフトウェアは、
[[JavaScript]]
移植版の作者が検証に使ったものなのですよね
[WEAK[(正確に言えば両者はバージョンが違い、その間に大きな変更が加わっているのですが)]]。
オリジナル版は
[CITE[TODAY]]
を検証に使わなかったのだろうかという疑問もあります。
* オリジナル版
[69]
オリジナルは[[日本語]] ([[シフトJIS]]) 化された
[[MS-DOS]]
版 [CODE[gawk]] 用の [[AWK]] [[スクリプト]]で、
[[高野英明]]により開発されました
[SRC[>>70]]。
[71]
現在も[TIME[1994-10-02]]付けで配布 [SRC[>>8]] されているものはドキュメントに
「Rev 1.1」
と書かれており、
[[著作権表示]]が[TIME[西暦1993年][1993]]と[TIME[西暦1994年][1994]]になっているものです。
[SRC[>>70]]
[3] このスクリプトは[[先発グレゴリオ暦]] ([[0年]]あり) を入力とし、
[[旧暦]]と[[六曜]]を出力としています。
[5] ただしこのスクリプトは[[自由ソフトウェア]]ではありませんから、注意が必要です。
[4] [[qreki]] のドキュメントには[[旧暦]]についての詳細な解説が含まれています。 >>8
からダウンロードできるファイルに含まれているほか、 >>27,
>>70 にも転載されています。
[73]
「Rev 1.1」になる前の元のバージョン (1.0) は[TIME[西暦1993年][1993]]に作成されたと推測されますが、
入手不能です。当時は [[NIFY-Serve]] や
[[ASAHI-NET]] で配布されていたと思われます。
[REFS[
- [8] [CITE[QRSAMPの詳細情報 : [[Vector]] ソフトを探す!]] ([TIME[2014-09-05 03:38:32 +09:00]] 版) <http://www.vector.co.jp/soft/dos/personal/se016093.html>
- [27] [CITE[[[旧暦計算サンプルスクリプト]] Rev 1.1 説明書]] ([TIME[2008-02-08 08:59:26 +09:00]] 版) <http://api.sekido.info/qreki-doc>
-- サーバー接続不可 [TIME[2022-06-19T12:25:58.600Z]]
- [70]
[CITE@en[qreki_py/QREKI.DOC at master · fgshun/qreki_py · [[GitHub]]]], [TIME[2022-06-19T12:27:45.000Z]] <https://github.com/fgshun/qreki_py/blob/master/QREKI.DOC>
]REFS]
-*-*-
[108]
製作に当たり当時出版されていた[[暦]]関係の書籍が一通り参照されたようです。
その他、
先行していたソフトウェアとして
- [109] [CITE[TODAY]]
- [110] [CITE[大安,仏滅が一発でわかる六曜プログラム]], [[鈴木隆]]
-- [111] [CITE[日経バイト]] JANUARY 1988 hobby p.239-243
... が参照されていました。
[SRC[>>70]]
[112]
ただし[[ソフトウェア]]としての継承(派生)関係には無いみたいです。
* 移植版
[6] [[qreki]] は数多くの派生版が知られています。
[72] オリジナル版の「Rev 1.1」からの直接または間接の移植と思われます。
(オリジナル版に基づかず孫以下の世代のものもあります。)
** JavaScript 移植版
[88]
多くの派生版がオリジナル版と共に参照しているのが、
[[長野隆]]が
[[Webブラウザー]] / [[WSH]] 向け
[[JavaScript]]
に移植した
[DFN[[CODE[qreki.js]]]]。
[95]
自身の[[Webサイト]]の[[六曜]]表示に従来は一覧表を用いていたところ、
[TIME[1999-11-08]]に翌年のデータがないことに気づき、
[[qreki]]
を移植して利用することにしました。
[SRC[>>87]]
[96]
[[qreki]] は当時の主要な[[ポータルサイト]]の1つ [[Infoseek]]
で発見したのだといいます。
他の実装は一覧表形式で、 [[qreki]] は計算方式だったのが採用理由と説明されています。
[SRC[>>87]]
一覧表の継続的なメンテナンスを嫌っての判断だったのでしょう。
[97]
ところが[TIME[1999-11-16]]に当時人気だった[[カレンダー]]ソフトウェアの1つ
[CITE[TODAY]]
との比較で [[qreki]] の[[旧暦]]計算の誤りに気づきました。
そのため[[六曜]]表示は [[qreki]] ではなく、
従来通りの一覧表形式に戻すことにしました。
[SRC[>>93]]
[[qreki]] の[[西暦2017年問題]]や[[西暦2033年問題]]もこの時既に発覚していました。
[98]
にも関わらず、 [CODE[qreki.js]] はその後も
[WEAK[([[旧暦]]日付計算に関係しない)]]
改良が加えられて配布され続けていました。
[[旧暦]]日付の誤りについては、
リンクをたどれば到達できるものの、
配布ページでは何の注意もされていませんでした。
[SRC[>>86]]
;; [99]
他のソフトウェアとの比較で誤算に気づいたところまでは良かったのですが。
[TIME[西暦2000年][2000]]問題の当事者である
[WEAK[(同じページに [[JavaScript]] の仕様の非互換による誤動作が発生した旨が書かれている)]]
にも関わらずこの対処は迂闊でしたね。
十数年も先ならいいだろうと思ったのでしょうか。
[WEAK[(同じような過ちはこの時代の他の大手企業等もやらかしているので、あまりこの判断を責めるのも酷かもしれませんが。 [SEE[ [[西暦2000年問題]] ]])]]
[REFS[
-
[FIG(quote)[
[FIGCAPTION[
[87]
[CITE[巻頭言 99]], [TIME[2022-06-20T03:13:21.000Z]], [TIME[2004-02-01T03:13:25.673Z]] <https://web.archive.org/web/20040201030732/http://park1.wakwak.com/~y-nagano/199901.html#19991108>
]FIGCAPTION]
>
[BOX(center)[
[B[1999年11月8日(月)]]
]BOX]
>[SNIP[]]
> このページ上部に「大安」「仏滅」などの六曜表示がついていますが、これはあらかじめ調べた六曜表をもとにテーブル参照をするJavaScriptを作成して表示しています。この表が今年の年末までしか用意されていないので、来年以降、六曜表示ができません。
>[SNIP[]]
>そこで、[ASIS[[B[Infoseek]]][リンク]]を使って旧暦を計算するアルゴリズムを検索したところ、そのほとんどがテーブル参照方式であった中に、「[ASIS[旧暦計算サンプルスクリプト/H.Takano(C)1993,1994][リンク先: >>8]]」という、きちんと計算して求める方式のものを見つけました。MS-DOS上のjgawkで書かれたスクリプトで、詳しいドキュメントが付いています。
> そのAWKで書かれたプログラムを、Webブラウザで動作するように[B[ECMAScript]]([ASIS[ECMA-262][リンク]])で書き直したのが、「[ASIS[qreki.js][リンク]]」です。ECMA-262準拠のJavaScriptを搭載する、[B[Netscape Navigator 3.01以降]]、[B[Microsoft Internet Explorer 4.0以降]](MSIE 3.0xの方は[B[Script Engines 5.0]]を[ASIS[Microsoftのサポートページ][リンク]]からダウンロードしてインストールすることで動作します)で動作します。[ASIS[ECMA-262に準拠していないJavaScript対応ブラウザをご使用の場合はエラーが出ます。面倒なのでバージョンチェックは省略しています。我慢してください。][赤字]]こちらでは、MSIE5.0-Win98 と Netscape Navigator 4.61-linux-glibc で動作を確認済みです。
]FIG]
-- [92] [CITE[[[旧暦]]計算 JavaScript(ECMAScript) Library "qreki.js" Version 1.5]],
[[Nagano Yutaka]],
(C)1999-2001,
[TIME[2022-06-20T03:24:41.000Z]] <https://web.archive.org/web/20040419171935/http://park1.wakwak.com/~y-nagano/Programs/koyomi/qreki.js>
-- [89]
[CITE[巻頭言 99]], [TIME[2022-06-20T03:16:42.000Z]], [TIME[1999-10-09T04:15:32.342Z]] <https://web.archive.org/web/19991009041059/http://www.bekkoame.ne.jp/%7Ey-nagano/message.html>
--- [90] かつてはここにあったとされる。 >>87 の古い版と思われる。
--- [91] [[旧暦]]関連の記述は [[Internet Archive]] に現存せず。
-
[FIG(quote)[
[FIGCAPTION[
[93]
[CITE[巻頭言 99]], [TIME[2022-06-20T03:30:43.000Z]], [TIME[2004-02-01T03:30:47.678Z]] <https://web.archive.org/web/20040201030732/http://park1.wakwak.com/~y-nagano/199901.html#19991116>
]FIGCAPTION]
>
[BOX(center)[
[B[1999年11月16日(火)]]
]BOX]
> [ASIS[先週この欄にて公開][リンク先: >>87]]した「旧暦計算スクリプト」ですが、テーブル参照型の暦計算プログラムの金字塔である「[ASIS[Today ソースコード][リンク]]」([ASIS[森佳史さん][リンク]]作)の中の旧暦西暦換算表 "kyutbl.c" と照合してみました。西暦 1870年2月1日 ~ 2100年3月11日 の間で旧暦の毎月1日の日付を照合したところ、以下の点で私のスクリプトは「Today」と違った結果を出していました。
>
[PRE[
旧暦 西暦(誤) 西暦(正) 誤差を含む期間(西暦)
-----------------------------------------------------------
1884/4/1 1884/4/25 1884/4/26 1884/4/25 - 1884/5/24
1908/9/1 1908/9/26 1908/9/25 1908/9/25 - 1908/10/24
2017/2/1 2017/2/27 2017/2/26 2017/2/26 - 2017/3/27
2033/11/1 (月名を閏11と間違える) 2033/12/22 - 2034/1/19
]PRE]
>[SNIP[]]
> このページの上部に表示している六曜は換算表をもとに出力していることは先週書きましたが(このページのHTMLソースを見れば一目瞭然)、ECMAScript版の「旧暦計算スクリプト」は動作環境に制限があるので、それを使って来年の分の換算表を作成して今まで通りに六曜を表示させることにしました。
>[SNIP[]]
]FIG]
-
[FIG(quote)[
[FIGCAPTION[
[94]
[CITE[巻頭言 2000~]], [TIME[2022-06-20T03:51:42.000Z]], [TIME[2004-02-18T16:33:46.842Z]] <https://web.archive.org/web/20040218162913/http://park1.wakwak.com/~y-nagano/200001.html#20010418>
]FIGCAPTION]
>
[BOX(center)[
[B[2001年4月21日(土)]]
]BOX]
> [ASIS[JavaScript旧暦計算ライブラリ][リンク]] Version 1.3 にはバグがありました。月齢を計算する部分で早トチリして誤った計算をしていました。修正版の Version 1.31 を配布していますので、そちらをご使用ください。
>
[BOX(center)[
[B[2001年4月18日(水)]]
]BOX]
>[SNIP[]]
> [ASIS[JavaScript旧暦計算ライブラリ][リンク]]に、月齢を計算するメソッド(というかプロパティ)を追加しました。月と太陽の黄経の経度差が1朔望月(≒29.53089日)で1回転するという前提で:
> 月齢[day] ≒ norm( 月黄経[degree] - 太陽黄経[degree] ) ÷ 360 × 29.53089
>という式で計算しています。norm() は、角度を0-360の間に正規化する関数です。詳しくは、[ASIS[ライブラリのソースコード][リンク]]をご覧下さい。このソースコードの拡張子を「.js」に変更して保存すると、HTMLやWSHなどから呼び出すことができます。
> [SNIP[]]
]FIG]
- [10] [CITE[[[旧暦]]計算JavaScript]] ([TIME[2009-07-12 21:39:19 +09:00]] 版) <http://park1.wakwak.com/~y-nagano/Programs/koyomi/>
-- 消滅確認 [TIME[2022-06-20T03:07:57.200Z]]
--
[FIG(quote)[
[FIGCAPTION[
[86] [CITE[[[旧暦]]計算JavaScript]],
[[Nagano Yutaka]],
最終更新:2001年10月4日(木),
[TIME[2022-06-20T03:07:00.000Z]], [TIME[2003-10-31T16:20:56.283Z]] <https://web.archive.org/web/20031031162044/http://park1.wakwak.com/~y-nagano/Programs/koyomi/>
]FIGCAPTION]
>このスクリプトは、高野英明氏による「旧暦計算サンプルスクリプト/H.Takano(C)1993,1994」を私がJavaScriptに移植したものです。
>Version 1.5 [Oct.4,2001] 月相を追加。
>Version 1.4 [Jun.3,2001] 月齢を定義通りに計算するよう修正。輝面比を追加。
>Version 1.31 [Apr.21,2001] 月齢計算のバグ修正。
>Version 1.3 [Apr.18,2001] 月齢近似値計算機能を追加。
> ©1999-2001; by Nagano Yutaka
]FIG]
]REFS]
** Perl 移植版
[123]
[TIME[2000-06-09]]までに
[[N.Ueno]]
が公開した
[[Perl]] 移植版も広く利用・参照されました。
当時は[[CGI]]の最盛期で、[[CGIスクリプト]]の記述言語として最も人気があったのが
[[Perl]]
でした。
[126]
[[qreki]]
の
[[JavaScript]]
版を参照しつつ、
元の [[AWK]] 版から移植されました。
[SRC[>>81]]
[125]
[[N.Ueno]]
は自作の[[カレンダー]]
[[Webアプリケーション]]
([[Perl]] で書かれた[[CGIスクリプト]])
[CITE[Web Calendar2]]
の[[六曜]]表示機能を、
従来の表方式のものから計算方式に置き換えるため、
[[qreki]]
を移植したのだそうです。
[SRC[>>81]]
[124]
[[Perl]]
スクリプト単体でも
[CITE[Web Calendar2]]
としてもよく使われていたようで、
[CITE[Web Calendar2]]
が設置され稼働中のサイトが[TIME[令和4(2022)年][2022]]現在も数件見つけられます。
[127]
製作者は[TIME[西暦2000年][2000]]から[TIME[西暦2020年][2020]]の範囲の計算結果を
[CITE[新こよみ便利帳]]
と比較し、
[[西暦2017年問題]]を検出したことを書いています
[SRC[>>81]]。
それでも当座の目的には支障ないと判断したのでしょうか。
;; [136]
[[JavaScript]] 版の移植者が他の年の問題も検出していたこと (>>93)
を知っていたのかどうか、この記述だけでははっきりしません
(時系列的には知り得たはずですが)。
;; [137]
元スクリプトの信憑性に疑問を持ったのか、
移植による動作の変化を懸念したのか、
なんにせよ書籍で出版された[[旧暦]]と比較し確認したのは素晴らしい点。
[128]
移植の動機は従来の表形式の実装では期間外を表示できないことにあった [SRC[>>81]]
ようです。
であるとすれば、わずか17年で目的を達し得なくなるのですが、
値が計算不能となるよりは、間違っていても値が得られる方がましと判断したのでしょうか。
[135]
ともかく、
[[Webサイト]]にあって[[ソースコード]]にない[[西暦2017年問題]]への言及は無視されて配布されたり、
派生版が作られたりすることになりました。
[REFS[
-
[FIG(quote)[
[FIGCAPTION[
[81] [CITE[[[旧暦]]計算ライブラリ(Perlによる旧暦計算プログラム)]],
[[N.Ueno]],
[TIME[2022-06-20T02:29:16.000Z]], [TIME[2000-10-19T05:58:20.502Z]] <https://web.archive.org/web/20001019055809/http://www3.biwako.ne.jp/~nobuaki/qreki/index.html>
]FIGCAPTION]
>当初Web calendar2のVer0.12bまでは六曜表示に変換テーブルを使用して算出を行っていましたが、テーブルデータのある期間しか利用できないといった欠点がありました。これでは、将来に渡って使用することが困難なため、実際に太陽と月の黄経を計算する方法を模索していました。参考図書を頼りにプログラムを書いてみたのですが、どうも精度上の問題で、朔が午前0時近辺にくると、朔の日付が一日ずれてしまい、その結果、旧暦計算や六曜計算において、実際とは異なる値になり、頭を抱えておりました。
> そんな時に林さんという方からメールをいただき、Java Scriptによる旧暦計算プログラムがあることを知りました。またそれは元々はAWKスクリプトの移植ということも分かりました。AWKのソースからPerlに移植し、Web Calendar2 Ver0.20から、このライブラリを使用して旧暦や六曜を計算しています。
> 本スクリプトの計算精度については、暦計算研究会編の「新こよみ便利帳」に記載の新旧対照表で、2000年から2020年までを確認したところ、2017年2月26日~同3月27日までが、旧暦・六曜表示に誤差のあることが確認されています。
]FIG]
--
[FIG(quote)[
[FIGCAPTION[
[82]
[CITE[[[Web Calendar2]](Web上でスケジュール管理ができるフリーCGI)]],
[[N.Ueno]],
最終更新日[TIME[6月9日][2000-06-09]],
[TIME[2022-06-20T02:37:02.000Z]], [TIME[2000-06-21T12:43:50.624Z]] <https://web.archive.org/web/20000621124234/http://www3.biwako.ne.jp/~nobuaki/webcal/index.html>
]FIGCAPTION]
>ブラウザ上でスケジュール管理ができるPerlで書かれたCGIフリーソフトです。FIN INC.のWeb Calendarを元に作成し、機能追加を施してあります。オリジナルと区別するためにWeb Calendar2としてあります。今回FIN INC.の許可を得ましたのでソースの公開をいたします。
]FIG]
--- [83]
オリジナルの
[CITE[Web Calendar]]
は
[[Internet Archive]]
所蔵のソースコードによると[[旧暦]]、[[六曜]]に未対応。
-- [7] [CITE[[[旧暦]]計算ライブラリ(Perlによる旧暦計算プログラム)]] ([TIME[2014-05-27 12:48:31 +09:00]] 版) <http://www.paphio.jp/webcal/qreki.html>
---
[FIG(quote)[ [80] [TIME[2022-06-20T02:23:41.000Z]]
>
このページは、Web Calendar2の配布元である"http://www3.biwako.ne.jp/~nobuaki/webcal/"を、「Web システム手帳」が再構成したものです。リンクを除き、ほぼ原文のままになっていますので(2002年ころ)、現在と内容が合わないものがあります。
]FIG]
---
[FIG(quote)[
[FIGCAPTION[
[84] [CITE[変更点]], [TIME[2014-05-27T12:28:08.000Z]], [TIME[2022-06-20T02:39:12.202Z]] <http://www.paphio.jp/webcal/change.html>
]FIGCAPTION]
>■Version 0.12b -> Version 0.20の変更点 (2000.6.9)
>[SNIP[]]
: ユーザーカスタマイズ機能: 時計表示や六曜表示、24節気、旧暦表示などについては、クッキーを利用してユーザー側が表示・非表示を指定できるようになりました。
: 六曜を求める際の計算化: 六曜を求める際に、旧暦計算を太陽と月の黄経を実際に計算するようにしました。従って従来のように六曜の表示に年度の制限がなくなりました。(※制限が無くなったといっても、使用している計算式は略算式なので、未来永劫に渡って使用できるとは限りません。)
: 24節気、旧暦の表示: 黄経計算を行うことにより、24節気(夏至、冬至、大寒、大暑、その他)と旧暦の表示が可能となりました。
>
[SNIP[]]
>
■Version 0.10a -> Version 0.11の変更点 (99.11.10)
>
: 六曜の表示: 六曜(大安、仏滅、友引等)を選択表示できるようにした。ただし2007年2月18日まで。19日以降はでたらめに表示されます。
]FIG]
---- [85]
[[qreki]] 化以前の版は [[Internet Archive]]
等にも所蔵なし。
-
[FIG(quote)[
[FIGCAPTION[
[134]
[CITE[[[TClock]]スレッド part13 - TClock2ch付属サイト…]], [[http://pc2.2ch.net/test/read.cgi/win/1049544136/]], [TIME[2022-06-20T08:17:31.000Z]] <http://tclock2ch.no.land.to/log/part13.html>
]FIGCAPTION]
>
727 名前:721:03/05/25 10:24 ID:8+PhQg1S
>
[SNIP[]]
>
perlの場合
ttp://www3.biwako.ne.jp/~nobuaki/qreki/
からスクリプト拾ってきて、
]FIG]
]REFS]
[129]
[[Perl]]
の実装としてよく参照されるものがもう1系統あります。
現存しないため、
両者の関係は不明です。
[REFS[
- [15] [CITE[[[qreki.pl]]について]] ([TIME[2001-04-05 04:49:24 +09:00]] 版) <http://homepage2.nifty.com/sophia0/qrekidisp.html>
-- [77] 消滅確認 [TIME[2022-06-19T13:53:51.000Z]]
-- [119] >>9, >>116, >>121, >>138 からも参照されている。
--
[FIG(quote)[
[FIGCAPTION[
[122] [CITE[tiki-niki: [[MT]]2.65->2.66]],
[[ticky]],
2004年01月15日 22:33,
[TIME[2022-06-20T08:11:12.000Z]], [TIME[2004-01-20T10:43:02.250Z]] <https://web.archive.org/web/20040120100917/http://azure.atso-net.jp/ticky/niki/000058.html>
]FIGCAPTION]
>ついでに、[ASIS[トップページ][リンク]]の右サイドに、
現在の暦を入れてみました。
>これについては、[ASIS[こちら][リンク]]の[ASIS[qreki.pl][リンク]]を使わせてもらっています。
]FIG]
]REFS]
** その他のバージョン
[REFS[
-
[162]
[CITE@ja-JP[うにっき(2003-04-10)]], [[UECHI Yasumasa]], [TIME[2022-06-20T09:29:13.000Z]], [TIME[2004-07-12T00:12:22.576Z]]
<https://web.archive.org/web/20040712001144/http://www.potaway.net/tdiary/20030410.html>
--
[FIG(quote)[
[FIGCAPTION[
[161]
[CSECTION[tDiary で旧暦表示 (pure Ruby版)]],
2003-04-10 Thu
]FIGCAPTION]
>perl で書かれた[ASIS[旧暦計算スクリプト][リンク]]をRubyで書き直してみました。コンパイルが不要な分、[ASIS[Calendarモジュール][リンク]]よりは導入が容易だと思います。欲しい方は御自由にどうぞ。
]FIG]
-- [163] 移植元の Perl 版は >>81
-- [164] [TIME[2022-06-20T09:33:31.000Z]] <https://web.archive.org/web/20040825025944/http://u.dhis.portside.net/misc/qreki.rb>
--- [165]
[TIME[平成17(2005)年][2005]]時点で既に失われていた [SRC[>>158]]。
- [53] [CITE[スクリプト ダウンロード]], [TIME[2020-09-21T03:54:19.000Z]] <http://www.2chan.net/script/>
-- [9] ([TIME[2012-12-13 06:09:51 +09:00]] 版) <http://www.2chan.net/script/qreki.php.txt>
--- [115] [[Internet Archive]]
所蔵は[TIME[2003-04-25]]が最古。
-- [114] [[Perl]] 版 >>81 からの派生 [SRC[>>53]]。
-- [171] オリジナル版、
Perl 版2種を参照している。
-- [113]
人気[[掲示板]]サービス
[CITE[ふたば☆ちゃんねる]]
で利用しているスクリプトを公開しているとのこと。
--
[168]
[CITE@ja[[[旧暦]]計算ライブラリ。 – NOBODY:PLACE]],
December 11, 2005,
[TIME[2022-06-20T10:03:22.000Z]] <https://nplll.com/2005/12/post_634-2/>
---
[169] オリジナル版、
Perl 版 >>81
や Perl アプリケーション用派生版を参照している。
- [16] [CITE[qreki.php が動かないので修正 - babu_babu_babooのごみ箱]] ([TIME[2014-08-12 15:30:55 +09:00]] 版) <http://d.hatena.ne.jp/babu_babu_baboo/20131129/1385688401>
-
[FIG(quote)[
[FIGCAPTION[
[11] [CITE[[[旧暦]] for VBの詳細情報 : [[Vector]] ソフトを探す!]],
2002.05.27,
[TIME[2014-09-09 08:02:13 +09:00]] <http://www.vector.co.jp/soft/win95/personal/se243537.html?g>
]FIGCAPTION]
>本ソフトは高野氏が作成した「旧暦計算サンプルプログラム QRSAMP」と長野隆氏が作成した旧暦計算 JavaScript(ECMAScript) Library "qreki.js"をVisual Basicに移植した旧暦を表示するサンプルソフトです。
]FIG]
-
[179]
[CITE[M's folder: [[MT]] 旧暦表示プラグイン]],
[[mura]],
二〇〇三年 九月 二十日(土)
旧暦 八月二十四日 先勝
癸未年 八月廿四日,
2003年9月20日 18:17,
[TIME[2014-07-30T09:04:12.000Z]], [TIME[2022-06-20T10:18:28.753Z]] <http://www.villagewood.net/blog/archives/000118.html>
--
[175]
[CITE[M's folder: [[MT]] 旧暦表示プラグイン その2]],
[[mura]],
二〇〇三年 九月 二十三日(火)秋分の日
旧暦 八月二十七日 仏滅 秋分
癸未年 八月廿七日,
2003年9月23日 14:55,
[TIME[2009-10-19T14:23:37.000Z]], [TIME[2022-06-20T10:12:23.659Z]] <http://www.villagewood.net/blog/archives/000126.html>
-- [176]
コメント:
[[mura]],
2003年10月 6日 14:33
--
[172]
[CITE[M's folder: [[MT]] 和風日付表示プラグイン その2]],
[[mura]],
二〇〇三年 十一月 六日(木)
旧暦 十月十三日 仏滅
癸未年 十月十三日,
2003年11月 6日 01:15,
[TIME[2009-09-04T05:29:58.000Z]], [TIME[2022-06-20T10:08:25.498Z]] <http://www.villagewood.net/blog/archives/000227.html>
--
[173] Perl 版 >>81 の派生。
--
[174]
オリジナル版も参照している。
--
[177]
開発前に
[[when.exe]]
も参照したようだが、
「そもそも、旧暦表示を考えたときに、このプログラムはチェックしていたのですが、高機能過ぎるのと、DOSのプログラムなので直接は使えないということで除外していたんですよね。」
とのこと
[SRC[>>176]]。
--
[178]
オリジナル版のドキュメントを読んで歴史的日時に適用できないことを理解していたようですが
[SRC[>>175]]、
近未来の破綻までは思い至らなかったのか、
Perl 版 >>81
の作者の[[Webサイト]]上の注意文にも気づかなかったようです。
-
[130]
[CITE[[[PyukiWiki]] 共同開発サイト - PyukiWiki/Plugin/Nanami/exdate - PyukiWiki/プラグイン/ななみ/exdate]], [[PyukiWiki Developers Team]], [TIME[2022-06-20T08:14:42.000Z]], [TIME[2006-05-22T22:11:46.136Z]] <https://web.archive.org/web/20060522214846/http://pyukiwiki.sourceforge.jp/PyukiWiki/Plugin/Nanami/exdate/>
-- [132] 「Copyright (C) 2005-2006 by ななみ. 」
-- [131] >>81 の派生版を収録。
-- [133] [CITE@ja[/54728/explugin-exdate-1.05.zipをダウンロード - [[PyukiWiki]] - [[OSDN]]]], [TIME[2022-06-20T08:16:13.000Z]] <https://ja.osdn.net/projects/pyukiwiki/downloads/54728/explugin-exdate-1.05.zip/>
-
[120] [CITE@ja[占いソフトを作りたい -四柱推命などのソフトを作ってみたいのですが、 やっ- | [[OKWAVE]]]], [TIME[2022-06-20T07:07:19.000Z]] <https://okwave.jp/qa/q2120715.html>
--
[FIG(quote)[
[FIGCAPTION[
[121]
[CSECTION[回答No.1]],
[[Dpop]],
2006/04/29 21:09
]FIGCAPTION]
>
QRSAMP(MS-DOS/パーソナル)
http://www.vector.co.jp/soft/dos/personal/se016093.html
>[SNIP[]]
>
qreki.plについて
http://homepage2.nifty.com/sophia0/qrekidisp.html
>
僕は、このライブラリを独自に改造したものを利用しています。と、言ってもアルゴリズムを追加したのでは無く、節入り日を求めたり、24節気以外の雑節を取り出すのに都合が良い様に書き換えただけですが。
]FIG]
-
[FIG(quote)[
[FIGCAPTION[
[147]
[CITE@en[exocet's [[Wiki]] - トップページ]], [TIME[2022-06-20T09:00:23.000Z]], [TIME[2012-11-09T18:59:09.156Z]] <https://web.archive.org/web/20121109184949/http://310f.com/exocet/hiki/>
]FIGCAPTION]
>
[BOX[
*tDiary
-[SNIP[]]
- [ASIS[旧暦六曜表示プラグイン][リンク]]
]BOX]
]FIG]
-- [148] リンク先は [[Internet Archive]] に所蔵なし。
--
[FIG(quote)[
[FIGCAPTION[
[149]
[CITE@ja[exocet's [[Wiki]] : Recent Changes]],
[TIME[2013-11-06T15:55:24+00:00]],
[TIME[2022-06-20T09:05:54.000Z]] <https://web.archive.org/web/20131212112837if_/http://310f.com/exocet/hiki/?c=rss>
]FIGCAPTION]
>
[PRE(code XML)[
<item rdf:about="http://310f.com/exocet/hiki/?jqreki.rb">
<title>旧暦六曜表示プラグイン</title>
<link>http://310f.com/exocet/hiki/?jqreki.rb</link>
<dc:date>2013-11-06T15:55:24+00:00</dc:date>
<content:encoded><![CDATA[<div><h2><span class="date"><a name="l0"> </a></span><span class="title">これは何?</span></h2>
<p>旧暦六曜表示プラグインです。</p>
<p>日記の日付部分に、六曜(大安 赤口 先勝 友引 先負 仏滅)、旧暦の月日を表示します。</p>
<h2><span class="date"><a name="l1"> </a></span><span class="title">インストール</span></h2>
<p>qreki.rbをjqreki.rbからインクルード出来る場所にコピーしておく必要があります。</p>
<h2><span class="date"><a name="l2"> </a></span><span class="title">使い方</span></h2>
<p>「基本」-「表示一般」-「日付フォーマット」で、以下を指定します。</p>
<ul>
<li>%R … 六曜(大安 赤口 先勝 友引 先負 仏滅)</li>
<li>%Q … 旧暦の月</li>
<li>%q … 旧暦の日</li>
<li>%S … 二十四節気</li>
</ul>
<h2><span class="date"><a name="l3"> </a></span><span class="title">ダウンロード</span></h2>
<div class="plugin">{{attach_anchor_string("添付:jqreki_20131106.zip","jqreki_20131106.zip")}}</div>
<h2><span class="date"><a name="l4"> </a></span><span class="title">備考</span></h2>
<p>誰かキレイに書きなおしてくれ~。</p>
</div>]]></content:encoded> </item>
]PRE]
]FIG]
-- [146] >>116 から <http://www.310f.com/exocet/hiki/?jqreki.rb> が参照されている。
--
[155]
[CITE@ja-JP[かっとびくん日記(2005-11-16)]], [TIME[2022-06-20T09:20:10.000Z]], [TIME[2007-07-28T22:21:21.698Z]]
---
[156]
[CSECTION[[[六曜]]プラグインというのはどうか]],
2005年11月16日 水曜日
<https://web.archive.org/web/20070728222052/http://www.310f.com/exocet/tdiary/20051116.html#p05>
--
[FIG(quote)[
[FIGCAPTION[
- [157]
[CITE@ja-JP[__&&[&&__Google__&&]&&__[Analytics]Google Analytics、表示出た!(2), [Hatena__&&]&&__最近のはてなはMMORPGみたい, [tDiary]__&&[&&__plugin]__&&[&&__jroku.rb]六曜プラグインというのはどうか, [TA.. - HsbtDiary(2005-11-17)]], [[SHIBATA Hiroshi]], [TIME[2005-11-18T02:02:54.000Z]], [TIME[2022-06-20T09:22:20.240Z]]
--
[158]
[CSECTION[[ASIS[六曜プラグインというのはどうか][リンク]]]],
2005/11/17 (木)
<https://www.hsbt.org/diary/20051117.html#p03>
]FIGCAPTION]
>プラグインフォルダに入れるだけで動きます。あとは日付フォーマットで%Rと書くと、その部分が対応する六曜に変換されます。動かすには[ASIS[calendar(暦計算モジュール)][リンク]]と付属しているcalclass.rbが必要です。
]FIG]
--- [159] 記事の題名のリンク先が >>156。
--- [160] >>149 で配布されていたのはここで作られたものか?
--- [166] [[calendar(暦計算モジュール)]]は別記事参照。
[[qreki]]
の系譜でなさそう。
---- [167] だとすると [[qreki]] から継承したのは名前だけ?
- [12] [CITE[暦に興味を持ったので、旧暦計算プログラム QREKI.AWK を [[Python]] に移植してみた - 銀月の符号]] ([TIME[2013-06-06 05:05:23 +09:00]] 版) <http://d.hatena.ne.jp/fgshun/20091127/1259302979>
-- 移転確認 [TIME[2022-06-20T06:52:49.000Z]]
-- [116]
[CITE@ja[暦に興味を持ったので、旧暦計算プログラム QREKI.AWK を [[Python]] に移植してみた - 銀月の符号]],
2009-11-27,
[TIME[2022-06-20T06:52:54.000Z]] <https://fgshun.hatenablog.com/entry/20091127/1259302979>
--- [117]
[[AWK]], [[JavaScript]], [[Perl]], 他各種を参照している。
-- [47] [CITE@ja[ソフトウェア]] ([TIME[2019-01-09 01:00:53 +09:00]]) <https://www.lazy-moon.jp/soft/#qreki_py>
--- [48] [CITE@en[fgshun/qreki_py: 旧暦と六曜を計算]] ([TIME[2019-03-15 10:54:06 +09:00]]) <https://github.com/fgshun/qreki_py>
----
[FIG(quote)[ [118] [TIME[2022-06-20T07:01:14.200Z]]
>QREKI.AWK と qreki.py は新暦1年1月1日から9999年12月31日までの間で 同じ結果が得られることを確認しています。 過去や遠い未来にたいして適用する是非はともかく。
]FIG]
- [13] [CITE[旧暦六曜計算[[Java]]ソースプログラム]] ([TIME[2009-04-02 05:04:05 +09:00]] 版) <http://homepage1.nifty.com/ave/kaihatsu/qreki.htm>
-- 消滅確認 [TIME[2022-06-19T13:54:39.000Z]]
-- [78] [CITE[旧暦六曜計算[[Java]]ソースプログラム]], [TIME[2022-06-19T13:54:26.000Z]], [TIME[2011-11-30T20:41:17.733Z]] <https://web.archive.org/web/20111130204106/http://homepage1.nifty.com/ave/kaihatsu/qreki.htm>
-
[FIG(quote)[
[FIGCAPTION[
[59] [CITE[[[旧暦]]六曜Javaソースプログラム公開!: がらくた研究室]]
(2009年4月 1日 (水) [TIME[2021-02-25T06:05:53.000Z]])
<http://yamatonoie.cocolog-nifty.com/ave/2009/04/post-e1ce.html>
]FIGCAPTION]
> 内容を理解せずに移植しているので計算結果は責任が持てません!
]FIG]
- [43] [CITE@ja[旧暦計算プログラムの修正 | ハックノート]] ([TIME[2019-03-15 10:32:29 +09:00]]) <https://hacknote.jp/archives/6072/>
- [14] [CITE[旧暦を取得する Web API]] ([TIME[2012-03-21 14:30:31 +09:00]] 版) <http://api.sekido.info/qreki?output=usage>
- [36] [CITE[lib/Date/Qreki-ja.pod - search.cpan.org]] ([TIME[2018-05-20 12:49:46 +09:00]]) <http://search.cpan.org/dist/Date-Qreki/lib/Date/Qreki-ja.pod>
- [34] [CITE@en[ozamasa/[[qreki]]]],
[TIME[2018-05-20 12:46:28 +09:00]]
<https://github.com/ozamasa/qreki>
-- [150]
[CITE@en[qreki/[[qreki.rb]] at master · ozamasa/qreki · [[GitHub]]]],
[TIME[2022-06-20T09:12:16.000Z]] <https://github.com/ozamasa/qreki/blob/master/lib/qreki.rb>
--- [152]
[TIME[2013-11-14]]が最初の版。
--- [153] [[AWK]] 版が参照されている。
-- [35] [CITE@ja[旧暦を計算するスクリプトを [[Gem]] にしました。 - ozamasa’s blog]],
[[Ozamasa]],
2013-12-11,
[TIME[2018-05-20 12:46:48 +09:00]] <http://ozamasa.hatenablog.jp/entry/2013/12/11/091231>
--- [154] [[AWK]] 版が参照されている。
- [20] [CITE@en[suzunone/JapaneseDate: 日本の祝日や暦を扱うライブラリ]] ([TIME[2018-05-20 11:49:56 +09:00]]) <https://github.com/suzunone/JapaneseDate>
-- [21] [CITE@en[JapaneseDate/LunarCalendar.php at master · suzunone/JapaneseDate]] ([TIME[2018-05-20 11:50:07 +09:00]]) <https://github.com/suzunone/JapaneseDate/blob/master/src/Components/LunarCalendar.php>
-- [22] [CITE[PHPで日本の祝日、旧暦を扱えるライブラリを作った - Qiita]] ([TIME[2018-05-20 11:50:16 +09:00]]) <https://qiita.com/suzunone/items/949e71ea7ea86630524f>
- [170] [CITE@ja[暦API ~ 旧暦、六曜を取得できるAPIを無料で提供しています。 ~]] ([TIME[2016-01-16 14:46:04 +09:00]] 版) <http://koyomi.zing2.org/>
-- 明記されていないが計算結果から推測
- [37] [CITE@ja-JP[Yahoo!カレンダーヘルプ - 六曜、旧暦を表示するには]] ([TIME[2018-05-20 13:47:10 +09:00]]) <https://www.yahoo-help.jp/app/answers/detail/p/527/a_id/40990/~/%E5%85%AD%E6%9B%9C%E3%80%81%E6%97%A7%E6%9A%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF>
-- 明記されていないが計算結果から推測
-- [[閏月]]に対応しておらず、閏[VAR[n]]月が「[VAR[n]]」と表示される
-- [64]
[[西暦2017年問題]] (>>151, >>24) だけ訂正済みの模様 [TIME[2018-05-20T04:55:57.700Z]]
--
[38] [[Yahoo!カレンダー]]は[[元号]]表示、[[旧暦]]、[[六曜]]に対応しているのですが、
[[21世紀]]を扱えない [[qreki]] の不正確さがそのまま反映されていて残念な感じです。
-
[FIG(quote)[
[FIGCAPTION[
[138] [CITE@ja[2017年の六曜問題知ってますか? | 壁紙自然派 - [[楽天ブログ]]]],
[[koba0333]],
2016/02/05,
[TIME[2022-06-20T08:39:12.000Z]] <https://plaza.rakuten.co.jp/kabegamimura/diary/201602050000/>
]FIGCAPTION]
> 出典HP:日めくりカレンダー.com
> 出典HP:便利コム
> 上のカレンダーで2月の六曜を見ると、26日は赤口、27日は友引、28日は先負となっています。
> しかし下のカレンダーの2月の六曜は、26日は友引、27日は先負、28日は仏滅です。
> こうした違いは、3月27日まで続きます。
>[SNIP[]]
> 旧暦2月1日を、上のカレンダーは2月27日としているのに対し、下のカレンダーでは2月26日としているのです。
>[SNIP[]]
> 結論からすると、現在は下のカレンダーが主流となっていて、そちらを使うべきです。
> 私の提供する印刷用カレンダー作成サイト「カレンダー工房」では、これまで上のカレンダー方式に従っていましたが、プログラムを修正して下のカレンダー方式に基づいた六曜表記に変更しました。
>[SNIP[]]
> なお、カレンダー工房の旧暦計算は、フリーのqreki.plを基に算出し、誤差を修正するプログラムを独自に追加して六曜を表示しています。
>[SNIP[]]
> 国立天文台の暦計算室によると、2017年2月26日 23時59分に朔(月齢0.0)となります。
]FIG]
-- [139] qreki.pl のリンク先は >>15
-- [142]
「上のカレンダー」
の現在公開されている版は正しいものに修正済み。
--- [140] [CITE@ja[2017年2月カレンダー - [[日めくり!カレンダー.com]]]], [TIME[2022-06-20T08:44:42.000Z]] <https://www.himekuricalendar.com/month-calendar-2017-02>
--- [141] [CITE@ja[2017年大安カレンダー【平成29年】[[日めくり!カレンダー.com]]]], [TIME[2022-06-20T08:45:44.000Z]] <https://www.himekuricalendar.com/taian2017>
-- [144]
[TIME[平成28(2016)年8月][2016-08]]時点ではまだ間違っていた。
この年のうちに正しいものに修正されたらしい。
--- [143]
[CITE[2017年大安カレンダー - [[日めくりカレンダー.com]]]], [TIME[2022-06-20T08:48:23.000Z]], [TIME[2016-08-19T08:43:46.346Z]] <https://web.archive.org/web/20160819084340/http://www.himekuricalendar.com/taian2017>
--- [145]
このサイトの実装が [[qreki]] の系譜かどうかは不明。
- [39] [CITE[Scheme: ユリウス日を天保壬寅元暦(旧暦)に変換するやつ]] (@nakataSyunsuke 2018年03月31日に更新 [TIME[2018-06-16 16:13:32 +09:00]]) <https://qiita.com/nakataSyunsuke/items/b49d6105505fec71f07a>
- [41] [CITE@en[kumorig/qreki: Converts Gregorian dates into the old japanese lunar calendar "Kyuureki"(旧暦).]] ([TIME[2018-06-16 16:20:34 +09:00]]) <https://github.com/kumorig/qreki>
- [17] [CITE@en[PHPカレンダーで祝日と六曜を表示する]] ([TIME[2019-03-15 10:29:41 +09:00]]) <https://gist.github.com/himahack/29f4269cdf8103f6a578291cea352e16>
- [42] [CITE@ja[【サンプルあり】PHPで祝日と六曜入のカレンダーを作る方法【コピペでOK】 | えびたいライフ。]] ([TIME[2019-03-15 10:30:07 +09:00]]) <https://ebit4i.com/php-calendar/>
- [44] [CITE[自作androidアプリが暦の2017年問題に・・・: がらくた研究室]] ([TIME[2019-03-15 10:34:00 +09:00]]) <http://yamatonoie.cocolog-nifty.com/ave/2017/03/android2017-7a8.html>
- [45] [CITE@ja[- ぽちぽちぼちぼち。]] ([TIME[2019-03-15 10:43:17 +09:00]]) <http://fuji3.main.jp/MT/archives/2008/01/2008-01-29.php>
- [46] [CITE[旧暦六曜計算Javaソースプログラム]] ([TIME[2017-03-08 12:02:42 +09:00]]) <http://ave.la.coocan.jp/kaihatsu/qreki.htm>
- [49] [CITE[多時間 Tips:So-netブログ]] ([TIME[2019-03-15 11:05:26 +09:00]]) <https://cm-tips.blog.so-net.ne.jp/index/2>
- [441] [CITE@ja[[[旧暦]]カレンダー - 仕事に役立つエクセル実践問題集]], [TIME[2016-09-15 07:57:00 +09:00]] <http://mt-soft.sakura.ne.jp/kyozai/excel_vba/310_vba_chu/60_lunar-solar-calendar/index.html>
-- [TIME[西暦2001年][year:2001]]-[TIME[2030年][year:2030]]
-- 明記されていないが[[西暦2017年問題]]を持つのが [[qreki]] と同じ。
- [451] [CITE@ja[宿曜経の二十七宿暦 [[宿曜]]カレンダー]], [TIME[2020-07-06 06:18:00 +09:00]] <https://nakshatra.tokyo/pc/calendar/27/>
-- 明記されていないが[[西暦2017年問題]]の修正以外は [[qreki]] と同じ。
- [52] [CITE@ja[公開スクリプト]], [TIME[2005-01-29T00:03:02.000Z]], [TIME[2020-09-21T03:52:54.784Z]] <http://hymnsong.s7.xrea.com/script.html>
- [54] [CITE[ソフト工作室]], [TIME[2020-09-21T04:03:48.000Z]] <http://kikuchisan.net/wsp/java/java59.html>
- [56] [CITE@en[Calendar/QReki.java at master · paveway/Calendar · GitHub]], [TIME[2021-02-25T05:47:14.000Z]] <https://github.com/paveway/Calendar/blob/master/src/info/paveway/external/QReki.java>
-
[50] [CITE[旧暦計算スクリプト]], [TIME[2019-05-14 08:27:47 +09:00]] <http://www.spin.ne.jp/~sibuya-auto/qreki/qreki.html>
--
[51] 「[[令和]]」が追加されているのでメンテナンスが継続されていることはわかるが、
肝心の計算は [[qreki]] そのもののように見える。
-
[55] [CITE@ja[旧暦正月だから年号電卓を作ってみた|ひまなひと|[[note]]]],
[[ひまなひと]],
2020/01/25 19:41,
[TIME[2021-02-25T05:43:30.000Z]] <https://note.com/himajin_no_asobi/n/n065d236b69d6>
- [60] [CITE@ja[旧暦カレンダー(2022年2月)| [[アラクネ]]]], [TIME[2022-02-19T11:51:31.000Z]] <https://www.arachne.jp/onlinecalendar/kyureki/>
--
[61]
詳しく調べていませんが、
[TIME[西暦2033年][2033]]の[[月名]]より、
[[qreki]]
系の実装と推測されます。
--
[67]