KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

ChatGPTを使ってAozoraEpub3をJavaからnode.jsに移植してみた

以前詰まっていたところが、動くようになったので多分AIの進歩なのだろう。コード量が多いのを分割して変換しているためにつなぎ目部分でエラーが出ても特定がしにくかった。

github.com

テストコードがあるので失敗した部分はだめと出るがどこで止まっているのかを見つけづらかった。細かくChatGPTに渡すことで、ここだろうという検討をつけたがChatGPTが違うところを指摘することもある。 99nyorituryo.hatenablog.com

99nyorituryo.hatenablog.com

Java版のテスト結果

《<span class="tcy">29</span>》
※#》
<ruby>|縦線<rt>たてせん</rt></ruby>|
|<ruby>縦線<rt>たてせん</rt></ruby>|
<ruby>ルビ※<rt>るび</rt></ruby>※《》
外字の後のルビ[#(外字.tif)#GAIJI#]《がいじ》
[INFO] 外字画像利用 (1) : 外字.tif
<p>外字の後のルビ<ruby><img class="gaiji" src="test.png" alt=""/><rt>がいじ</rt></ruby></p>

外字の後の|ルビ[#(外字.tif)#GAIJI#]《がいじ》
[INFO] 外字画像利用 (1) : 外字.tif
<p>外字の後の<ruby>ルビ<img class="gaiji" src="test.png" alt=""/><rt>がいじ</rt></ruby></p>

[#(外字.tif)#GAIJI#]《がいじ》
[INFO] 外字画像利用 (1) : 外字.tif
<p><ruby><img class="gaiji" src="test.png" alt=""/><rt>がいじ</rt></ruby></p>

外字の後の|ルビ《るび》[#(外字.tif)#GAIJI#]《るび》
[INFO] 外字画像利用 (1) : 外字.tif
<p>外字の後の<ruby>ルビ<rt>るび</rt><img class="gaiji" src="test.png" alt=""/><rt>るび</rt></ruby></p>

その上方に[#逆三角形と三角形が向き合っている形(fig1317_26.png、横26×縦59)入る#GAIJI#]《デアボロ》
[INFO] 外字画像利用 (1) : fig1317_26.png
<p>その上方に<ruby><img class="gaiji" src="test.png" alt=""/><rt>デアボロ</rt></ruby></p>

蕎麦《そば》の延びたのと、人間の間《ま》が抜けたのは由来たのもしくないもんだよ」と薬味《やくみ》を[#傍点]ツユ[#傍点終わり]の中へ入れて無茶苦茶に掻《か》き廻わす。「君そんなに山葵《わさび》を入れると辛《か》らいぜ」と主人は心配そうに注意した。「蕎麦は[#傍点]ツユ[#傍点終わり]と山葵で食うもんだあね。君は蕎麦が嫌いなんだろう」「僕は饂飩《うどん》が好きだ」「饂飩は馬子《まご》が食うもんだ。蕎麦の味を解しない人ほど気の毒な事はない」と云いながら杉箸《すぎばし》をむざと突き込んで出来るだけ多くの分量を二寸ばかりの高さにしゃくい上げた。「奥さん蕎麦を食うにもいろいろ流儀がありますがね。初心《しょしん》の者に限って、無暗《むやみ》に[#傍点]ツユ[#傍点終わり]を着けて、そうして口の内でくちゃくちゃやっていますね。あれじゃ蕎麦の味はないですよ。何でも、こう、一《ひ》としゃくいに引っ掛けてね」と云いつつ箸を上げると、長い奴が勢揃《せいぞろ》いをして一尺ばかり空中に釣るし上げられる。迷亭先生もう善かろうと思って下を見ると、まだ十二三本の尾が蒸籠の底を離れないで簀垂《すだ》れの上に纏綿《てんめん》している。「こいつは長いな、どうです奥さん、この長さ加減は」とまた奥さんに相の手を要求する。奥さんは「長いものでございますね」とさも感心したらしい返事をする。「この長い奴へ[#傍点]ツユ[#傍点終わり]を三分一《さんぶいち》つけて、一口に飲んでしまうんだね。噛《か》んじゃいけない。噛んじゃ蕎麦の味がなくなる。つるつると咽喉《のど》を滑《すべ》り込むところがねうちだよ」と思い切って箸《はし》を高く上げると蕎麦はようやくの事で地を離れた。左手《ゆんで》に受ける茶碗の中へ、箸を少しずつ落して、尻尾の先からだんだんに浸《ひた》すと、アーキミジスの理論によって、蕎麦の浸《つか》った分量だけ[#傍点]ツユ[#傍点終わり]の嵩《かさ》が増してくる。ところが茶碗の中には元から[#傍点]ツユ[#傍点終わり]が八分目|這入《はい》っているから、迷亭の箸にかかった蕎麦の四半分《しはんぶん》も浸《つか》らない先に茶碗はツユで一杯になってしまった。迷亭の箸は茶碗を去《さ》る五寸の上に至ってぴたりと留まったきりしばらく動かない。動かないのも無理はない。少しでも卸《おろ》せば[#傍点]ツユ[#傍点終わり]が溢《こぼ》れるばかりである。
[#中見出し]※《1[#中見出し終わり]
      [#中見出し]あ※※※《1[#中見出し終わり]
星状、扇形などの標本図は第一一〇及び一一一頁の一般分類の図[#「第一一〇及び一一一頁の一般分類の図」は「第32図」を指す。]の中に示してある。
[WARN] 注記内に注記があります (1) : [#「32」は縦中横]
星状、扇形などの標本図は第一一〇及び一一一頁の一般分類の図[#「第一一〇及び一一一頁の一般分類の図」は「第32図」を指す。]の中に示してある。
[WARN] 注記内に注記があります (1) : [#「32」は縦中横]
[#太字]第[#縦中横]32[#縦中横終わり]図[#太字終わり]
[WARN] ルビが注記の後ろにあります (1) : 《あし》
[WARN] ルビが注記の後ろにあります (1) : 《あし》
[#太字]人間は考える|蘆《あし》[#太字終わり]人間は[#太字]考える|蘆《あし》[#太字終わり]
   [#中見出し]あ1[#中見出し終わり]
テスト[#太字]「夕陽新聞」年極購読者に限る[#太字終わり]
勝安房守[#「勝安房守」に「本ト麟太郎ヿ」の注記]
[#5字下げ][#大見出し]第一回 |入蔵決心の次第《〔チベット入国の決意〕》[#大見出し終わり]
|○○《××※※》
|勝安房守《本ト麟太郎ヿ》あああ|○○《××※※》
青空|文庫《ぶんこ》
青空文庫《あおぞらぶんこ》[#「青空文庫」の左に「aozora bunko」のルビ]
[#5字下げ][#大見出し]第一回 入蔵決心の次第[#小書き]〔チベット入国の決意〕[#小書き終わり][#大見出し終わり]
|※|縦線※|《※|たてせん※|》
葛U+845b
葛󠄀u+845b-e0100
葛󠄀U+845b-U+ue0100
葛󠄀「葛の異体字」、U+845b-e0100
葛󠄀「葛の異体字」、u+845b-u+e0100

JS版

ルビ
《<span class="tcy">29</span>》
※#》
<ruby>|縦線<rt>たてせん</rt></ruby>|
|<ruby>縦線<rt>たてせん</rt></ruby>|
外字
|※|縦線※|《※|たてせん※|》
葛U+845b
葛󠄀u+845b-e0100
葛󠄀U+845b-U+ue0100
葛󠄀「葛の異体字」、U+845b-e0100
葛󠄀「葛の異体字」、u+845b-u+e0100
surftag
蕎麦《そば》の延びたのと、人間の間《ま》が抜けたのは由来たのもしくないもんだよ」と薬味《やくみ》をツユ[#「ツユ」に傍点]の中へ入れて無茶苦茶に掻《か》き廻わす。「君そんなに山葵《わさび》を入れると辛《か》らいぜ」と主人は心配そうに注意した。「蕎麦はツユ[#「ツユ」に傍点]と山葵で食うもんだあね。君は蕎麦が嫌いなんだろう」「僕は饂飩《うどん》が好きだ」「饂飩は馬子《まご》が食うもんだ。蕎麦の味を解しない人ほど気の毒な事はない」と云いながら杉箸《すぎばし》をむざと突き込んで出来るだけ多くの分量を二寸ばかりの高さにしゃくい上げた。「奥さん蕎麦を食うにもいろいろ流儀がありますがね。初心《しょしん》の者に限って、無暗《むやみ》にツユ[#「ツユ」に傍点]を着けて、そうして口の内でくちゃくちゃやっていますね。あれじゃ蕎麦の味はないですよ。何でも、こう、一《ひ》としゃくいに引っ掛けてね」と云いつつ箸を上げると、長い奴が勢揃《せいぞろ》いをして一尺ばかり空中に釣るし上げられる。迷亭先生もう善かろうと思って下を見ると、まだ十二三本の尾が蒸籠の底を離れないで簀垂《すだ》れの上に纏綿《てんめん》している。「こいつは長いな、どうです奥さん、この長さ加減は」とまた奥さんに相の手を要求する。奥さんは「長いものでございますね」とさも感心したらしい返事をする。「この長い奴へツユ[#「ツユ」に傍点]を三分一《さんぶいち》つけて、一口に飲んでしまうんだね。噛《か》んじゃいけない。噛んじゃ蕎麦の味がなくなる。つるつると咽喉《のど》を滑《すべ》り込むところがねうちだよ」と思い切って箸《はし》を高く上げると蕎麦はようやくの事で地を離れた。左手《ゆんで》に受ける茶碗の中へ、箸を少しずつ落して、尻尾の先からだんだんに浸《ひた》すと、アーキミジスの理論によって、蕎麦の浸《つか》った分量だけツユ[#「ツユ」に傍点]の嵩《かさ》が増してくる。ところが茶碗の中には元からツユ[#「ツユ」に傍点]が八分目|這入《はい》っているから、迷亭の箸にかかった蕎麦の四半分《しはんぶん》も浸《つか》らない先に茶碗はツユで一杯になってしまった。迷亭の箸は茶碗を去《さ》る五寸の上に至ってぴたりと留まったきりしばらく動かない。動かないのも無理はない。少しでも卸《おろ》せばツユ[#「ツユ」に傍点]が溢《こぼ》れるばかりである。
AozoraEpub3ConverterTest.js:141
※《1[#「※※※《1」は中見出し]
AozoraEpub3ConverterTest.js:144
      あ※※※《1[#「あ※※※《1」は中見出し]
AozoraEpub3ConverterTest.js:147
Uncaught AssertionError AssertionError [ERR_ASSERTION]: '      あ※※※《1[#「あ※※※《1」は中見出し]' == '      [#中見出し]あ※※※《1[#中見出し終わり]'

runTests()
<ruby>ルビ※<rt>るび</rt></ruby>※《》
AozoraEpub3ConverterTest.js:50
<p>外字の後のルビ<ruby><rt>がいじ</rt></ruby></p>
AozoraEpub3ConverterTest.js:54

AozoraEpub3ConverterTest.js:54
<p>外字の後の<ruby>ルビ<rt>がいじ</rt></ruby></p>
AozoraEpub3ConverterTest.js:57

AozoraEpub3ConverterTest.js:57
<p><ruby><rt>がいじ</rt></ruby></p>
AozoraEpub3ConverterTest.js:60

AozoraEpub3ConverterTest.js:60
<p>外字の後の<ruby><rt>るび</rt></ruby></p>
AozoraEpub3ConverterTest.js:63

AozoraEpub3ConverterTest.js:63
<p>その上方に<ruby><rt>デアボロ</rt></ruby></p>