[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]] の結果が正しい可能性もわずかに残っています。

[359] 
他に[TIME[西暦1884年][1884]]、
[TIME[西暦1908年][1908]]、
[TIME[西暦1947年][1947]]、
[TIME[西暦2177年][2177]]にも問題が指摘されています。


[360] 
派生ソフトウェアの中にはこれらのいくつかを修正したものもありますが、
すべてを修正したものは確認されていません。
(すべてを修正したらもはや別物になってしまいそうです。)

[398] 
派生版は独自の[[不具合]]を生じている可能性も否定はできません。
派生版の品質の検査を行ったと明記していないものも多いです。
注意が必要です。

[66] 
不正確なソフトウェアの普及による被害は、
[[西暦2017年問題]]を参照。

[REFS[

- >>8
--
[FIG(quote)[ [28] >>27

> 2224年 3月21日から、同年 4月18
日の期間(グレゴリオ暦法による日付)の月名が間違って表示する現象が確
認されています。 具体的には、 正しい答えが3月であるのに対して、 閏2
月と表示する現象です。中気の計算に問題があると判明していますが、 今の
所、良い対策方法が見つかりませんので、そのままにしてあります。
]FIG]
- >>14
--
[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]



- >>317
--
[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]
- [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)。
[TIME[平成22(2010)年][2010]]には
[[PHP]]
移植版のうちの1つの[[利用者]]が[TIME[西暦2051年][2051]]と[TIME[西暦2177年][2177]]の問題も発見しています
(>>263)。
なぜオリジナル版でこれらの問題が検出されなかったのでしょうか。
(できれば当時の [[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>
- >>14
-- [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」からの直接または間接の移植と思われます。
(オリジナル版に基づかず孫以下の世代のものもあります。)

[FIG[ [573] [[qreki]] とその主要な派生版の展開

[PRE(aafig)[

S61   * 暦の百科事典
1986  :
S62   :
1987  :
S63   :                                           六曜プログラム *
1988  :                                                          : 1/ >>110
S64/H1:                                                          :
1989  :                                                           
H3    :                                                 新こよみ便利帳 *
1991  :                                                                :
H4    :                                                          :     :
1992  :    :TODAY >>109                                          :     :
H5    :    :                        QRSAMP                       :     :
1993  :    :.........................>o<.........................:     :
      :    :                          | >>73                     :     :
H6    :    :                          |                                :
1994  :....:.........................>* Rev 1.1                        :
      :    :                          | 10/2 >>71                      :
           :                          |                                :
           : (表)                     |                                :
H11        :   :  qreki.js            |                                :
1999       :   :.....>o<--------------+                   Web :        :
           :   :      | 11/8 >>95     |             Calendar2 :        :
           :..>o<.....| 11/8 >>95     |                       o 11/10  :
           :...:.....>|               |                       :>>84    :
           :   :11/16 |               |                       :        :
           :   : >>97 |               |                       :        :
                      |               |                       :qreki.pl:
H12                   |               +---------------------->o* 6/9   :
2000                  |...............|......................>||>>123  :
              7/15 o<-+               |                       ||       :
             >>295 |<.|...............|                        |       :
             10/12 o  |               |                        |<......:
             >>294 |  |               |                        |       :
H13            1/8 o  o               |                        |
2001         >>289 |  |               |               qreki.pl |
               4/6 o  o 1.3           |                 >>15 o |
             >>288 |  | 4/18 >>86     |                      | |
                   |  o 1.31          |                      | |
                   |  | 4/21 >>86     |                      | |
                   |  o 1.4           |                      | |
                   |  | 6/3 >>86      |                      | |
             11/15 *  * 1.5           |                      | |
             >>287 |  | 10/4 >>86     |                      | |
                   |  |旧暦 for VB    |                      | |
H14                |  +--->*<---------+                      | |
2002               |  |    | 5/27     |                      | |
                   |  |    |>>11      |qreki.php               |
H15                |  |    |          |2/ *<-------------------+
2003               |  |    |          |>>9|          Qreki     |
                   |  |    |          |..>| 4/10 >>162 *<------+ 
                   |  |    |          |   |      mt-kyureki.pl | 
                   |  |    |          |   |      9/20 >>179 *<-+
                   |  |    |          |...|................>|  |
                   |  |    |          |   |                    |
                   |  |    |          |   |                  | |
H16           3/11 *  |    |          |   |統一カレンダー    | |
2004         >>286 |  |    |          |   +->o 0.09 >>354    | |
                   |  |    |          |...|.>| 12/28 <.......|.|
                   |  |....|..........|...|.>o 0.91          | |
                   |  |    |          |   |  | 12/31         | |
H17                |  |    |          |   |  o 0.92          | |
2005               |  |    |          |   |  | 1/8           | |
                   |  |    |          |   |  o 0.93          | |
                   |  |    |          |   |  | 1/16          | |
                   |  |    |          |   |  * 0.94          | |
                   |  |    |          |   |  | 1/17          | |
                   |  |    |          |   |  o 0.94          | |
                   |  |    |          |   |  | 1/18          | |
                   |  |    |   :          |  o 0.94-1        | |
                   |  |    |   :なでしこ  |  | 1/21          | |
                   |  |        :          |  * 0.94-2        | |
                   |  |   4/27 *<-----+   |  | 1/28          | |
                   |  |        * 5/1  |   |  |               | |
                   |  |        |>>511 |   |  |               | |
                   |  | >>465  |      |   |  |               | |
                   |  | o 7/          |   |  |               | |
                   |  | |    Rokuyou  |   |  |  :nencal        |
                   |  | |  |  8/13 *<-|   |     :>>476  exdate |
                   |  | |  | >>202 |  |   |>>220:     >>132 o<-+
                   |  | |  |       |  |   | *<..:           |  |
                   |  | |  |   |   |  |   | |   :           || |
                   |  | |  |   |   |  |...|.|..............>|| |
H18                |  | |  |   |   |  |   | |          1.03 *| |
2006               |  | |  |   |   |  |   | |    3/17 >>408 || |
                   |  | |          |  |   | |qreki.php      || |
                   |  | |qreki.php |  |...|.|..>o<----------||-+
                   |  | |wp-koyomi |  |   | |   | 3/25 >>256|| |
                   |  +-->* 10/14  |  |   | |   o 9/9       || |
                   |  | | * 10/15  |  |   | |   | >>260     || |
                   |  | | |>>266 <.|..|   | |               || |
                   |  | | |<.......|  |   | |               || |
                   |  | |          |  |   | |               || |
H19       1/31 *<--+  | |  |   |      |   | |               || |
2007     >>238 |   |  | |         :   |   | |               || |
               |   |  | | 携帯潮汐:   |   |                 || |
H20            |   |  | |         :   |   |Web API          || |  相互変換
2008           |   |  | |  |3/14 *:<--+   +--->* 4/1        || |   1/5 *
               |   |  | |  |>>56 `+   |...|...>| >>310      || |  >>193:
               |   |  | |  |  6/3 o   |   |    |            || |       :
               |   |  | |  | >>485|   |   | |  |            || |       :
               |   |  | |  | 6/26 o   |   | |  |            || |       :
               |   |  | |  | >>485|   |   | |  |            || |       :
               |   |  | |         |   |   | |  |       |    || |       :
H21            |   |  | |旧暦六曜,+   |   | |          |    || |       :
2009           |   |  | |    4/1 o|   |   |     0.4.2  |    || |       :
               |   |  | |  | >>59||   |   | qreki_py<..|     | |       :
               |   |  | |  |     |    +---|-->o<.......|.....| |       :
               |   |  | |..|...|.|....|...|..>| 11/28  |     | |       :
               |   |  | |  |   | |....|...|..>|>>12    |    || |       :
               |   |  | |  |   | |    |   |   o 11/    |    |  |       :
               |   |  | |  |   | |    |   | | * 12/1   |    |  |       :
               |   |  | |  |   | |    |   | | | 0.4.6  |    |  |       :
H22            |   |  | |  |   | |    |   | +,|ゴミ箱  |    |  |       :
2010           |   |  | |  |   | |    |   | |*|1/10    |    |  |       :
               |   |  | |  |   | |        | |*|1/11    |    |  |       :
               |   |  | |  |   | |SAORI   |  ||>>442        |  |       :
H23            |   |  | |  |   | +->* 2/21|   |        1.04 *  |       :
2011           |   |  | |  |   | |  |>>552|   |   9/1 >>407 |  |       :
               |   |  | |  |   | |  |     |   |             |  |       :
H24            |   |  | |  |   | |    |   |   |        1.05 *  |       :
2012           |   |  | |  |   | |    |   |   |  1/31 >>406 |  |       :
               |   |  | |  |   | |    |   |   |             |  |        
H25            |   |  | |  |   | |    |   |   |        |    |  | Date::Qreki
2013           |   |  | |  |          |                |       +->* 0.01
               |   |  | |  |          |    DQRSAMP.AWK |       |  | 3/9 >>208
               |   |  | |  |          +->* 9/15 >>629  |       |  |  
               |   |  | |  |     Gem  |... ............|.......|.>|    :
               |   |  | |  | 11/14 *<-+   +->* 11/29   |       |  |    :
               |   |  | |  |  >>150|  |   |  | >>16    |       |  |    :
               |   |  | |  |  12/5 *  |   |            |       |  |    :
               |   |  | |  |  >>150|  |   |   |        |       |  |
H26            |   |  | |  |       |  |       |        |       |  * 0.02
2014           |   |  | |  |   | | |  |       |        |       |  | 2/7 >>208
               |   |  | |  |   | | |  |       |        |       |  * 0.03
               |   |  | |  |   | | |  |       |        |       |  | 2/11 >>208
               |   |  | |  |   | | |  |       |        |       |  * 0.04
               |   |  | |  |   | | |  |       |        |       |  | 2/11 >>208
               |   |  | |  |   | | |  |       |        |       |  * 0.05
                           |       |  |       |旧暦六曜|       |  | 2/12 >>208
             カレンダー    |  6/13 *  |       |        |       |  | 
             9/2 *<--------+  >>150|  |       |   11/6 o       |  |    :
                 |>>327    |       |  |暦API  |   >>149|       |  |    :
H27            | |                 |  | o     |        |       |  |    :
2015           |   |  | |      | | |  | |>>170|                |  |    
               |   |  | |      | |    |       |                |  | go-qreki
H28            |   |  | |      | |    |       | mk-   >>128 o<-+  |   3/ *
2016           |   |  | |      | |    |       |calendar 2/5 |  |  | >>493:
               |   |  | |      | |    +------ | --->*       |  |      :
               |   |  | |      | |    |       |     |>>580     |  |      :
               |   |  | |      | |    |       |     | 6/       |  |      :
               |   |  | |      | |    |       |     * 7/       |  |      :
               |   |  | |      | |    |       |     * 9/       |  |      :
               |   |  | |      | |    |       |     |          |  |      :
               |   |  | |      | |    |       |     |          |  |      :
H29            |   |  | |      | |    |       |     |             * 0.06
2017           |   |  | |      | |    |       |     |             | 1/31 >>208
               |   |  | |      | |    |       |     |             * 0.07
               |   |  | |        |    |       |     |             | 1/31 >>208
               |   |  | |      B | A  | C版   |     |             |      
               |   |  | |    3/8 **<--|-------|---- | ------------|----+ :
               |   |  | |   >>187|:   +>*8/25 |>>48 |             |    : :
               |   |  | |             | |>>57 *10/  |             |    : :
               |   |  | |      |      | |     *11/12|             |    : :
               |   |  | |      |      |       *12/  |             |    : :
               |   |  | |             |       |     |             |    : :
               |   |  | |JapaneseDate |Scheme |     |             |    : :
H30            |   |  | * 5/19        | o3/31 |     |                    :
2018           |   |  | |>>22  |      | |>>39 |     |                    :
               |   |  | |      |      | |     |     *11/4                :
               |   |  | |      |      | |     |     |                    :
               |   |  | |      |      | |     |     |                    :
H31/R1         |   |  | * 7/9  |      |       |     |                    :
2019           |   |  | * 10/5 |      |       |     |                    :
               |   |  | |      |      |       |     |                    :
R2             |   |  | * 3/   |      |       |     |                    :
2020           |   |  | * 12/19|      |       |     |                    :
               |   |  | |>>21  |      |       |     |                    :
R3             |   |  | |             |       |     * 5/25               :
2021           |   +- | | ->*3/       |       |     |                    :
               |   |  | |   |>>602    |       |                          :
               |      | |   |         |       |                          :
               |      | |      |      |       |                          :
               | >>432| |      |>>518 |       | Qreki                    :
               |*<----+        * 7/10 +-------|-->* 8/23                 :
               ||<....|........|......|       |   * 8/22                 :
               |<.....|........|......|       |   |>>487                 :
               |>>234 |        |      |       |..>|                      :
               ||     |        |      |       |   |          Qreki_nako  :
R4             ||     |        |......|.......|...|..............>* 1/17 :
2022           ||     |        * 2/8  |       |   |               :>>527 :
               ||  |  |        |>>517 |       |   |    qreki.go          :
               ||  +--+--------|------|-------+---|------>*<.............:
               ||  |  |        |      |       |   |       | 4/ 5/        :
                                                          | >>490
]PRE]


[574] 凡例:

- [CODE[*]] 現存するもの
- [CODE[o]] 現存が確認できないもの
- [CODE[|]] [[qreki]] 系統
- [CODE[:]] 非 [[qreki]] 系統
- [CODE[+--->]] 派生
- [CODE[....>]] 参照
- 終期は不明なことが多いので図示していない (縦線の末端は有意でない)


]FIG]

** 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]

[295] 
[TIME[2000-10-12]]には既に他の人が利用して公開していたことを確認できます
(ソースコードコメントによれば更に遡って[TIME[2000-07-15]])。
[SRC[>>294]]
そのまま使うだけではなく機能追加版も作られ、
他の[[言語][プログラミング言語]]にも移植されました。

[REFS[
- [54] [CITE[ソフト工作室]], [TIME[2020-09-21T04:03:48.000Z]] <http://kikuchisan.net/wsp/java/java59.html>
-- [292] [CITE[今日のこよみ]]
--- [284] [[カレンダー]]と[[暦注]]を [[Webページ]]に表示する
[[CGIスクリプト]] ([[サーバー側]]: [[Perl]], [[クライアント側]]: [[JavaScript]])。
--- [291] その時代に作られた他の [[Webサイト]]でたまに見かけます。
--- [293] [CODE[qreki.js]] が組み込まれています。
-- [285] [CODE[qreki.js]] は [[AWK]] 版を参照しつつ >>88 から派生。
-- [286] 「(参考)koyomi.js と qreki.js は 2004/03/11版 が最新版です」
-- [287] 「○月齢が29.3未満の処理を追加しました。最新版のkoyomi.lzhをダウンしてqreki.jsの入れ替えをお願いします。(2001/11/15)」
--- [402] [[日付]]が少し遡るが >>400 か。
-- [288] 
「○月齢が29.8を超えた時の処理に誤りがありました。最新版のkoyomi.lzhをダウンしてqreki.jsの入れ替えをお願いします。(2001/04/06)」
-- [289] 
「○qreki.js(正午月齢 or 現在時刻月齢選択機能追加)、koyomi.js(月名称の一部変更)をしました。qreki.js、koyomi.js をアップデートして下さい。calendar.js、月齢画像moonはそのまま使えます。(2001/01/08)」
-- [290] 
「月齢(qreki.jsに機能追加)から潮汐、月名、月齢画像」
-- 
[FIG(quote)[
[FIGCAPTION[
[294] 
[CITE@en[新着情報履歴[WEAK(smaller)[(2000年)]]]], [TIME[2022-07-13T12:44:04.000Z]] <http://kikuchisan.net/history/sintyaku00.html>
]FIGCAPTION]

,10月 	,22 	,今日のこよみ 	,旧暦、六曜、西暦年の元号/十干/十二支、和月名、祝祭日、二十四節気、月齢から潮汐、月名、月齢画像などを表示する今日のこよみ-JavaScript登録。

]FIG]
--
[401] 
[TIME[2022-07-14T08:02:37.000Z]] <https://web.archive.org/web/20011007131954/http://village.infoweb.ne.jp/~tkiku/qreki.js>
--
[400] 
[CITE[java59]], [TIME[2022-07-14T08:00:28.000Z]], [TIME[2001-07-13T18:41:33.886Z]] <https://web.archive.org/web/20010713184031/http://village.infoweb.ne.jp/~tkiku/java/java59.html>
-
[234] 
[CITE[404 File Not Found]], [TIME[2021-07-04T11:06:59.000Z]], [TIME[2022-07-13T08:00:44.979Z]] <http://www2s.biglobe.ne.jp/~yoss/todays%20moon/3todays.html>
-- [235] 
[CSECTION[「旧暦表示つきカレンダー」のスクリプトをご利用中の方へ]]
--- [238] [TIME[2007-01-31T13:20:55.000Z]], [TIME[2022-07-13T08:03:33.813Z]] <http://www2s.biglobe.ne.jp/~yoss/tpircs/qreki.js>
--- [438] 「令和への改元。祝日の異同(2020年現在)に対応しています。」
---
[399] 
>>400 に近い (が違う)。
-- [236] 
以前ここにはカレンダーがあったらしい。
--- [237] [[Internet Archive]] によれば
[TIME[2013-03-29]]時点で既に [CODE[404]]、それ以前の所蔵なし。
--- [239] [TIME[2008-01-28]]時点では稼働していたらしい
(>>233)。
-- [240] 
[CITE[[[旧暦]]カレンダー]], [TIME[2022-04-10T05:56:18.000Z]], [TIME[2022-07-13T08:05:28.101Z]] <http://www2s.biglobe.ne.jp/~yoss/tuki/kyureki3.html>
--- [434] 
カレンダー「有効範囲は今年度のみです。他年度は正確ではありません。」
(独自実装)
---- [435] 
[CITE[[[旧暦]]カレンダー]], [TIME[2022-07-14T10:30:11.000Z]], [TIME[2021-12-07T19:32:40.532Z]] <https://web.archive.org/web/20211207193229/http://www2s.biglobe.ne.jp/~yoss/tuki/kyureki3.html>
----- [436] 「2033年12月22日 閏11月1日説に書き換えました。」 (独自実装)
---- [437] これより前は[[カレンダー]]も [[qreki]] か?
---
[241] 
日付変換
「このスクリプトは[ASIS[旧暦計算サンプルスクリプト][リンク]] 原作は高野英明氏、[BR[]]
JavaScriptに移植が[ASIS[旧暦計算スクリプト Version 1.5][リンク]]長野 隆氏によるものです。[BR[]]
このスクリプトは2033年閏7月を採用しています。 」
---
[432] [TIME[2021-03-17T03:31:52.000Z]], [TIME[2022-07-14T10:17:40.073Z]] <http://www2s.biglobe.ne.jp/~yoss/tuki/js/qreki.js>
----
[433] 
1.5 から編集されていて同じではない。
-
[242] 
[CITE@ja[[[旧暦]]-[[西暦]]の相互変換]], [[CAN TANAKA]], [TIME[2022-04-19T10:59:00.000Z]], [TIME[2022-07-13T09:14:00.725Z]] <https://can-chan.com/koyomi/qreki-seireki.html>
-- [243] [[西暦]]から[[旧暦]]への変換が [CODE[qreki.js]]。
-- [244] [[旧暦]]から[[西暦]]への変換は独自実装 (表による)。
-- [245] そのため[[往復変換]]できない。
--[403] 
[[Internet Archive]] の最古は[TIME[2005-12-25]]。
- [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>
-- [214] [[node.js]] [[モジュール]]。 [TIME[2014-12-13]]
-- [215] ... と書かれているが[[ドキュメント]]とオリジナルの [[AWK]] 版だけで、
肝心の [[JavaScript]] 版は配布されていない謎。
-- [217] 
ライセンス条項の原典日本語版と [[CPAN]] 版由来の英語版 (>>216) が含まれている。
- [494] 
[CITE@en[japanese-calendar/qreki.js at master · nasano/japanese-calendar · [[GitHub]]]], [TIME[2022-07-15T07:53:00.000Z]] <https://github.com/nasano/japanese-calendar/blob/master/scripts/qreki.js>
-- [506] [TIME[2015-05-23]]。
1.5 のコピー?
--
[539] 
[CITE@ja[M's / Mozilla / [[和暦]]カレンダー]], [TIME[2016-01-12T14:22:40.000Z]], [TIME[2022-07-15T09:54:05.606Z]] <http://multi.nadenade.com/leafy/Mozilla/Calendar/index.html.ja>
-
[600] 
[CITE@ja[[[暦]]と天気 - ギャラリー水楢]], [TIME[2022-08-31T06:15:50.000Z]], [TIME[2022-08-31T08:50:23.941Z]] <https://www.mizunara.com/koyomi-tenki.html>
--
[604] 
古くから[CITE[今日のこよみ]] (>>292) を利用していたが、そこに組み込まれていた修正版
[CODE[qreki.js]] を[TIME[令和3(2021)年][2021]]頃更に修正して利用している。
--
[597] [[Internet Archive]] 所蔵の[TIME[西暦2016年][2016]]分には特に何もなかった。
--
[FIG(quote)[
[FIGCAPTION[
[596] 
[CITE@ja[[[暦]]と天気 - ギャラリー水楢]], [TIME[2022-08-31T08:45:44.000Z]], [TIME[2017-04-01T16:08:41.735Z]] <https://web.archive.org/web/20170401160758/http://www.mizunara.com/koyomi-tenki.html>
]FIGCAPTION]

>[旧暦及び六曜、及び月名に関する誤りについて]
>当サイトで採用しております旧暦計算スクリプトにおいて、2017年2月26日から同3月27日の間の旧暦表示及びそれに伴う六曜の表示、月名の表示に誤差が発生することが判明しましたので、当該期間(旧暦2017年2月分に該当する期間)のそれら項目について利用されないようお願いします。
>当サイトのスクリプトでは旧暦2017年2月の朔を新暦の2月27日としていますが、国立天文台の見解では2月26日23:58となり新暦26日を朔日(旧暦の1日)とすることになった為です。
]FIG]
--
[598] その後[TIME[西暦2017年][2017]]分は変更なし、以後2年間所蔵なし。
--
[FIG(quote)[
[FIGCAPTION[
[599] 
[CITE@ja[[[暦]]と天気 - ギャラリー水楢]], [TIME[2022-08-31T08:48:15.000Z]], [TIME[2020-09-25T05:36:35.729Z]] <https://web.archive.org/web/20200925053536/https://www.mizunara.com/koyomi-tenki.html>
]FIGCAPTION]

>
-和暦(元号)表示は明治以降のみ表示されます。
-祝日の表示は1873年(明治6年)10月14日太政官布告「年中祭日祝日ノ休暇日ヲ定ム」とその後の変更、1912年(大正元年)9月4日公布「休日ニ関スル件」とその後の変更、1948年(昭和23年)7月20日公布の「国民の祝日に関する法律」とその後の改正によります。又、皇室慶弔行事やその他の国事行事に伴う特別な休日の扱いを定めた個別の法律を反映しました。
月齢欄の「上弦の月、満月、下弦の月」の表示は2000年から2030年の間のみ対応しています。
-2017年2月26日から同3月27日の間(旧暦2017年2月分に該当する期間)の旧暦変換に誤差が有りその間の旧暦表示及び六曜の表示、月名の表示は利用できません。2月26日を朔日として旧暦2月1日・友引とし3月27日を月隠、旧暦2月30日・先勝とし、その間旧暦表示を1日早める形で読み替えてください。

]FIG]
--
[601] その後[TIME[西暦2020年][2020]]分は変更なし。
--
[FIG(quote)[
[FIGCAPTION[
[602] 
[CITE@ja[[[暦]]と天気 - ギャラリー水楢]], [TIME[2022-08-31T08:51:11.000Z]], [TIME[2021-03-05T06:21:15.392Z]] <https://web.archive.org/web/20210305062015/https://www.mizunara.com/koyomi-tenki.html>
]FIGCAPTION]

>旧暦表示については西暦1870年から2074年までの表示についてサンプリングにて確認していますが全ての確認は仕切れていません。[ASIS[2017年問題][リンク: 日経]]、[ASIS[2033年問題][リンク: 国立天文台]]及びスクリプトqrekiに関し指摘されているその他問題点は解決したつもりです。


]FIG]
--
[603] [TIME[2020-12-16T04:02:00.000Z]], [TIME[2022-08-31T08:52:17.707Z]] <https://www.mizunara.com/script/koyomi/qreki.js>
- 
[55] [CITE@ja[旧暦正月だから年号電卓を作ってみた|ひまなひと|[[note]]]], 
[[ひまなひと]],
2020/01/25 19:41,
[TIME[2021-02-25T05:43:30.000Z]] <https://note.com/himajin_no_asobi/n/n065d236b69d6>
--
[249] [[AWK]] 版にリンクしつつ、
[[JavaScript]] で使っている。
肝心の [[JavaScript]] のコードは示されていない。
既存の [[JavaScript]] 移植版を使っている?

-*-*-

- [640] [CITE[コリドラス産卵予報スクリプト]]
-- [620] [CITE@ja[コリドラスなアクア生活]], [TIME[2022-12-08T09:14:36.000Z]], [TIME[2022-12-08T09:14:55.716Z]] <http://koribee.blog87.fc2.com/blog-entry-67.html>
--- [635] [CSECTION[コリドラス産卵予報スクリプト β版]],
[[koribee]],
2007/02/06(火) 23:50
---- [636] [[JavaScript]] 版 (>>92) からの派生
---- [637] [[AWK]] 版を参照
-- [622] [CITE@ja[コリドラスなアクア生活]], [TIME[2022-12-08T09:16:20.000Z]], [TIME[2022-12-08T09:16:21.744Z]] <http://koribee.blog87.fc2.com/blog-entry-70.html>
--- [639] [CSECTION[コリドラス産卵予報スクリプト Ver.1.0]],
[[koribee]],
2007/02/11(日) 00:23
---- [638] 「v1.0 公開 2007.2.10」
---- [623] 配布ファイル現存せず
-- [641] 「1.0」らしきものが[[ブログ]]に埋め込まれている (記事ページ [[HTML]] ソースコード参照)
--- [642] 実際含まれるコードは[[月齢]]の略算式だけで、
[[旧暦]]日付の計算・表示は行われない。


]REFS]

[542] 別系統のものもあります。

[REFS[
-
[442] 
[CITE@ja[JavaScriptで[[六曜]]を計算してみる - babu_babu_babooのゴミ箱]], 
[[ばぶぅ~]],
2010-01-10,
[TIME[2022-07-14T12:08:18.000Z]] <https://babu-babu-baboo.hateblo.jp/entry/20100110/1263107217>
--
[443] 
[CITE@ja[JavaScriptで[[六曜]]を計算する!その2(気分だけ高速化) - babu_babu_babooのゴミ箱]], 
2010-01-11,
[TIME[2022-07-14T12:08:55.000Z]] <https://babu-babu-baboo.hateblo.jp/entry/20100111/1263171414>
---
[FIG(quote)[
[FIGCAPTION[
[444] 
コメント,
[[なかもず]],
<time datetime="2018-04-12T10:21:48Z" data-relative="" data-epoch="1523528508000">4年前</time>
]FIGCAPTION]

>六曜の取得について検索しているとこちらの記事がヒットし、大変ためになりました。
>こちらのソースの改変・二次利用についてなどライセンスはありますか?ぜひ使わせていただきたいです

]FIG]
---
[FIG(quote)[
[FIGCAPTION[
[445] 
コメント,
[[ばぶぅ~]],
<time datetime="2018-04-12T20:22:31Z" data-relative="" data-epoch="1523564551000">4年前</time>
]FIGCAPTION]

>ここは、タイトル通り私のゴミ箱です。捨てて置いたのですからお好きにどうぞ。
>もしあなたがこのコードでボロ儲けしたのなら、おすそ分けを…。^^;

]FIG]
--
[446] 
[[PHP]] 版 (>>221) からの派生。
--
[463] 
後に [[PHP]] 版の変種を公開している (>>16)。
その [[PHP]] 版は別系統。

]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]
--
[405] 
[TIME[2022-07-14T08:24:09.000Z]] <https://web.archive.org/web/20020306200752/http://www3.biwako.ne.jp/~nobuaki/qreki/qreki.pl>
--
[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]]
等にも所蔵なし。
]REFS]

[206] 
各種 [[Perl]] アプリケーションに組み込まれて普及しました。
また他の[[言語][プログラミング言語]]の移植元にもなりました。

[REFS[
-
[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]
-
[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] [[AWK]] 版も参照しつつ、 [[Perl]] 版 (>>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/>
-- [406] 
リリース時刻: 2012-01-31 00:35
explugin-exdate-1.05.zip
2012-01-31 00:35
-- [407] 
リリース時刻: 2011-09-01 22:25
explugin-exdate-1.04.zip
2011-09-01 22:27
-- [408] 
リリース時刻: 2006-03-17 23:28
explugin-exdate-1.03.zip
2010-11-27 11:42 	
-
[411] 
[CITE[旧暦計算]], [TIME[2022-07-14T08:58:01.000Z]] <http://cgi5.synapse.ne.jp/~todoroki/cgi-bin/kyu-reki/k-reki.cgi>
--
[412] 
「旧暦計算スクリプト(qreki.pl)利用した」
---
[414] どれかは不明。
-- [413] 
[[Internet Archive]]
の最古は[TIME[2006-12-08]]
-
[415] 
[CITE[[[qreki]] - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T09:55:18.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=qreki>
--
[416] 
[CITE[qreki]],
[[泰司]],
開始:'09/03, 
[TIME[2009-03-22]]
--
[417] 
[[AWK]] 版,
[[JavaScript]] 版 (>>88)
を参照しつつ、
[[Perl]] 版 (>>123),
[[VB]] 版 (>>11)
から派生した
[[FSWiki]] プラグイン ([[Perl]])。
--
[421] 
[CITE[つぶやき/2009-3-1 - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T10:04:59.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=%A4%C4%A4%D6%A4%E4%A4%AD%2F2009%2D3%2D1>
---
[422] 
「DOS時代に「today 今日は何の日」というのがあった。」
---
[423] 
[CITE[TODAY]] を思い出した(?)のが開発の端緒らしい。
--
[418] 
[TIME[2009-03-16]]の試作版は
[[qreki]]
ではなく表引き型。
---
[424] 
[CITE[つぶやき/2009-3-16 - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T10:06:14.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=%A4%C4%A4%D6%A4%E4%A4%AD%2F2009%2D3%2D16>
----
[425] 
「ベクターで旧暦の算出方法をソース付きで見つけた。」
「しかし完全フリーではないようなので,このままPerl化するのもどうかと考えて,テーブルを参照する形でいいかなと考えた。」
----
[426] 
表の出典は [[VB]] 版か?
--
[427] 
[CITE[つぶやき/2009-3-17 - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T10:07:18.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=%A4%C4%A4%D6%A4%E4%A4%AD%2F2009%2D3%2D17>
---
[428] 「根気よく捜せばPerl版も見つけてしまったのだな。」
--
[419] 
[CITE["[[qreki.pl]]"に干支(日)を加える - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T10:04:11.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=%22qreki%2Epl%22%A4%CB%B4%B3%BB%D9%28%C6%FC%29%A4%F2%B2%C3%A4%A8%A4%EB>
---
[420] [[干支]]対応が [[VB]] 版由来。
--
[429] 
[CITE[つぶやき/2009-6-16 - Sign-G::FsWikiの自己流かすたまいず]], [TIME[2022-07-14T10:08:32.000Z]] <http://sign-g.sakura.ne.jp/Wiki/wiki.cgi/OwnCustomize?page=%A4%C4%A4%D6%A4%E4%A4%AD%2F2009%2D6%2D16>
---
[430] 
「モジュールqreki.pmに,与えられる日付から十二宮を0~11の値で返す機能を追加。」
---
[431] 
この変更は未公開?
- [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>
-- 消滅確認 [TIME[2022-07-13T06:41:25.0Z]]
-- [207] 
[CITE@en-US[Date::Qreki-ja - [[metacpan.org]]]], [TIME[2022-07-13T06:40:46.000Z]] <https://metacpan.org/dist/Date-Qreki/view/lib/Date/Qreki-ja.pod>
--- 
[FIG(quote)[
[FIGCAPTION[
[208] [CITE@en-US[Changes - [[metacpan.org]]]], [TIME[2017-01-31T03:12:18.000Z]], [TIME[2022-07-13T06:42:31.942Z]] <https://metacpan.org/release/BKB/Date-Qreki-0.07/source/Changes>
]FIGCAPTION]

>0.07 2017-01-31
>[SNIP[]]
>0.06 2017-01-31
>[SNIP[]]
>0.05 2014-02-12
>[SNIP[]]
>0.04 2014-02-11
>[SNIP[]]
>0.03 2014-02-11
>[SNIP[]]
>0.02 2014-02-07
>[SNIP[]]
>0.01 2013-03-09
]FIG]
--
[209] 
[CITE@en[[[GitHub]] - benkasminbullock/Date-Qreki: convert Gregorian to Japanese "kyureki" dates.]], [TIME[2022-07-13T06:46:06.000Z]] <https://github.com/benkasminbullock/Date-Qreki>
--- [210] 
本項執筆時点での最新版は[TIME[2021-03-25]]。
--- [211] 
[[旧暦]]計算法部分は[TIME[2013-03-09]]以来大きく変更されていない。
-- [439] [[AWK]] 版も参照しつつ、 [[Perl]] 版 (>>81) から派生。
-- [216] 
ライセンス条項の英訳版が追加されている。
-- 
[409] 
[CITE@en[Check against other modules]], [[benkasminbullock]], [TIME[2018-12-06 16:32:28 +09:00]], [TIME[2022-07-14T08:46:09.000Z]] <https://github.com/benkasminbullock/Date-Qreki/commit/cd8848bc83d250876e8f6d3de55fe7cd464e400d>
---
[410] [CITE[Wikipedia]]の[[旧暦2033年問題]]への言及が追加。
--
[546] 
[CITE@ja[にゃぶぅ🎹さんはTwitterを使っています: 「二十四節気を計算で求めようとすると、太陽と月の運行を計算しなくちゃあならない。正確には天体観測によって修正されるから、国立天文台のデータを得るのが一番だけど。 Perlで旧暦と二十四節気を計算するモジュールを見つけたけど、計算おっそいなこれ。 https://t.co/rn5oBm4xcW」 / [[Twitter]]]], 午後9:14 · 2019年3月21日 [TZ[+09:00]], [TIME[2022-07-15T10:09:12.000Z]] <https://twitter.com/Nyaboo/status/1108703382473105414>
---
[547] 
[CITE@ja[にゃぶぅ🎹さんはTwitterを使っています: 「計算がおっそい理由は、元のawkスクリプト由来で、cos関数に渡す角度をすべて360度に正規化する処理を入れているせい。 Perlのcos関数は、360度を超える値を渡しても正常に計算してくれる。 awkは違うのカナ?」 / [[Twitter]]]], 午後9:20 · 2019年3月21日 [TZ[+09:00]], [TIME[2022-07-15T10:09:12.000Z]] <https://twitter.com/Nyaboo/status/1108705050811981824>
---
[548] 
[CITE@ja[にゃぶぅ🎹さんはTwitterを使っています: 「Date::Qrekiの太陽の黄緯を求める計算、間違ってるっぽい。 係数 * cos(係数 * t + 係数)ってのを積算するのだけど。 0.0048 * t * cos(35999.05 * t + 267.52) は、cosの外でtを乗算しちゃあいけない、はず。 0.0048の係数のおかげで誤差に埋もれて、結果は(ほぼ?)変わらないみたいだけど。」 / [[Twitter]]]], 午後9:48 · 2019年3月21日 [TZ[+09:00]], [TIME[2022-07-15T10:09:12.000Z]] <https://twitter.com/Nyaboo/status/1108712005249097729>
-
[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[2016-08-31]]時点ではまだ間違っていた。
--- [143] 
[CITE[2017年大安カレンダー - [[日めくりカレンダー.com]]]], [TIME[2022-06-20T13:47:49.000Z]], [TIME[2016-08-31T08:07:39.847Z]] <https://web.archive.org/web/20160831080737/http://www.himekuricalendar.com:80/taian2017>
--- [145] 
このサイトの実装が [[qreki]] の系譜かどうかは不明。
-- [184] 
[TIME[2016-09-12]]時点では修正済み。
--- [183] 
[CITE[2017年大安カレンダー - [[日めくりカレンダー.com]]]], [TIME[2022-06-20T13:48:23.000Z]], [TIME[2016-09-12T09:48:45.924Z]] <https://web.archive.org/web/20160912094819/http://www.himekuricalendar.com:80/taian2017>
--
[FIG(quote)[
[FIGCAPTION[
[180] 
[CITE@ja[え?2017年3月1日は大安?仏滅?~カレンダーの「2017年問題」について~ | UK京都 [[上野旭昇堂]]]], 
2016.08.23,
2016年8月23日,
[TIME[2022-06-20T13:40:26.000Z]], [TIME[2016-09-01T18:02:13.287Z]] <https://web.archive.org/web/20160901175716/http://uk-kyoto.co.jp/2016-08-rokuyo>
]FIGCAPTION]

>[SNIP[]]
>どちらもWEBのサイト上にあるカレンダーですが
>
2017年の「2月26日~3月27日」の間の
>
「六曜(先勝、友引、先負、仏滅、大安、赤口)」が違っています。
>
★カレンダーA(出典HP:便利コム)
>
★カレンダーB(出典HP:日めくりカレンダー.com)
> 
このように、2種類の「六曜」が存在するのを
>
カレンダーの「2017年問題」と言っています。
>[SNIP[]]
>
上記の「23時58分」は、国立天文台が
>
実際の月の満ち欠けを観測し、計算上の
>
月齢を修正した結果なので、当社が扱うカレンダーの
>
ほとんどのメーカーさんが、この基準でカレンダーを作っています。
>
しかし、WEBや一部のプログラムでは、この月の計測結果の誤差を
>
反映していないものがあり、
>
「2月27日が旧2月1日」となっているものがあるので
>
2通りのカレンダーができてしまうのです。
>[SNIP[]]
>
当社がお取引している主要なカレンダーメーカーさんでは
>
「カレンダーA」が「主流」になっています。
>
「カレンダーB」を採用しているところは、今のところ見あたりません。


]FIG]
--- [181] 
>>138 と記事内容がよく似ているが、関係性は不明。
----
[185] 
>>138 とは上下 / AB が逆転している。
--- [182] 
こちらの記事には怪しげな記載が多い。
こちらの著者はカレンダー業者 (つまりプロ) のはずだが...?
(>>138 はまあ妥当な内容。)



]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]
- 
[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]


]REFS]


** PHP 移植版

[212] 
[[PHP]] 移植版は複数系統が確認されています。

[REFS[

- [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]]が最古。
-- [448] 
[CITE[[[スクリプト]] ダウンロード]], [TIME[2022-07-14T12:24:56.000Z]], [TIME[2003-02-10T10:15:24.774Z]] <https://web.archive.org/web/20030210101519/http://www.2chan.net:80/script/>
--- [449] 言及がある最古。[TIME[2003-02-10]]。
これの前の[TIME[2003-01-29]]版には言及なし。
-- [114] [[Perl]] 版 >>81 からの派生 [SRC[>>53]]。
-- [171] オリジナル版、
Perl 版2種を参照している。
-- [113] 
人気[[掲示板]]サービス
[CITE[ふたば☆ちゃんねる]]
で利用しているスクリプトを公開しているとのこと。
-- [469] [TIME[2020-07-29T19:48:49.000Z]], [TIME[2022-07-14T14:06:53.363Z]] <http://jun.2chan.net/script/qreki.php.txt>
- [52] [CITE@ja[公開スクリプト]], [TIME[2005-01-29T00:03:02.000Z]], [TIME[2020-09-21T03:52:54.784Z]] <http://hymnsong.s7.xrea.com/script.html>
-- [450] [CITE[統一カレンダーPHP版]]
--- [575] [[統一教会]]。[[大韓民国の旧暦]]を併用している[[宗教団体]]。
[SEE[ [[統一教会暦]] ]]
-- [352] 
[CODE[qreki.php]] (>>53)
を採用。
-- [353] 
[[Perl]] 版 (>>123)、
[[AWK]] 版、
[[JavaScript]] 版 (>>88)
を参照。
-- [356] 「旧暦をまじめに算出していないので(バイパス処理)、処理が高速 ※1」
「陽暦、旧暦を永遠的に算出できる。 」
「※1 旧暦の計算には[ASIS[qreki.php][リンク]]を使用しています。」
--- [357] 
[CODE[ini\calender_class.php]]
に
「[[qreki.php]]の処理は遅いので、余計な計算はさせずにバイパス処理をさせる」
と書かれています。
--- [358] 
月初と月末を [CODE[qreki.php]] により変換し、
月中を補間する最適化が実装されています。
-- [354] 「2004/12/28 Ver0.90」 (PHP版)
-- [453] 「2004/12/31 Ver0.91」
-- [454] 「2005/ 1/ 8 Ver0.92」
-- [455] 「2005/ 1/16 Ver0.93」
--- [456] ここまで、 [[Internet Archive]] にも現存しない。
-- [452] 「2005/ 1/17 Ver0.94」 (PHP版)
--- 公開中
-- [457] 「2005/ 1/18 Ver0.94」
--- [459] [[Internet Archive]] にも現存しない。
-- [458] 「2005/ 1/21 Ver0.94-1」
--- [459] [[Internet Archive]] にも現存しない。
-- [355] 「2005/ 1/28 Ver0.94-2」 (MySQL版)
--- 公開中
- [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>
--- [466] [[AWK]] 版を参照している。
--- [468] 現時点 ([TIME[2022-07-14T13:59:36.100Z]]) での最新は[TIME[2020-12-19]]
-- [22] [CITE[[[PHP]]で日本の祝日、旧暦を扱えるライブラリを作った - [[Qiita]]]],
[TIME[2018-05-20 11:50:16 +09:00]] <https://qiita.com/suzunone/items/949e71ea7ea86630524f>
--- [464] 
[CITE@ja[PHPで日本の祝日、旧暦を扱えるライブラリを作った - [[Qiita]]]],
[[@suzunone]],
投稿日 2018年05月19日,
[TIME[2022-07-14T13:43:45.000Z]] <https://qiita.com/suzunone/items/949e71ea7ea86630524f>
---- [465] 
「....のは、2005年の7月のことでした。」
「なんか、天皇誕生日とか変わるらしいし、元号も変わるらしいので、バージョンアップを兼ねて、PHP7化とComposer,Phanに対応しました。」
「もともとは、PHPのMLに投稿させていただいて、
その後私の自作フレームワークの派生プロジェクトとして細々と更新を続けていたものとなります。」
---- [467] その「PHPのML」がどこかは不明。
-
[205] 
[CITE@ja[Chameleon Cyber » [[Rokuyou]]]], [TIME[2022-06-20T14:14:12.000Z]], [TIME[2007-01-08T05:25:59.606Z]] <https://web.archive.org/web/20070108013633/http://www.chameleonic.org/plugin/rokuyou/>
--
[201] 
[CITE@ja[Chameleon Cyber » [[Download]]]], [TIME[2022-06-20T14:11:32.000Z]], [TIME[2007-01-09T18:23:31.027Z]] <https://web.archive.org/web/20070109143709/http://www.chameleonic.org/plugin/>
---
[202] 
[CITE[Rokuyou]],
[[chameleon]]
---- [203] ファイルの日付: [TIME[2005-08-13]]
---- [204] オリジナル版から [[PHP]] 
([[WordPress]] プラグイン)
に移植したもの。
-
[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),
[[MT]] 版 (>>179)
を紹介。
--
[471] 
[[PHP]] 版 (>>53) に「手を入れる」と書いている。その結果は不明。
-
[266] 
[CITE[WordPress Plugins/JSeries » [[wp-koyomi]]]], 
[[Sa.Ga]],
15th of 10月, 2006,
[TIME[2022-07-13T12:04:17.000Z]], [TIME[2007-01-05T15:50:48.444Z]] <https://web.archive.org/web/20070105094715/http://wppluginsj.sourceforge.jp/wp-koyomi/>
-- 
[267] 
「 記事が投稿された日付から、旧暦(太陰太陽暦)や六曜、24節気を取得し、表示させるためのプラグインです。」
-- 
[268] 「1.0 [2006/10/15]」
--
[270] 
オリジナル版を参照しつつ、
[[Perl]] 版 (>>151) から
[[PHP]]
に移植したもの。
--
[274] 
>>205 を参照しているが、独立に作られたもの。
--
[271] 
[[六曜]]に対応しているが、
[CITE[Wikipedia]]の[CSECTION[六曜]]を参照し、
「作者自身もこのあたりについてはあまり理解できていません」
としながら、
「公的機関や宗教団体等に関係するブログや、直接の関係者でない場合でもそれらを主題として取り扱っているブログでは、「六曜」表示機能のご利用はあまりお薦めできません。」
と書いている。
[SRC[>>266]]
---
[272] 
理解していないならこんな余計なことを書くべきではなかった。
社会的に広く受け入れられているわけではない特定のグループの主張について、
それに賛同しているわけでもないのに、
それに迎合するような態度を実装者が取るのはおかしい。
---
[273] 
こういうちょっとしたことの積み重ねで、
間違った認識が広がって、いつの間にかそれが事実に変わってしまうのだ、
というのがこの [[qreki]] と[[旧暦2017年問題]]から得られる教訓。
---
[296] 
この手のクレーマーに目をつけられたら大変だから、
何か断り書きでも書いておかねばと思ったのかもしれません。
そう考えると自己防衛に走った人を責めるのは酷というもの。
[[暦]]の受容の負の歴史の一頁として、
こういう事案も忘れてはいけませんね。
--
[269] 
[CITE@ja[/22200/wp-koyomi_1_0.zipをダウンロード - WordPress Plugins/JSeries - [[OSDN]]]], [TIME[2022-07-13T12:06:24.000Z]] <https://ja.osdn.net/projects/wppluginsj/downloads/22200/wp-koyomi_1_0.zip/>
---
[275] 
[CODE[qreki.php]]
は[TIME[2006-10-14]]付。
--
[276] 
[CITE[【WordPress ME】旧暦・六曜・24節気取得プラグイン「[[wp-koyomi]]」デビュー! » TSJ付゛録゛II]], [TIME[2022-07-13T12:21:46.000Z]], [TIME[2007-03-02T03:23:38.868Z]] <https://web.archive.org/web/20070301210236/http://blog2.atsj.net/2006/10/16/2170/>
---
[281] 作者自身の紹介記事。
--- [277] 
「先日PHPに移植した旧暦計算ライブラリ」
として 
[[URL]]
に
[CODE[2006/10/14]]
と書かれた記事を参照しています。残念ながら
[[Internet Archive]] に所蔵されていません。 >>275 が紹介されていたものと思われます。
--- 
[278] 
>>151 を引用して、[[旧暦2017年問題]]がある旨を注記しています。
----
[FIG(quote)[ [280] 

>まあ、10年以上も先の話ですので、それまでに解決策が見いだされているのではないかと思われます。
というよりそもそもそこまでこのプラグインが使われ続けることもないのかな?
> より精度の高い計算法をご存じの方がいらっしゃいましたら、教えてください。
]FIG]
----
[279] 
なぜその重要事項を >>266 や >>275 に書かないのか...
--
[282] 
[CITE[[[wp-koyomi]] | myonの‘今日も今日とて’]], 
[[寺口瑞生]],
公開 2006年11月27日月曜日 16:58:51,
更新 2006年11月28日火曜日 08:43:23,
旧暦 2006年10月07日,
[TIME[2022-07-13T12:25:50.000Z]], [TIME[2006-12-31T02:34:35.572Z]] <https://web.archive.org/web/20061230200932/http://blog.teraguchi.net/2006/11/27/103/>
--- [283] 利用者。
- [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>
-- 移転確認 [TIME[2022-07-14T13:39:00.800Z]]
-- [460] 
[CITE@ja[[[qreki.php]] が動かないので修正 - babu_babu_babooのゴミ箱]], 
[[ばぶぅ~]],
2013-11-29,
[TIME[2022-07-14T13:38:54.000Z]] <https://babu-babu-baboo.hateblo.jp/entry/20131129/1385688401>
--- [461] >>53 から派生
-- [462] >>442 と同じ人。今回は違う [[PHP]] 移植版がベース。
- [17] [CITE@en[[[PHP]]カレンダーで祝日と六曜を表示する]] ([TIME[2019-03-15 10:29:41 +09:00]]) <https://gist.github.com/himahack/29f4269cdf8103f6a578291cea352e16>
-- [218] 消滅確認 [TIME[2022-07-13T07:02:21.400Z]]
- [42] [CITE@ja[【サンプルあり】[[PHP]]で祝日と六曜入のカレンダーを作る方法【コピペでOK】 | えびたいライフ。]],
2018.08.07,
2018.08.13,
[TIME[2019-03-15 10:30:07 +09:00]]
<https://ebit4i.com/php-calendar/>
-- [470] >>469 の紹介
- [14] [CITE[[[旧暦]]を取得する Web API]],
[TIME[2012-03-21 14:30:31 +09:00]],
<http://api.sekido.info/qreki?output=usage>
-- [305] 
[CITE[旧暦を取得する [[Web API]]]], 
[[関戸]],
[TIME[2022-07-13T14:36:15.000Z]], [TIME[2007-12-15T05:07:56.640Z]] <https://web.archive.org/web/20071215050750/http://api.sekido.info/qreki?output=usage>
--- [306] 
[[AWK]] 版を参照しつつ、
[[PHP]] 版 (>>53) を使っていると書いてあります。
--- [307] 
[[AWK]] 版ドキュメントを引用してその正確性や[TIME[西暦2224年][2224]]の問題を紹介し、
[[Perl]] 版 (>>27) を引用して[[旧暦2017年問題]]を紹介していました。
--- [310] 
「2007-04-01[WEAK[T12:00]]」
--- [311] 
「2007-04-04[WEAK[T16:00]]」
「2007-04-08[WEAK[T02:50]]」
(旧暦計算に関係ない変更)
-- [308] 
[[AWK]] 版ドキュメントを公開していました。 [SRC[>>151]]
--- [309] 
このドキュメントは当時 [[Google検索]]で上位に現れていました。
-- [312] 
[[サーバー側]]で実行され、実働している[[ソースコード]]は非公開。
--
[387] 
[CITE@ja[第360回 AquesTalk PiでUbuntuにおしゃべりさせよう | [[gihyo.jp]]]], 
[[水野源]],
2015-02-04,
[TIME[2022-07-14T06:08:20.000Z]] <https://gihyo.jp/admin/serial/01/ubuntu-recipe/0360?page=4>
---
[388] 
「また何か行事を執り行ううえでは、大安や仏滅といった暦も大切ですよね。しかし六曜を知るには旧暦の日付を計算する必要があり、そのためには前年の冬至から翌年の雨水までの二十四節気と、朔日の日付を求める必要があるらしく、スクリプト内で真面目に計算するのは大変だと判断しました。都合の良いことに[ASIS[旧暦の日付を求められるWeb API][リンク]]が公開されていますので、今回はこちらを利用させてもらいました。」
-
[220] 
[CITE[[[旧暦]]_[[月齢]]]], 
[[fujishima]],
Copyright [ASIS[\©]] 2005,
[TIME[2022-07-13T07:08:58.000Z]], [TIME[2010-12-08T22:30:49.579Z]] <https://web.archive.org/web/20101208223007/http://fujikoweb.net/php/qreki.php>
-- 
[221] 
[TIME[2022-07-13T07:16:56.000Z]] <https://web.archive.org/web/20121212060624/http://fujikoweb.net/php/qreki.inc.txt>
-- 
[223] 
[CITE[PHP旧暦計算プログラム]], 
[TIME[2022-07-13T07:15:57.000Z]], [TIME[2010-12-08T22:34:01.833Z]] <https://web.archive.org/web/20101208223012/http://fujikoweb.net/php/qreki_01.php>
---
[224] 
[TIME[2022-07-13T07:16:19.000Z]] <https://web.archive.org/web/20121212060637/http://fujikoweb.net/php/qreki_01.txt>
---
[225] 
>>221 用の [[UI]]
--
[472] 
[CITE[[[PHP]]プログラム]], [TIME[2022-07-15T03:19:20.000Z]], [TIME[2005-11-23T21:40:19.061Z]] <https://web.archive.org/web/20051123214004/http://www7.big.or.jp:80/~fujiko/php_prog.htm>
---
[473] [[Internet Archive]] 最古、 [TIME[2005-11-23]]
---
[474] [CITE[[[旧暦]]_月齢]], [TIME[2022-07-15T03:19:51.000Z]], [TIME[2006-01-05T20:37:14.734Z]] <https://web.archive.org/web/20060105203537/http://www7.big.or.jp/~fujiko/php/qreki.php>
---
[475] 
[TIME[2022-07-15T03:20:24.000Z]] <https://web.archive.org/web/20060225051546/http://www7.big.or.jp/~fujiko/php/qreki.inc.txt>
-- [447] 派生元は記載されていない。
--
[476] 
[CITE[rokuyo_nencal]], 
[[fujiko]],
Copyright © 2002,
[TIME[2022-07-15T03:21:39.000Z]], [TIME[2002-08-03T12:44:10.522Z]] <https://web.archive.org/web/20020803124344/http://www7.big.or.jp/~fujiko/cgi-bin/nencall_q.cgi?str=fuji>
--- [478] 
「年から24節気を、日から月齢を、月数字から六曜を、月文字から月暦を検索… 」
--- [477] 
同じ[[Webサイト]]のカレンダー。
[TIME[西暦2001年][2001]]から[TIME[西暦2020年][2020]]に対応。
--- [479] 
ソースコードが見つからず (非公開か?) 実装方法不明。
-- [45] [CITE@ja[- [[ぽちぽちぼちぼち。]]]],
[TIME[2019-03-15 10:43:17 +09:00]]
<http://fuji3.main.jp/MT/archives/2008/01/2008-01-29.php>
--- [219] [CSECTION[[[旧暦]]計算プログラム 設置方法。]],
[[☆(ステラ)]],
2008年1月29日(火)
---- [222] >>220, >>221, >>224, >>225 の利用方法を紹介
--- [226] 
[CITE@ja[- [[ぽちぽちぼちぼち。]]]], 
[TIME[2022-07-13T07:22:16.000Z]] <http://fuji3.main.jp/MT/archives/2007/01/2007-01-20.php>
---- [227] 
[CSECTION[今日って大寒だったのか!]],
[[☆(ステラ)]],
2007年1月20日(土)
----- [228] [[AJNET]] のカレンダー ([[旧暦]]表示あり) を参照している。
----- [229] 
「それにしても、どこかに『月齢&旧暦カレンダー』ブログパーツってないかなぁ。月齢だけならいくつか見るのだけれど。」
--- [230] 
[CITE@ja[- [[ぽちぽちぼちぼち。]]]], [TIME[2022-07-13T07:24:12.000Z]] <http://fuji3.main.jp/MT/archives/2008/01/2008-01-28.php>
---- [231] 
[CSECTION[旧暦 六曜 月齢 二十四節気 カレンダー。]],
[[☆(ステラ)]],
2008年1月28日(月)
----- [232] 
「両方入っているのが見つからず、とりあえず「お月様(月齢表時)」だけでも…と設置して、その他は先送りになっていたのです。」
----- [233] 
[[JavaScript]] 版 (>>88, >>234)、 
[[Perl]] 版 (>>151)、
別の [[PHP]] 版を参照しつつ、
[[PHP]] 版を採用したとのこと。







]REFS]

-*-*-

[256] 
[[upk]]
による
[DFN[[CITE[[CODE[qreki.php]]]]]]
は、
[TIME[2006-03-25]]付の
[[PHP]]
移植版です。
[SRC[>>255]]

[257] 
[[AWK]] 版を参照しつつ、
[[Perl]] 版 (>>151)
から移植したものでした。
[SRC[>>255]]

[258] 
「2004-01-23 (金) 16:30:11」
付のコメントがあり [SRC[>>254]]、
[TIME[2004-01-23]]には既に公開されていたようです。

[259] 
[TIME[2010-09-03]]に
[[ephem]]
が

>
-function LONGITUDE_SUN()ですが、新こよみ便利帳ver.1.2 p.150にある光行差補正(視黄経)が抜けているようです。 $th += .0048 * cos( $k * NORMALIZATION_ANGLE( 1934 * $t + 145 ) ); $th -= .0057;を追加されると1908年9/25~および2017年2/26~の計算誤差による朔日のズレが解消できます。 -- ephem 2010-09-03 (金) 15:25:30
-1884は、時差を京都に合わせるため東経135.6333...で計算すると良さそうです。 -- ephem 2010-09-03 (金) 15:31:44
-以降、JPL DE405で算出した物と比較すると2051/11/3(旧暦10/1)と2177/7/25(旧暦7/1)に朔日の計算がずれますが、2200年までの検証では、ほぼ問題なさそうでした。便利なスクリプトの公開ありがとうございます。 -- ephem 2010-09-03 (金) 15:37:07

と誤りを指摘しました。 [SRC[>>254]]

[260] 
これを承けて[TIME[2010-09-09]]頃に修正する旨と差分が
[[upk]]
から投稿されました。
[SRC[>>254]]
しかしながら [[Internet Archive]] 所蔵のこのページは[TIME[2012-08-22]]時点で最終更新が[TIME[2010-09-09]]のままで、
[CITE[[CODE[qreki.php]]]]
の公開日時も[TIME[2006-03-25]]のまま変更されていないので、
修正版は更新されなかった可能性もあります。


[261] 
残念ながら [[Internet Archive]] には 
[CITE[[CODE[qreki.php]]]]
本体はどのバージョンも所蔵されていません。

[262] 
指摘があったうち、
[TIME[西暦1884年][1884]],
[TIME[西暦1908年][1908]],
[TIME[西暦2017年][2017]]は
[[JavaScript]]
版の時点で既に検出された問題の再発見です (>>104)。
[[JavaScript]] 版はこの [CITE[[CODE[qreki.php]]]]
の移植元の [[Perl]] 版の移植元に当たりますが、
[CITE[[CODE[qreki.php]]]]
の配布ページ [SRC[>>254]]
からはリンクされておらず、
作者およびコメント者が知っていたのかは不明です。

[263] 
[TIME[西暦2051年][2051]]と[TIME[西暦2177年][2177]]は 
[[qreki]]
界隈ではこれが初の報告と思われます。

[264] 
コメント者が[TIME[西暦2200年][2200]]まで検証していながら、
[[旧暦2033年問題]]に言及していないのは不思議です。
[[朔日]]のチェックだけで[[月名]]は見ていなかったのかもしれません。


[265] 
不完全とはいえ[TIME[平成22(2010)年][2010]]時点でこうして不具合修正が行われ、
[[旧暦2017年問題]]を回避できるバージョンが出現していたのですが、
これが普及しなかったのは不運でした。


[REFS[

- [254] 
[CITE[自作/PHP/qreki.php - [[JO1UPK]]]], 
Last-modified: Thu, 09 Sep 2010 04:00:35 UTC,
[TIME[2022-07-13T11:26:19.000Z]], [TIME[2012-08-22T20:49:32.180Z]] <https://web.archive.org/web/20120822173023/http://jo1upk.blogdns.net/saito/?%E8%87%AA%E4%BD%9C%2FPHP%2Fqreki.php>
-- [255] 
[CITE[[CODE[qreki.php]]]],
[[upk]],
2006-03-25 (土) 23:01:29


]REFS]


** Ruby 移植版

[213] 
[[Ruby]] 移植版は複数系統が確認されています。



[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] 
[[AWK]] 版を参照しつつ、
[[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]]。
-
[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 ([TIME[2009-11-27]])
から <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]
--- [481] [CODE[jroku.rb]]。
--- [159] 引用記事の題名のリンク先は >>156。
--- [160] >>149 で配布されていたのはここで作られたものか?
しかしファイル名は一致しない。[[日付]]もぜんぜん違う。
--- [166] [[calendar(暦計算モジュール)]]は別記事参照。
[[qreki]] 
の系譜でなさそう。
---- [480] [[Ruby]] 版 (>>162) 及び
[[Ruby-Luna]] を見つけたが入手不能で利用できなかったとのこと。
- [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]] 版が参照されている。
---
[483] 
[CITE@ja[qreki | RubyGems.org | コミュニティの[[Gem]]ホスティングサービス]], [TIME[2022-07-15T06:00:24.000Z]] <https://rubygems.org/gems/qreki>
--
[550] 
[CITE@ja[オザマサ / メダカ飼育員さんは[[Twitter]]を使っています: 「qreki gemはどうだったっけな。 / 【リアル天地明察】2033年以降、旧暦が決められなくなる?どんな影響があるの? - Togetterまとめ http://t.co/8ucA0rdINv @togetter_jpさんから」 / Twitter]], 午後10:03 · 2015年2月19日 [TZ[+09:00]], [TIME[2022-07-15T10:13:39.000Z]] <https://twitter.com/ozamasa/status/568395501978005504>
--
[549] 
[CITE@ja[オザマサ / メダカ飼育員さんはTwitterを使っています: 「私、旧暦計算して六曜も出力する「qreki」というgemを作ったんですが。世の中むずかしい / 大安・仏滅…記載は不適切、県がカレンダー回収(読売新聞) - Yahoo!ニュース https://t.co/dnWhl3U7WX #Yahooニュース」 / [[Twitter]]]], 午前9:18 · 2015年12月26日 [TZ[+09:00]], [TIME[2022-07-15T10:10:48.000Z]] <https://twitter.com/ozamasa/status/680543076922732544>
--
[380] 
[CITE@ja[Rubyで六曜を計算 - [[Qiita]]]], 
[[@hal_99]],
投稿日 2017年01月19日,
更新日 2017年01月31日,
[TIME[2022-07-14T05:57:06.000Z]] <https://qiita.com/hal_99/items/3eb57a12141b03ca8f25>
---
[384] [CSECTION[補足]]
----
[381] 
「上記のライブラリを利用すると2017年の2〜3月の一部の六曜が流通されているものと異なる値が得られることを確認した。これは月齢の計算が古いので上記の期間に狂いが生じている。」
----
[382] 
「また、2033年秋から2044年一部にかけての期間は、六曜が正しく計算できない期間が存在していることがわかっているので、六曜は2032年まで計算するように使うのがいまのところベター。また、ライブラリの信頼性は定期的に確認する必要はある。」
---
[383] 
[CITE[Wikipedia]] の[CSECTION[旧暦2033年問題]]を参照している。
---
[385] 
約1ヶ月後に間違った結果になることを確認しているのに、それは「補足」
に過ぎず、この記事の著者にとって当該ソフトウェアを使わない理由にはならないらしい。
(不具合の指摘の記事ではなくライブラリーの紹介記事。)
---
[386] 
「ライブラリの信頼性」
を疑う姿勢は素晴らしいが、
疑った結果信頼できないとわかっても採用・紹介を憚らないというのが新感覚すぎて理解しがたい。
非難とかでなく本当にわからない。


]REFS]


[593] 
また別系統の移植版。
ただの移植ではなく[[天体暦]]が置き換えらえている。
同じ人が近い時期に [[qreki]] ベース以外の2手法でも似たようなものを作っていて、
結果を比較していたらしい。

[594] 
しかし [[gem]] として公開されていて、それなりにダウンロードされて使われている模様。
[[qreki]] 版も (他手法に比べて精度はよくないと評価したにも関わらず)
本段落執筆時点で[TIME[令和3(2021)年][2021]]まで定期的にメンテナンスされている。

[REFS[

-
[578] 
[CITE@ja[[[Ruby]] - 太陽・月の視赤経・視赤緯等の計算(海保略算式版)! - mk-mode BLOG]], 
Updated: 2016-05-04 00:20,
[TIME[2022-08-26T08:51:49.000Z]], [TIME[2022-08-27T02:59:12.546Z]] <https://www.mk-mode.com/blog/2016/05/04/ruby-calc-ephemeris-by-kaiho/>
-- [576] 
[CITE@ja[[[Ruby]] - 太陽・月視位置計算 gem の作成(海保略算式版)! - mk-mode BLOG]],
Updated: 2016-07-08 00:20,
[TIME[2022-08-26T08:51:49.000Z]], [TIME[2022-08-27T02:54:26.487Z]] <https://www.mk-mode.com/blog/2016/07/08/ruby-calc-sun-moon-location-by-eph-jcg-gem/>
--- 「計算対象年は 2008 年〜 2016 年。」
---
[577] [CITE@en[[[GitHub]] - komasaru/eph_jcg: Ephemeris calculation tool by JCG method.]], [TIME[2022-08-27T02:57:46.000Z]] <https://github.com/komasaru/eph_jcg>
--
[579] [[海上保安庁]]の計算式ベースで、 [[qreki]] とは無関係。
-
[580] 
[CITE@ja[[[Ruby]] - カレンダー計算 gem の作成! - mk-mode BLOG]], 
Updated: 2016-07-12 00:20,
[TIME[2022-08-26T08:51:49.000Z]], [TIME[2022-08-27T03:02:29.465Z]] <https://www.mk-mode.com/blog/2016/07/12/ruby-calendar-calculation-by-my-gem/>
-- [[AWK]] 版からの派生。
-- [581] 「微調整はしているもののこのアルゴリズムでは若干の誤差が発生します。また、計算する日によっては月齢が不正になることもあります。」
--- [582] [[海上保安庁]]サイトおよび >>576 を「精度が高い」と紹介。
--- [583] [[DE430]] および >>587 を「より高精度」と紹介。
-- [584] 「計算対象年月日は 0000-01-01 〜 9999-01-01。
(但し、祝日は当記事執筆時点の「国民の祝日に関する法律」によるもの)」
-- [585] 
[CITE@en[[[GitHub]] - komasaru/mk_calendar: Calendar library including Japan's old-calendar.]], [TIME[2022-08-27T03:05:21.000Z]] <https://github.com/komasaru/mk_calendar>
--- [586] 「当リポジトリは更新停止。(2018年11月4日)」
--
[595] 
[CITE@ja[mk_calendarの全バージョン履歴 | RubyGems.org | コミュニティの[[Gem]]ホスティングサービス]], [TIME[2022-08-31T08:11:02.000Z]] <https://rubygems.org/gems/mk_calendar/versions>
[PRE[
[B[0.3.2]] - May 25, 2021 (18KB)
[B[0.3.1]] - November 04, 2018 (17.5KB)
[B[0.3.0]] - September 15, 2016 (17.5KB)
[B[0.2.8]] - July 27, 2016 (17.5KB)
[B[0.2.7]] - July 27, 2016 (17.5KB)
[B[0.2.6]] - July 20, 2016 (18.5KB)
[B[0.2.5]] - July 20, 2016 (18.5KB)
[B[0.2.4]] - June 15, 2016 (18.5KB)
[B[0.2.3]] - June 15, 2016 (18.5KB)
[B[0.2.2]] - June 10, 2016 (18.5KB)
[B[0.2.1]] - June 10, 2016 (19KB)
[B[0.2.0]] - June 10, 2016 (19KB)
[B[0.1.2]] - June 09, 2016 (19KB)
[B[0.1.1]] - June 08, 2016 (19KB)
[B[0.1.0]] - June 08, 2016 (19KB)
]PRE]
-
[587] 
[CITE@ja[[[Ruby]] - カレンダー計算 gem の作成(JPL DE430 使用の高精度版)! - mk-mode BLOG]], 
Updated: 2016-10-26 00:20,
[TIME[2022-08-26T08:51:49.000Z]], [TIME[2022-08-27T03:07:10.866Z]] <https://www.mk-mode.com/blog/2016/10/26/ruby-calendar-calculation-by-my-gem-jpl/>
-- [590] >>580 を参照している。
--- [591] 「但し、微調整はしているものの、このアルゴリズムは略算式を使用しているため、当然ながら若干の誤差が発生します。
そこで、 NASA の機関 JPL(Jet Propulsion Laboratory) の提供する太陽・月・惑星の正確な位置データ DE430 などを使用して計算する RubyGems ライブラリを作成しました。」
-- [588] 
「計算対象年月日は 1549-12-21 〜 2650-01-25(但し、使用する JPL DE430 バイナリデータを別途作成し直している場合は、そこで設定した期間)」
-- [592] 
主要部分は [[qreki]] ではない。 [[qreki]] 由来部分が残存するかどうかは未検証。
-- [589] [CITE@en[[[GitHub]] - komasaru/mk_cal_jpl: Calendar library including Japan's old-calendar, using JPL DE430.]], [TIME[2022-08-27T03:08:41.000Z]] <https://github.com/komasaru/mk_cal_jpl>









]REFS]

** Java 移植版

[REFS[

- [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>
--- [196] 
オリジナル版を
[[iappli]] [[Doja]]
用の
[[Java]]
に移植したもの。
--- [186] リンクされたソースコードは [[Internet Archive]] に無し。
--
[FIG(quote)[
[FIGCAPTION[
[485] 
[CITE[携帯潮汐]], [TIME[2022-07-15T06:16:53.000Z]], [TIME[2009-01-20T06:54:47.910Z]] <https://web.archive.org/web/20090120064857/http://homepage1.nifty.com/ave/java/avektide.html>
]FIGCAPTION]


>(31)2008.6.3 v2.2
>・計算精度向上を狙って浮動小数点関数に変更(iappli浮動小数点版)
>・六曜表示追加(iappli浮動小数点版)
[SNIP[]]
>(33)2008.6.26 v2.22
>・浮動小数点関数は遅い為j3d.Mathに戻す(iappli浮動小数点版)
>[SNIP[]]
>(34)2008.6.26 v2.23
>・j3d.Math版六曜ルーチンにバグがある為、浮動小数点版に戻す(浮動小数点版)


]FIG]
--
[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]

>携帯潮汐に組込んでいたDoja iappli版[ASIS[「旧暦六曜Javaソースプログラム」][リンク]]を要望が多い?ので公開する。

> 内容を理解せずに移植しているので計算結果は責任が持てません!

]FIG]
--- [484] [[AWK]] 版から派生。
-- [46] [CITE[旧暦六曜計算[[Java]]ソースプログラム]],
[TIME[2017-03-08 12:02:42 +09:00]]
<http://ave.la.coocan.jp/kaihatsu/qreki.htm>
---
[187] 
[CITE[旧暦六曜計算[[Java]]ソースプログラム]], 
[[大和]],
[TIME[2017-03-08T03:02:42.000Z]], [TIME[2022-06-20T13:52:07.786Z]] <http://ave.la.coocan.jp/kaihatsu/qreki.htm>
---- [188] 
移転先。
---- [189] 
>>78 時代にはなかった[[西暦2017年問題]]の解説が追加されている。
----- [190] >>180 を参照している。
----- [199] A/B の区分は >>180 と同じ。
---- [191] 「Aパターン」「Bパターン」の2種類のプログラムが配布されている。
---- [192] 「Aパターン」
は[[かわうそ@暦]]
の
2008/01/05
版の
[[JavaScript]]
を 
[[Java]] に移植したもの。
----- [486] [[ソースコード]]のファイルの日付は[TIME[2017-03-08]]。
----- [193] [[qreki]] の系譜では無い。
---- [194] 「Bパターン」
はオリジナル版から 
[[Java]] に移植したもの。
----- [195] 
>>78 で配布されていたものと同じか。
----- [197] 
ただし[[ソースコード]]のファイルの日付は[TIME[2017-03-08]]。
----- [299] ファイル内の[[コメント]]
「Java版 旧暦六曜計算プログラム by 大和」
-- [44] [CITE[自作androidアプリが暦の2017年問題に・・・: [[がらくた研究室]]]],
[TIME[2019-03-15 10:34:00 +09:00]]
<http://yamatonoie.cocolog-nifty.com/ave/2017/03/android2017-7a8.html>
---
[FIG(quote)[
[FIGCAPTION[
[198] 
[CITE[自作androidアプリが暦の2017年問題に・・・: [[がらくた研究室]]]], 
2017年3月 9日 (木),
[TIME[2022-06-20T14:07:02.000Z]] <http://yamatonoie.cocolog-nifty.com/ave/2017/03/android2017-7a8.html>
]FIGCAPTION]

>
暦の2017年問題、判明したのは携帯ワイド改を使って頂いている漁師さんからのバグ報告でした。
下記の自作androidアプリは暦を表示してる。
>・携帯潮汐改
>・携帯潮汐Ⅳ
>・潮汐ワイド改
>・潮汐ワイドⅣ
>・KoKoDoKo日の出月の出
>[SNIP[]]
>自分はいままで高野英明氏作jgAWK版をJavaに移植した(B)パターンを使っていましたが主流は(A)パターンのようです。
>それでWeb上を探し回って(A)パターンのかわうそ氏作のJava Script版を見つけましたのでJava版に移植させて貰いました。

]FIG]
---- [200] [[西暦2017年問題]]の解説は >>189 と同じ。
--
[551] 
[CITE@ja[やもりさんは[[Twitter]]を使っています: 「QReki.javaがjava.lang.ArrayIndexOutOfBoundsException起こしてたのは、朔旦冬至だっからなのかな。19年に一度起きるバグとはちょっと面白いかも。というか次回の朔旦冬至は旧暦的に大事件のようなので心配。」 / [[Twitter]]]], 午後11:44 · 2015年2月1日 [TZ[+09:00]], [TIME[2022-07-15T10:14:16.000Z]] <https://twitter.com/yamori813/status/561897832005632001>
-
[605] 
[CITE@ja[Re:Kayo-System Co.,Ltd.: [[六曜]]計算 WEBサービス]], 
[[株式会社Re:Kayo-System]],
2010年7月7日水曜日,
[TIME[2021-12-14T04:46:01.000Z]], [TIME[2022-08-31T09:00:31.365Z]] <http://kayosystem.blogspot.com/2010/07/web.html>
--
[606] 
「本サービスは無料で利用できるWEBサービスです。」
--[608] 
紹介されているサーバー <http://jqreki.appspot.com/> は既に動作せず、
[[Internet Archive]] にも所蔵ページなし。
[TIME[2022-08-31T09:01:55.700Z]]
--
[607] ソースコードは非公開。
--
[609] [[AWK]] 版を参照しつつ、
[[Java]] 版 (>>59) を参照し、それを利用していると紹介されている。
-
[317] 
[CITE@ja[QReki.javaの不具合 - [[Qiita]]]], 
[[@yamori813]],
投稿日 2017年03月10日,
更新日 2017年03月13日,
[TIME[2022-07-14T02:33:06.000Z]] <https://qiita.com/yamori813/items/b4d2d3d34e25654ecbe6>
-- [318] [[旧暦2017年問題]]について書かれている (>>24)。
--- [319] [[AJNET]] の[[旧暦]]および[[国立天文台]]の[[朔]]を参照している。
-- [320] なぜか [CODE[QReki.java]] 
の入手方法は書かれていない。
>>78 か。
--- [321] 本家はちょうど前日に修正されているが (>>198)、
それを知らずに独立して修正したものか。
-- [322] 
「QReki.javaというオープンソースを自分用の暦アプリで使っているのですが、旧暦の表示がずれていたので、確認してみました。」
--- [323] 「自分用の暦アプリ」は非公開と思われ、著者のサイト等には見当たらない。
[[スクリーンショット]]のみ。
[TIME[2022-07-14T02:41:36.600Z]]
-- [326] 
修正の方針は書いているが、肝心の修正版も差分も示されていない。
-- [324] 
「旧暦は[ASIS[2033年問題][リンク]]というのもあるようです。」
(リンク先は[CITE[Wikipedia]]。)
--- [325] [[旧暦2033年問題]]は言及しているだけで修正していない模様。
- [56] [CITE@en[Calendar/QReki.java at master · paveway/Calendar · [[GitHub]]]], 
[TIME[2014-04-25]],
[TIME[2021-02-25T05:47:14.000Z]] <https://github.com/paveway/Calendar/blob/master/src/info/paveway/external/QReki.java>
-- [297] ファイル内のコメント
「Doja iappli 旧暦六曜計算プログラム by 大和」
-- [298] ファイル内のコメント
「DATE : 2008/03/14 14:37」
-- [300] >>78 で配布されていたものか? >>194 とは異なる。
- [43] [CITE@ja[[[旧暦]]計算プログラムの修正 | ハックノート]],
[[alkoshikawa]],
2014.10.23,
[TIME[2019-03-15 10:32:29 +09:00]]
<https://hacknote.jp/archives/6072/>
-- [246] 暦計算には変更なし。


]REFS]


** その他のバージョン

[REFS[

- 
[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]
--
[332] 
[CITE[旧暦 for VB]] Ver1.0,
[[金成正之]],
2002/5/27
--
[331] 
[[AWK]] 版と
[[JavaScript]] 版 (>>88)
から移植したという
[[Visual Basic]] 版。
本家 [[Visual Basic]] ([[VB5]], [[VB6]])
と [[VBA]] ([[Excel 97]], [[Access 97]])
が想定されている。
-
[508] 
[CITE[[CODE[nakodate.dll]]]]
-- [509] [[プログラミング言語]][[なでしこ]]v1の標準ライブラリー。
--
[FIG(quote)[
[FIGCAPTION[
[510] 
[CITE@en[nadesiko/History20090817.txt at master · kujirahand/nadesiko · [[GitHub]]]], [TIME[2022-07-15T08:53:06.000Z]] <https://github.com/kujirahand/nadesiko/blob/master/doc/History20090817.txt#:~:text=旧暦>
]FIGCAPTION]


>2005/05/01 version 1.19
>[SNIP[]]
>・旧暦の年計算ルーチンに間違いがあったので修正。
>[SNIP[]]
>2005/04/27 version 1.18
>[SNIP[]]
>2005/04/27 version 1.17
>・『旧暦変換』『五曜取得』『年ノ干支取得』『日ノ干支取得』命令を追加。
>[SNIP[]]

]FIG]
-- [511] 
[CITE[1.1系列のバージョン - Old [[Nadesiko]]]], [[wbot.net TOPOZO, System 99yen]], [TIME[2022-07-15T08:54:13.000Z]] <http://wbot.net/old_nadesiko/?series=11>
--- [512] 1.18, 1.19 のバイナリーパッケージが配布されています。
--- [513] ソースコードは無し。
--- [514] [[LGPL]] で配布されていたようなので、
当時のソースコードは探せばどこかに残っているかも。
1.17 は 1.18 と同日なので流通しなかったのかもしれません。
--
[FIG(quote)[
[FIGCAPTION[
[515] 
[CITE@en[nadesiko/qreki.pas at master · kujirahand/nadesiko · [[GitHub]]]], [TIME[2022-07-15T08:56:31.000Z]] <https://github.com/kujirahand/nadesiko/blob/master/hi_unit/qreki.pas>
]FIGCAPTION]

>
[PRE(code)[
// 旧暦計算ライブラリ
// 作者:クジラ飛行机(2005/04/27)http://www.kujirahand.com
//-----------------------------------------------------------------------
// オリジナルのスクリプトは高野氏のAWKです。下記より入手できます。
// http://www.vector.co.jp/soft/dos/personal/se016093.html
//-----------------------------------------------------------------------
// オリジナルよりの改良点:
// 2017年の計算誤差をDB参照により修正
// 但し、旧暦2033年の計算誤差は、そのまま
// 検証年:2017,2005
]PRE]

]FIG]
--- [519] [[AWK]] 版から派生した [[Delphi]] ([[Object Pascal]]) 版。
--- [516] [TIME[2008-10-10]]時点が [[GitHub]] の最古。
--- [518] [CITE@en[[[旧暦]]が間違った日付を出力する問題 (@955)]], [[@955]], [TIME[2021-07-11 00:05:29 +09:00]], [TIME[2022-07-15T08:57:55.000Z]] <https://github.com/kujirahand/nadesiko/commit/dd37f503a50e3a358df60e7c83168e974549b17c>
---- [524] 「2021/07/10 version 1.582」にこれが反映されている。
--- [517] [CITE@en[@955 [[旧暦]]変換の問題を修正]], [[@955]], [TIME[2022-02-08 11:13:36 +09:00]], [TIME[2022-07-15T08:57:39.000Z]] <https://github.com/kujirahand/nadesiko/commit/b654bff6ad4db48cd4faf952af2b9eba36eaa72c>
---- [525] 「Windows版 v1.586 (2022/02/08)」にこれが反映されている。
--
[FIG(quote)[
[FIGCAPTION[
[520] [CITE[旧暦変換 - [[なでしこ]] リファレンス]], [TIME[2022-07-15T08:18:53.000Z]] <https://nadesi.com/man/index.php?%E6%97%A7%E6%9A%A6%E5%A4%89%E6%8F%9B>
]FIGCAPTION]

>[B[概要 (クジラ飛行机) [2005年04月28日] ]]
>
日付Sから旧暦を求めます。計算から暦を計算しているので、完全に正しいものを得ることはできません。分っているものでは、旧暦2033年が正しく計算できません。
]FIG]
--
[FIG(quote)[
[FIGCAPTION[
[521] [CITE[六曜取得 - [[なでしこ]] リファレンス]], [TIME[2022-07-15T08:19:36.000Z]] <https://nadesi.com/man/index.php?%E5%85%AD%E6%9B%9C%E5%8F%96%E5%BE%97>
]FIGCAPTION]

>※現在確認したところ、2009年9月の20-23日が間違っています。
]FIG]
--
[522] 
[CITE[「[[なでしこ]]v1」開発掲示板]], [TIME[2022-07-15T09:02:08.000Z]] <https://nadesi.com/cgi/bug/index.php?m=thread&threadid=955>
--- 
[523] [CITE[旧暦変換がおかしすぎる(六曜も)]],
[[雪乃☆雫]],
2021-06-03 09:23
----
[526] 
本家 [[qreki]] とは別次元でおかしな結果が得られるとのこと。
移植によるミスか。
---
[531] [CITE[ちょっとやってみます~]],
[[雪乃☆雫]],
2022-01-04 16:30
----
[532] 
「データを使う方法の強みは、歴史上の実際の暦と結果が合う点ですね。
しかし、データがある範囲内しか取得出来ないんですよね~(モノスゴイ未来の旧暦なんて、あまり需要は無さそげなうえ、計算でも誤差の予測が難しくなるからどのみち正確には算出できないとは思いますが)
とりあえず、それで良ければv1で動くようにしてみます!」
--
[527] 
[CITE@en[[[GitHub]] - snowdrops89/Qreki_nako: 日本語プログラミング言語「なでしこ」で歴史上の暦日により旧暦と西暦を相互変換したりなんだりするライブラリ。]], [TIME[2022-07-15T09:25:10.000Z]] <https://github.com/snowdrops89/Qreki_nako>
---
[528] 
[[なでしこ]]v1 の実装。 [[qreki]] ベースではなく表を使う。
[TIME[旧暦645年1月1日][kyuureki:0645-01-01]]から[TIME[2099-12-31]]に対応。
----
[FIG(quote)[[530] 

> 大化元年から明治5年までは『日本暦日原典』を参照。また、『国立天文台 暦計算室』の計算結果の校訂を参照。
> 明治6年以降については、なでしこの旧暦変換で作成。 (なでしこの旧暦変換には問題がありましたが、朔の日付と閏については正しく取得されており、こちらのデータには問題ありません。旧暦変換で問題のあった日付について、正しい出力を確認しています)
> 2033年問題については『暦文協』の見解に基づき閏11月案に修正。
]FIG]
---
[529] 標準ライブラリーの誤りを指摘した者による代替実装。
[TIME[2022-01-17]], [TIME[2022-01-18]]
---
[533] 
これが開発されても標準ライブラリーが置き換えられないのは、
表ベースより計算の方が良いという考えによるものか。
-- 
[534] 
[CITE[本気の[[元号]]取得!]], 
[[雪乃☆雫]],
投稿日時: 2021/05/25 01:22,
編集: 2022/02/15 16:01,
[TIME[2022-07-15T09:32:27.000Z]] <https://n3s.nadesi.com/id.php?556>
--- [535] 
[TIME[2022-07-15T09:33:13.000Z]] <https://n3s.nadesi.com/image.php?f=24.json>
---
[536] 
[[なでしこ]]v3用の実装。これも表によるもの。
--
[537] 
[CITE@en[[[GitHub]] - snowdrops89/Qreki_nako3: 日本語プログラミング言語「なでしこ3」で歴史上の暦日により旧暦と西暦を相互変換したりなんだりするNAKO3プラグイン。]], [TIME[2022-07-15T09:33:40.000Z]] <https://github.com/snowdrops89/Qreki_nako3>
---
[538] 
[[なでしこ]]v3用の表。 (実装はない。)
[TIME[2022-06-08]]
- [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]] 版 (>>88), 
[[Perl]] 版 (>>15),
[[Ruby]] 版 (>>147),
[[PHP]] 版 (>>53),
[[PHP]] 版 (>>266),
[[Java]] 版 (>>13)
を参照している。
--- [379] 
「動作が同じということと、算出結果に誤りがないかどうかは別問題。詳しくはオリジナルの QREKI.DOC に。」
-- [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] [CODE[README.md]] [TIME[2022-06-20T07:01:14.200Z]]

>QREKI.AWK と qreki.py は新暦1年1月1日から9999年12月31日までの間で 同じ結果が得られることを確認しています。 過去や遠い未来にたいして適用する是非はともかく。

]FIG]
---- [376] オリジナルのドキュメント (>>70) も同娘されてはいます。
---- 
[377] 
この [CODE[README.md]] の記述を見たら、
あたかも正確性が検証されたよいソフトウェアのように読めてしまいます。
(移植の正しさの検証としては間違っていないのですが。)
同梱されているオリジナル版のドキュメントには[TIME[西暦2224年][2224]]の問題が明記されているのですが、
表にこう書いてあったらそんな細かいところまでチェックしない人の方が多いのではないでしょうか。
---- [378] 
「過去や遠い未来」
については留保が付いていますが、
もっと近い過去や未来について、
作者は何も把握していなかったということでしょうか
(>>117 では [[JavaScript]] 版, [[Perl]] 版に言及していたのに)。
せめてオリジナルに言及がある[TIME[西暦2224年][2224]]くらいははっきり書いておくべきでした。
(>>379 には少しだけ言及があったのに。)
-- [363] 
[CITE@ja[fgshunさんはTwitterを使っています: 「C 言語製 Python モジュール処女作、旧暦計算サンプルプログラム QREKI.AWK の移植。 C コンパイラがない環境で pip install した場合でも Pure Python 部分だけで低速動作する(Extension(optional=True))。もう 10 年前。この手のなにかをまた作りたい。なにがいいかなー https://t.co/7pNdeMl4xQ」 / [[Twitter]]]], 午後10:14 · 2019年10月3日 [TZ[+09:00]], [TIME[2022-07-14T04:46:58.000Z]] <https://twitter.com/fgshun/status/1179746457772908545>
--
[544] 
[CITE@ja[[[fgshun]]さんはTwitterを使っています: 「Windows に Python 3.8.0 を入れて C Extension 移植した暦関連ライブラリたちを pip wheel . してみる。Py_LIMITED_API 0x03050000 の単純なライブラリにコードの修正はいらなかった。アップロードするー 旧暦 https://t.co/SP96ZSb3vH 祝日 https://t.co/OLRCzZctYk」 / Twitter]], 午後7:34 · 2019年10月19日 [TZ[+09:00]], [TIME[2022-07-15T10:08:47.000Z]] <https://twitter.com/fgshun/status/1185504485344337920>
---
[545] 
[CITE@ja[[[fgshun]]さんはTwitterを使っています: 「cjholiday と qreki_py に Python 3.8 の Argument Clinic をつかってさらに速度を上げるようとする試み。ブランチ名 clinic38 。中身が分岐の羅列にすぎない前者は引数パースが実行時間に占める割合が大きいらしく加速した。いっぽうそれなりに演算している後者には有意な速度差はみられない」 / Twitter]], 午前1:09 · 2019年10月20日 [TZ[+09:00]], [TIME[2022-07-15T10:08:47.000Z]] <https://twitter.com/fgshun/status/1185588712345747457>
--
[541] 
[CITE@ja[[[fgshun]]さんはTwitterを使っています: 「https://t.co/Eell1zgpa9 10年前に書いた QREKI.AWK の Python (と C Extention) 移植、その 太陽・月の黄経の算出の箇所をぼんやりとながめている。これ numpy 案件だよな。同等の処理を書いて遊んでみるか。あと % 360.0 いらなくね疑惑」 / Twitter]], 午後7:49 · 2020年2月17日 [TZ[+09:00]], [TIME[2022-07-15T10:07:58.000Z]] <https://twitter.com/fgshun/status/1229357298973200385>
---
[543] 
[CITE@ja[[[fgshun]]さんはTwitterを使っています: 「np.sum(a * np.cos(np.pi / 180.0 * (k * t + th))) numpy で書いてみる。λsun=Σ A*cos(k*t+θ0 ) をそのまま書くことができて、高速で動く。そりゃそうだよな」 / Twitter]], 午後9:15 · 2020年2月17日 [TZ[+09:00]], [TIME[2022-07-15T10:07:58.000Z]] <https://twitter.com/fgshun/status/1229378883188748290>
--
[167] 
[CITE@en[qreki/qreki.py at main · eternalkagosima/qreki · [[GitHub]]]], [TIME[2022-07-15T05:05:21.000Z]] <https://github.com/eternalkagosima/qreki/blob/main/qreki.py>
--- [482] 0.4.6
--
[369] 
[CITE@ja[こどもの日(5/5)であっても、仏滅となる年は多いのか!? - [[Qiita]]]], 
[[@seigot]],
投稿日 2022年05月21日,
更新日 2022年05月26日,
[TIME[2022-07-14T05:38:16.000Z]] <https://qiita.com/seigot/items/be4eb1335cd620018ef3>
---
[370] 
「「こどもの日(5/5)は仏滅となる事はない」というまことしやかな噂を聞き確かめたいという気持ちが芽生えた。」
---- [371] そんなひどい[[デマ]]があるのか。当然結果は[[偽]]。
---- [373] [[Python]] 版を使って[TIME[西暦1980年][1980]]から[TIME[西暦2100年][2100]]まで計算し、
否定する結果を得ている。
----- [372] 
胡散臭い噂を検証するというこの記事の著者の態度は間違っていないのですが、
結果が信用できない [[qreki]] を検証の道具に採用してしまったのは致命的なミス。
たまたま検証結果に影響がなかったのは不幸中の幸いなだけであって。
---- [374] コメント欄では[[仏暦]]になることが多い日、少ない日を求めている。
----- [375] 
この結果には影響が出ていそう、傾向は大きく違わないでしょうけど。
-
[365] 
[CITE@ja[自作自演]], [[tokage-shippo]], [TIME[2022-07-14T05:31:40.000Z]] <https://zisakuzien.exblog.jp/m2010-06-01/>
--
[364] 
[CITE@ja[[[大安]]とか知りたいよね? : 自作自演]], 
[[晴柳祐志]], 
2010年06月17日,
[TIME[2022-07-14T05:31:13.000Z]] <https://zisakuzien.exblog.jp/12820502/>
---
[366] 
[[AWK]] 版,
[[JavaScript]] 版 (>>88),
[[Visual Basic]] 版,
[[Perl]] 版 (>>123),
[[Perl]] 版 (>>15),
[[PHP]] 版 (>>53),
[[Python]] 版,
[[Java]] 版を紹介。
--- [367] 
[[AWK]] 版から[TIME[西暦2224年][2224]]の問題を、
[[Perl]] 版から[[旧暦2017年問題]]を紹介。
---- [368] 
しかし
「さあ、これらで六曜を把握してステキなプログラミングライフを送りましょう!」
と結んでいる。
わずか7年後に破綻すると理解しながら、
重視していなかったということか。
-
[552] 
[CITE[[CODE[qreki.cpp]]]],
[TIME[2022-07-15T12:14:08.000Z]] <https://web.archive.org/web/20111201003535/http://csaori.googlecode.com/svn-history/r243/trunk/impl_saori/timebkn/qreki.cpp>
--
[558] 
[CITE[伺か]]
用の
[CITE[SAORI]]
システム向けのソフトウェアに組み込まれているもの。
-- 
[553] 
[[AWK]] 版を参照しつつ、
[[Java]] 版から派生。
「DATE : 2008/03/14 14:37」 ([[Java]] 版の日付)。
--
[554] 
[CITE@en[[[Google Code]] Archive - Long-term storage for Google Code Project Hosting.]], [TIME[2022-07-15T12:17:24.000Z]] <https://code.google.com/archive/p/csaori/source/default/commits?page=1>
---
[555] 
「ponapalt 	Feb 21, 2011 	243 	たいむぼかん」
--
[556] 
現在公開されている
[CITE[[[Google Code]] Archive]]
や
[[Internet Archive]]
では確証は得られませんが、
[[URL]]
と >>554 より[TIME[2011-02-21]]に新規追加したものと推測できます。
--
[557] 
[CITE@ja[ぽな (C.Ponapalt)さんはTwitterを使っています: 「@couperin これはひどい。SAORIとかすごくひどい。…例のqrekiのJava版があって適当に単純置換してC++コードにしてお茶を濁したとか言えない。」 / [[Twitter]]]], 午前9:20 · 2011年2月22日 [TZ[+09:00]], [TIME[2022-07-15T10:15:52.000Z]] <https://twitter.com/ponapalt/status/39841824281600000>
-[618] [CITE@ja[[[旧暦]]で繰り返すイベントをカレンダーへ登録 - 學而時<span lang="ko">習</span>之]], 
2013-09-15,
[TIME[2022-12-08T09:09:41.000Z]] <https://bias.hateblo.jp/entry/20130915>
-- [628] [DFN[[CODE[DQRSAMP.AWK]]]], [TIME[2013-09-25]]
-- [629] [[Mac OS X]] 用 [[AWK]] 対応版
-- [630] オリジナル [[AWK]] 版からの派生
- [49] [CITE[多時間 Tips:[[So-netブログ]]]],
[TIME[2019-03-15 11:05:26 +09:00]]) <https://cm-tips.blog.so-net.ne.jp/index/2
-- [247] 
2013-12-15 16:22,
2013-12-20更新
-- [248] [[AWK]] 版を呼び出す [[Python]] スクリプト。
-
[327] 
[CITE[[[十進BASIC]]第2掲示板過去ログ]], [TIME[2022-07-14T03:04:03.000Z]] <https://decimalbasic.ninja-web.net/bbs2/%E5%8D%81%E9%80%B2BASIC%20%E7%AC%AC2%E6%8E%B2%E7%A4%BA%E6%9D%BF2014.html#3481>
--
[328] 
[CITE[[[カレンダー]] | 十進BASIC 第2掲示板 | 3481]], 
[[しばっち]],
投稿日:2014年 9月 2日(火)19時16分5秒,
[TIME[2022-07-14T03:04:37.000Z]] <https://6317.teacup.com/basic/bbs/3481>
---
[329] 
[CITE[Re: [[カレンダー]] | 十進BASIC 第2掲示板 | 3482]], 
[[しばっち]],
投稿日:2014年 9月 2日(火)19時16分41秒,
[TIME[2022-07-14T03:05:03.000Z]] <https://6317.teacup.com/basic/bbs/3482>
--
[330] 
>>11
を[[十進BASIC]]
に移植したものが組み込まれた[[カレンダー]]プログラム。
-
[559] 
[CITE@en[[[GitHub]] - fujikky/qreki_compare_vs_swift]], 
[TIME[2016-01-26]],
[TIME[2022-07-15T12:48:08.000Z]] <https://github.com/fujikky/qreki_compare_vs_swift>
--[560] 
「Foundation の NSCalendar 旧暦(NSCalendarIdentifierChinese)の挙動が怪しいので [ASIS[旧暦計算サンプルスクリプト][リンク]] の各実装との実行結果を比べるスクリプトを作ってみました。」
--- [561] リンク先は [[AWK]] 版。しかしなぜか使われていない。
--[562] 
[[Python]] 版 (>>12),
[[PHP]] 版 (>>16),
[[Ruby]] 版 (>>34)
の結果を比較したらしい。
--- [563] 「Pythonの実装が一番精度が高そうなので採用することに。」
--- [564] 実行結果は書いていないので、何で判断したのか不明。
--[565] [[Swift]] の [CODE[NSCalendarIdentifierChinese]]
の結果と [[Python]] 
の結果を[TIME[西暦2015年][2015]]から[TIME[西暦2020年][2020]]まで比較し、
[TIME[西暦2017年][2017]]の[[閏月]]の違いと[TIME[西暦2019年][2019]]、
[TIME[西暦2020年][2020]]の[[朔]]の違いを検出。
--[569] [[AJNET]] とも比較している。
--[566] 
[CODE[NSCalendarIdentifierChinese]] は[[農暦]]の実装なので、
[[旧暦]]と違う結果になるのは当然。
[[Apple]] の公式ドキュメントにも[[旧暦]]とは書いていない。
--- [567] 
[[Swift]] で[[旧暦]]を得るにはこれという誤情報が流布されているようなので、
それに騙されたか?
--- [568] 
[CODE[NSCalendarIdentifierChinese]] の[[農暦]]が怪しいのはそうだけれど
[SEE[ [[農暦]] ]]、
それはここで指摘されている怪しさとは違います。
-- [570] なぜ [[qreki]] を[[正解データ]]に使ったのか...
--- [571] [[旧暦2017年問題]]には言及なし
--- [572] [[旧暦2033年問題]]には言及なし
-
[FIG(quote)[
[FIGCAPTION[
[57] 
[CITE[C版 [[旧暦]]計算プログラム]],
[[白井豊]],
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]
-- [361] [[AWK]] 版から派生。
-- [58] 2月27日とする本プログラムは誤り。
[TIME[2017-02-27]]を半年も過ぎた[TIME[2017-08-25]]にこのような誤ったプログラムをわざわざ移植するという不思議 (過ぎたからこそ、
間違っていても構わないということかも?)。
- [39] [CITE[[[Scheme]]: ユリウス日を天保壬寅元暦(旧暦)に変換するやつ]],
[[@nakataSyunsuke]],
2018年03月31日に更新,
[TIME[2018-06-16 16:13:32 +09:00]] <https://qiita.com/nakataSyunsuke/items/b49d6105505fec71f07a>
-- 消滅確認 [TIME[2022-07-14T05:21:46.700Z]]
-- [362] [[qreki]] でありながら「天保壬寅元暦」と主張するのは無理があろう。
-
[FIG(quote)[
[FIGCAPTION[
[487] 
[CITE@en[[[GitHub]] - h008/qreki: 新暦から旧暦と六曜を取得するプログラム]], [TIME[2022-07-15T07:44:09.000Z]] <https://github.com/h008/qreki>
]FIGCAPTION]

>
このプログラムは、高野英明氏のQREKI.AWKを勉強をかねてrustに移植したものです。 2020年1月1日から2050年12月31日までQREKI.AWKと同じ結果が得られることをテストしておりますが、正確性を保証するものではありませんのでご注意ください。
>
このプログラムのもとになったqreki.awkとqreki.docをsrc/qrsamp11に同梱しております。 また、同じくpythonに移植されたIto Shunsuke氏のqreki_pyを大変参考にさせていただきました。


]FIG]
-- [488] [TIME[2021-08-02]], [TIME[2021-08-03]]
-- [489] [[Python]] 版 (>>48) を参照しつつ [[AWK]] 版から 
[[Rust]] に移植。
-- [507] 
なんで「勉強」でこの題材を選んでしまったのか・・・
-
[627] [CITE[VBAアクションゲーム?]], [TIME[2021-05-27T03:35:45.000Z]], [TIME[2022-12-08T09:27:51.551Z]] <http://www1.plala.or.jp/chikada/vba/rokuyo/rokuyo.htm>
-- [644] 
[CITE[六曜算出アドイン]]
--- [647] 
[[Microsoft Excel]] ([[VBA]]) 
---
[648] 
[CITE[Ver 1.00]],
2001/ 9/ 9 
---
[649] 
[CITE[Ver 1.10]],
2001/ 9/10 
---- [661] 
[CITE[[[六曜]]算出関数 「ROKUYO」]], [TIME[2022-12-08T11:09:00.000Z]], [TIME[2002-02-09T05:00:52.957Z]] <https://web.archive.org/web/20020209050010fw_/http://www.mars.dti.ne.jp/~ven02573/hatsu/nobuya5.htm>
----- [662] 配布ファイル現存せず
---
[645] 
[CITE[Ver 2.00]],
2003/ 9/21,
[TIME[2022-12-08T10:56:43.200Z]]
<http://www1.plala.or.jp/chikada/vba/rokuyo/rokuyo.lzh>
---- 
[646] 
この時点では解説ウェブサイトの [[VIsual Basic]] ソースコードを利用 ([CITE[qreki]]
とは無関係とみられる)
---
[650] 
[CITE[Ver 2.10]],
2004/12/28 
---- [652] 
「2006年10月のバグを修正」
---- [653] 
[[旧暦]]日付に関係する不具合か[[暦注]]計算のみ関係するものか不明
---- [660] 
[TIME[2022-12-08T11:05:37.00Z]]
<http://www1.plala.or.jp/chikada/vba/rokuyo/rokuyo200412.lzh>
---- [656] 
[CITE[エクセル六曜カレンダー[[旧暦]]月日表算出アドイン]], [TIME[2022-12-08T11:03:35.000Z]], [TIME[2011-03-03T18:01:52.736Z]] <https://web.archive.org/web/20110303180059/http://www1.plala.or.jp/chikada/vba/rokuyo/rokuyo.htm>
----- [657] 
「海上保安庁 算出結果の検証に使用しました。二十四気節のデータが公開されています。」
----- [658] 
「2004年12月  2006年10月の六曜が不正とのご指摘メールをいただき、修正しました。 [BR[]]過年度分にもバグがありそう・・・。」
---
[651] 
[CITE[Ver3.00]],
2020/2/15 
---- 
[654] 
この版から [CITE[qreki]] の [[Visual Basic]] 移植版 (>>11) に切り替え
----
[655] 
[[AWK]] 版と [[JavaScript]] 版 (>>88) を参照
----
[659] 
[[海上保安庁]]ページにリンクして検証に使用したという記述はこの版の前から変わっておらず、
この版で検証したのかは不明。
-
[FIG(quote)[
[FIGCAPTION[
[490] 
[CITE@en[[[GitHub]] - khirayama/qreki]], [TIME[2022-07-15T07:49:51.000Z]] <https://github.com/khirayama/qreki>
]FIGCAPTION]

>Go言語、Go言語のテスト、Go言語のモジュール作成を学習するため、qrekiをGo言語により再実装を行います。
]FIG]
-- [491] なぜその目的でこの題材を選んだ・・・
-- [492] 
[[Python]] 版 (>>116),
他の [[Go]] 実装 (>>493),
[[JavaScript]] 版 (>>54, >>494),
[CITE[[[高精度計算サイト]]]],
当[[ウィキ]]の[[旧暦データファイル]]ページを参照している。
--- [497] 
正しい情報を見ていても、それを選ぶとは限らないのだなあ...
-- [495] 
[[Go]] に移植。移植元は明記されていない。
-- [496] 
[TIME[2022-04-23]] - [TIME[2022-05-05]]
--
[504] 
[CITE@en[qreki/qreki_test.go at main · khirayama/qreki · [[GitHub]]]], [TIME[2022-07-15T08:09:55.000Z]] <https://github.com/khirayama/qreki/blob/main/qreki_test.go>
--- [505] >>502 から派生したテストデータ。
-- [493] 
[CITE@en[[[GitHub]] - shogo82148/go-qreki: 旧暦を計算する]], [TIME[2022-07-15T07:51:22.000Z]] <https://github.com/shogo82148/go-qreki>
--- [498] 
[CITE@en[go-qreki/qreki.go at master · shogo82148/go-qreki · [[GitHub]]]], [TIME[2022-07-15T08:06:52.000Z]] <https://github.com/shogo82148/go-qreki/blob/master/qreki.go>
---- [499] 
[[qreki]] とは別手法の [[Go]] による実装。
---- [500] 
名前の一致は偶然か、それとも参考にしたのか。
--- [502] 
[CITE@en[go-qreki/qreki_test.go at master · shogo82148/go-qreki · [[GitHub]]]], [TIME[2022-07-15T08:08:25.000Z]] <https://github.com/shogo82148/go-qreki/blob/master/qreki_test.go>
---- [503] テストデータ。[TIME[西暦2016年][2016]]を中心に前後・[[閏月]]。
[[旧暦2033年問題]]は閏11月。[[旧暦2017年問題]]はぎりぎり範囲外。
--- [501] 
[TIME[2016-03-26]], [TIME[2016-03-27]]







]REFS]

[304] 
その他、
[[サーバー側]]で実行され[[ソースコード]]が公開されていないものの、
[[qreki]] 由来と明記されている、または挙動が [[qreki]]
と同じものもたくさんあります。

[REFS[


-
[613] 
>>605 [[Web API]] ([[Java]] 版ベース)
-
[50] [CITE[旧暦計算スクリプト]], [TIME[2019-05-14 08:27:47 +09:00]] <http://www.spin.ne.jp/~sibuya-auto/qreki/qreki.html>
--
[250] 
[[AWK]] 版の移植と書いてあります。
サーバー側で実行されるため詳細は不明。
--
[51] 「[[令和]]」が追加されているのでメンテナンスが継続されていることはわかるが、
肝心の計算は [[qreki]] そのもののように見える。
--
[251] 
[CITE[koyomi]], [TIME[2014-06-27T01:17:28.000Z]], [TIME[2022-07-13T09:31:27.785Z]] <http://www.spin.ne.jp/~sibuya-auto/koyomi/koyome.html>
--- [252] 
>>54 の[[カレンダー]]。
こちらは [[JavaScript]] 版を使っている。
--- [253] 「平成34年」になっていて古いまま。
本家 >>54 では[[令和]]に対応している。
- [170] [CITE@ja[[[暦]]API ~ 旧暦、六曜を取得できるAPIを無料で提供しています。 ~]] ([TIME[2016-01-16 14:46:04 +09:00]] 版) <http://koyomi.zing2.org/>
-- [313] 明記されていないが計算結果から推測
-- [314] 「Copyright 2015」
-- [315] [[令和]]に対応している。 [TIME[2022-07-13T14:51:03.300Z]]
- [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]] の不正確さがそのまま反映されていて残念な感じです。
- [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[[[宿曜経]]の二十七宿暦 [[宿曜]]カレンダー]], 
作成日:2006年3月26日,
[TIME[2020-07-06 06:18:00 +09:00]] <https://nakshatra.tokyo/pc/calendar/27/>
-- [301] サーバー側で実行される。
-- [302] 明記されていないが[[西暦2017年問題]]の修正以外は [[qreki]] と同じ。
-- [303] [[元号]]に[[令和]]なし。 [TIME[2022-07-13T14:33:41.00Z]]
- [60] [CITE@ja[旧暦カレンダー(2022年2月)| [[アラクネ]]]], [TIME[2022-02-19T11:51:31.000Z]] <https://www.arachne.jp/onlinecalendar/kyureki/>
--
[61] 
詳しく調べていませんが、
[TIME[西暦2033年][2033]]の[[月名]]より、
[[qreki]]
系の実装と推測されます。
--
[67] 
[TIME[西暦2224年][2224]]について
[[qreki]]
と同じく
(>>29)
閏2月になります。
--
[68] 
[TIME[西暦2017年][2017]]は[TIME[2017-02-26]]が2月1日となります。
オリジナル
[[qreki]]
とは違う挙動のものを使っているようです。
-
[619] [CITE@ja[Coffee Break:[[旧暦]]計算について - Pc-Trace]], 
[[admin]],
2022/10/25,
[TIME[2022-12-08T09:11:56.000Z]] <https://pc-trace.jpn.org/blog/blog.cgi?n=1548&category=20>
--
[FIG(quote)[ [631] 

>ブログ・サイドバーに設定した、高島暦で使わせて頂いたスクリプト
>
旧暦計算スクリプト[BR[]]
作者:高野 英明 (室蘭工業大学) 教授

]FIG]
--- [621] 大学教授の高野氏に比定した根拠は不明。
--- [663] 大学教授の高野氏は物理学者だが天文系ではない。
趣味的に手掛けた可能性はあるが、
それは他の 
[WEAK[([[ウェブ検索]]で見つけられる範囲だけでも多数の)]] 
[[同姓同名]]の高野氏にも言えることで、
同定するには相応の理由付けが必要。
-- [632] [[AWK]] 版を参照
-- [634] [[ブログ]]ページからリンクされた[[Webアプリケーション]]
-- [633] [[Perl]] ソースコードのごく一部が画像で示されているのみ
--- [643] 既存 [[Perl]] 移植版からの派生か独自移植版か不明

]REFS]

* 似た名前の別のソフトウェア

[333] 
[[旧暦]]の「きゅう」に「Q」を宛てたネーミングセンスも
[[qreki]] の普及の一因かもしれません。

[334] 
誰でも思いつきそうなもじり方ですが、同名の別のソフトウェアは案外ありません。
([[qreki]] が有名すぎて同じ名前にしづらかったのかもしれません。)
([[qreki]] のコードは継承せず名前だけ継承したものはいくつかあります。)

[SEE[ >>192, >>242, >>167, >>493, >>527 ]]

-*-*-

[336] 
[TIME[平成21(2009)年][2009]]から
「25年以上前」 [SRC[>>342]]
ないし
「20年以上前」 [SRC[>>335, >>344]]
に[DFN[Q暦]]という
[[PASCAL]]
で書かれた
[[MS-DOS]]
用ソフトウェア
[CITE[[DFN[Q暦]]]]
がありました。
当時「めずらしソフトで話題にもな」ったといいます。
[SRC[>>335, >>344]]

[337] 
逆算すると[[昭和時代]]末期にあたります。
[[AWK]]
版の
[[QREKI]]
初版が[TIME[平成5(1993)年][1993]]ですから、それより5年以上前となります。

[338] 
作者は [[Q]] と名乗っています。 [SRC[>>335, >>342]] 
ソフト名と作者名はどちらが先立ったのでしょうかね。掛かっていたのかもしれません。
同じ作者の他のソフトウェアも名前に「Q」が入っています。

[343] 
[TIME[平成21(2009)年][2009]]に 
[[Q]]
が
[[C#]]
で開発した
[[Windows]] や [[Windows CE]] 向けの[[カレンダー]]ソフトウェア
[CITE[[[NiQ]]]]
に[[六曜]]表示の要望があり
[SRC[>>342]]、
[[旧暦]]、[[六曜]]、[[二十四節気]]の表示に対応しました [SRC[>>339]]。

[345] 
[TIME[2009-03-04]]、
[[旧暦]]表示のみが
[CITE[[[Q暦]](復刻版)]]
([CODE[QReki.exe]])
として公開されました。
[SRC[>>344]]

[346] 
[CITE[[[NiQ]]]]
の[[旧暦]]への変換には
[[.NET Framework]]
を使っているようです
[SRC[>>342]]。
[CITE[[[Q暦]] (復刻版)]]
も同様と思われます。
従って [[AWK]] 版 [[QREKI]] の系譜のソフトウェアとは異なる結果が得られるはずです。

[349] 
残念ながら、
古い
[CITE[Q暦]]
は配布されていません。当時の[[パソコン通信]]で配布されていたのでしょうか。
[CITE[[[Q暦]] (復刻版)]]
も [[Internet Archive]]
に所蔵されていません。
[CITE[NiQ]]
も[[旧暦]]に対応した後の版は
[[Internet Archive]]
に所蔵されていません。


[REFS[
-
[344] 
[CITE[旧暦表示ソフト [[Q暦]](復刻版)]], 
[[Q]],
[TIME[2022-07-14T03:38:56.000Z]], [TIME[2013-03-24T03:11:30.474Z]] <https://web.archive.org/web/20130324031109/http://www.d1.dion.ne.jp/~qchan/QReki.htm>
--
[342] 
[CITE@ja[[[旧暦]]のソフト: Q's LoveLog]], 
[[Q]],
2009年02月25日,
[TIME[2022-07-14T03:34:21.000Z]] <http://halty0727.seesaa.net/article/388511477.html>
--
[347] 
[CITE@ja[[[旧暦]]の六曜について: Q's LoveLog]], 
[[Q]],
2009年02月27日,
[TIME[2022-07-14T03:43:05.000Z]] <http://halty0727.seesaa.net/article/388511479.html>
---
[348] 
「私がまだMS-DOSの時代に作った旧暦ソフトですが,21世紀には六曜なんてものはこの世から消えているだろうと思いながら作りました。」
-- [335] 
[CITE@ja[[[Q暦]](復刻版): Q's LoveLog]], 
[[Q]]
2009年03月04日,
[TIME[2022-07-14T03:28:36.000Z]] <http://halty0727.seesaa.net/article/388511483.html>
-
[339] 
[CITE[多機能日記帳ソフト [[NiQ]]]], 
[[Q]],
[TIME[2022-07-14T03:33:01.000Z]], [TIME[2009-12-06T08:58:46.565Z]] <https://web.archive.org/web/20091206083954/http://www.d1.dion.ne.jp/~qchan/niq.htm>
--
[340] 
「旧暦(六曜・二十四節気)表示」
--
[341] 
「旧暦を表示。六曜、二十四節気なども表示するようにしました。」

]REFS]




-*-*-

[350] 
[CITE@ja[『Q暦カレンダー01401』直島・豊島・小豊島(香川県)の旅行記・ブログ by 52市村康さん【[[フォートラベル]]】]], 
[[52市村康]],
2014/01/01 - 2014/01/17,
[TIME[2022-07-14T03:51:29.000Z]] <https://4travel.jp/travelogue/10851024>

[351] >>350 は[TIME[西暦2014年1月][2014-01]]から[TIME[3月][2014-03]]の[[グレゴリオ暦]]カレンダーに[[旧暦]]日付を併記したもの ([[画像]])。


* メモ


[74] 
誤っているとはいってもこれだけ広まってしまったとなると、
[[現代日本]]の[[暦]]文化の1つの側面として無視できない存在といえるのではないでしょうか。


[75] 
[[日本]]の[[ソフトウェア]]開発史の視点でも [[qreki]]
は興味深い事例ではないでしょうか。
[[パソコン通信]]の文化で生み出された[[ソフトウェア]]で、
この[[令和]]の時代まで未だに現役で使われ続けているものは、
他にほとんどありません。
有名所では [[LHA]] が [[qreki]] を遥かに凌ぐレベルで普及していましたが、
[[平成]]のうちに [[ZIP]] に駆逐されてしまいました。
なぜ [[qreki]] は未だに生き残っているのでしょう?

[76] 
[[MS-DOS]] 向けの[[旧暦]]計算ソフトウェアは他にもいくつかありました。
[[ソースコード]]が公開されていたものも、いくつかあったようです。
なぜ [[qreki]] だけがこれだけ多くの環境に移植され幅広く使われるようになったのでしょう?


[79] 
[[平成後期]]の時点では、[[Google検索]]で[[旧暦]]の計算や変換のプログラム・ライブラリーを探そうとすると、
上位に [[qreki]] のドキュメントや移植版が表示される状態になっていました。
[[プログラミング言語]]の標準ライブラリーで[[旧暦]]を求められないことを知った技術者が、
既存のライブラリーがないかと検索し、
上位に出てくるそれっぽいコードをそのまま信用してしまった、
といったところでしょうか。



- [389] 間違いに気づいた人は何人もいた。
- [390] 気づいた人のほとんどは修正しなかった/できなかった。
- [391] 修正してもその版は普及しなかった。上流の版ほど古いまま更新されなかった。
- [392] 間違っているという情報を無視してソースコードだけコピーされた。
- [393] 間違っていると知っても使い続けた。

[394] 
比較的緩い[[ライセンス]]でソースコードが公開されて、
中央管理されずにあちこちで分散して利用された。
という模範的ともいうべき民主的なソフトウェア開発が完全に裏目に出ている。

[395] 
みんな敬意を払うつもりなのか直接の移植元でもないはずの上流の配布サイトにリンクしているのに、
そこに書いてある注意事項とか全然読んでいない。動くコードがあればそれでいいって?

[396] 
オリジナルのドキュメントに
「オリジナルのスクリプトと本説明書を必ず同
梱して下さい。」
って書いてあるのにそれを真面目に履行してるやつはあんまりない。
ちゃんと同梱して利用者がみんな読んでいればもう少し状況はマシだったのかもしれないが。


[397] 
他のライセンスで配布してる派生ソフトウェアまであるけど、原作者に許諾を得ているか甚だ怪しい。


[610] 
既に移植版があるのを知ってか知らずか、
オリジナルから再移植する人も多い。
みんな律儀にオリジナルを紹介しているので、
どうせならオリジナルから移植するのが一番正しく動作するだろうと思ってなのかな。
(再移植したくなった動機を教えて欲しいが書かれていない。)
オリジナルがちゃんとメンテされてればそれで良かったのだけど、
そうでないのが仇となって既存移植版が修正したり注記したりしてるのを再移植版が無視している。

[611] 
というか古い移植版ほど結果の正しさに注意を払って、対処できなかったとしてもそれをちゃんと書いているのに、
新しいものはそれを怠っているのが多い。作りました!と書くだけで正しいか検査しました!と書いてない。(書いてないのはしてないからだろう。) 
「結果は保証しません」とは書くくせに。保証しなくていいから努力はしてくれよ。

[612] 時間をかけて沢山の人の目と手が加わることが、
蓄積ではなくリセットになってしまっている。辛い現実。




[440] 
本当は[[利用者]]の総数も知りたいけど推計するのも難しい。
しかし派生版を開発する人や紹介する人の数を見ただけでも、
このソフトウェアが惹きつけたエネルギーの大きさははかり知れるというもの。



[316] 
そういえば
[[qreki]]
の
[[C#]] 移植版はみつかりません。
標準ライブラリー
([[.NET Framework]])
が[[旧暦]]に対応しているからなのでしょうね。


[540] 
[[Objective-C]] や [[Swift]] の移植版がないのも示唆的。
[[Apple]] の [[Foundation]] は[[農暦]]に対応していて、
[[旧暦]]には対応していないにも関わらず、
[[Swift]] で[[旧暦]]を表示するには Chinese と指定する、
という情報が出回っている。
(これはこれで別の問題が... [SEE[ [[農暦]] ]])


-*-*-

[614] [CITE[[RUBY[太田本郷城][おおたほんごうじょう]]跡出土の[RUBY[墨書][ぼくしょ]]かわらけ]], 
[[古川]],
[TIME[2015-05-25T00:54:21.000Z]], [TIME[2022-12-08T08:51:54.217Z]] <https://www.city.toyama.toyama.jp/etc/maibun/toyamajyo/sengokukisiro/oota-bokusyo.htm>

>16世紀後半頃使われていた暦は、[RUBY[太陰暦][たいいんれき]]に基づく「長慶宣命暦」です。この暦は、貞観3(861)年から貞享元(1684)年まで使用されました。太陰暦では大の月と小の月があり、[RUBY[閏月][うるうづき]]が入ることもあります。大の月は[RUBY[晦日][みそか]]が30日であるのに対し、小の月の晦日は29日という違いがあり、年によって異なります。
>高野英明氏による旧暦計算を用いると、太田本郷城が記録に表れる[RUBY[元亀][げんき]]3年から天正6年までのうち、8月が大の月なのは、元亀3、天正元、天正2、天正3年の4年であり、上杉方が拠っていた時期にあたります。

[615] 
この[[ウェブページ]]の解説文は、
「高野英明氏による旧暦計算」
を使っていますが、それがいつどのように発表されたものかは明らかにされていません。

[616] 
[[ウェブ検索]]による限り、
「高野英明」
による[[旧暦]]の業績は [CITE[[[qreki]]]]
しか知られていません。

[617] 
もしこの解説文が [CITE[qreki]] に依拠しているとすると大問題です。
[CITE[qreki]] は現行[[旧暦]]の実装であり、過去の[[暦法]]の実装ではありません
(>>26)。
この解説文の[[著者]]は最初の段落で[[暦法]]の違いを認識しているにも関わらず、
[[暦法]]が明らかに異なる計算結果を使って立論していることになるのです。

-[624] 
[CITE[[L[富山市内遺跡発掘調査概要XV[BR[]]―太田本郷城跡・千石町地内埋没樹木群―]]]],
[[富山市教育委員会]],
[TIME[2015]],
[TIME[2022-12-08T09:21:36.500Z]]<https://sitereports.nabunken.go.jp/files/attach/25/25016/18525_1_%E5%AF%8C%E5%B1%B1%E5%B8%82%E5%86%85%E9%81%BA%E8%B7%A1%E7%99%BA%E6%8E%98%E8%AA%BF%E6%9F%BB%E6%A6%82%E8%A6%81XV.pdf>
-- [626] 当該部分筆者: [[古川知明]] [SRC[>>624 #page=2]]

[625] >>624 この調査報告書に同内容の記載がありました。
[SRC[>>624 #page=22]] こちらには出典がはっきり書いてあって、
まさかの
[CITE[[[qreki]]]]
でした。
[SRC[>>624 #page=23]]





