ひまつぶし雑記帖

縦書き電子書籍のための縦中横

2024/2/11 [10:00:20] (日) 天気

image
青空文庫に限らず、縦書きのEPUB電子書籍を作る時に半角の英数字を縦にするための小ネタが今回のエントリ…なにを今さら、というネタで、縦書き文章で半角英数字の縦中横なんて当然。

それでもネタとして取り上げるのはビミョーに考えることがあって、たぶん、どんなことを縦中横にするのか、どうやってるのかがいろいろあるから。特にWEB経由の文章は半角英数字がてんこ盛り。全部対応するのはやってられないけど。
image
・一文字の英数字は全角の英数字にして縦表示にしたい。
・数字の3桁以上は縦中横にすると無理矢理感が強い。この場合はそのまま転がしておきたい。
↑このへんがこだわりどころ。

そのために使ってるのが以下のもの
置換する時にゴソゴソする必要があったのでメモ…「1 while〜」のあたり、たぶん5分後には忘れる

・perl

sub _tcy{
my $self = shift;
my $str = shift;

return $str if $str =~ m![0-9][0-9][0-9]+!;
$str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!sprintf(qq{<span class="tcy">%s</span>}, $1)!eg;
return $str;
}
sub h2z{
my $self = shift;
my $str = shift;

$str =~ tr/a-zA-Z0-9\!\?/a-zA-Z0-9!?/;
return $str;
}
sub add_tag{
my $self = shift;
my $str = shift;

$str =~ s!^([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$self->h2z($1) . $2!e;
$str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])$!$1 . $self->h2z($2)!e;
1 while $str =~ s!([^a-zA-Z0-9\!\?])([a-zA-Z0-9\!\?])([^a-zA-Z0-9\!\?])!$1 . $self->h2z($2) . $3!eg;
$str =~ s!([a-zA-Z0-9\!\?][a-zA-Z0-9\!\?]+)!$self->_tcy($1)!eg;

return $str;
}


・style sheet

.tcy {
-webkit-text-combine: horizontal;
-epub-text-combine: horizontal;
}

»電子書籍制作代行についてはこちら

青空文庫をEPUB3電子書籍に変換

2024/2/9 [14:49:12] (金) 天気

image
青空文庫の『罪と罰』(ドストエフスキー/米川正夫 訳)をepub3の電子書籍にした。
以前も何回かやってるんだけど、今回、割りと真面目にスクリプトを作ったのでメモしておこう、というエントリ。

青空文庫の資産は膨大だし、なんといっても青空記法が最強だろう。
それに、青空文庫の本を制作する姿勢は見ていて背筋が伸びるほどちゃんとしている。
底本の誤植の指摘、ルビや圏点はもちろん、字下げや地付きといったレイアウトについても底本を忠実に再現している。
「青空文庫」
わたしはmarkdownというかその手のなんちゃら記法には否定的で、そんなものを学習するヒマがあったらhtmlを読み書きできるようにしたほうが早い、と思っている。
それでも青空文庫の青空記法だけは別格で、全角文字で指示を入れる・可読性の優れた書き方、おそらく入力ボランティアさんにとても優しい。全角文字というのがポイントで、これによってプログラム的なタグやなんかとバッティングする心配がない。
これでほぼ表現すべきことを網羅、対応してるんだから改めてびっくりさせられる。

今回作ったのは。
・青空文庫で公開されている本のテキスト版、zipファイルをダウンロード
・ダウンロードしたzipファイルを所定のディレクトリに保存
・書誌情報(タイトルと著者名)を記載したファイルを作成
・カバー画像を作成して所定のフォルダに保存
以上で、あとはスクリプトを叩けば電子書籍の出来上がり、というもの。

そして、今回一番手こずったのが、JIS第3水準、第4水準の漢字の扱い。
青空文庫のテキストファイルは歴史的経緯もあって文字コードがShiftJIS。青空文庫が始まった時期的に当時としては最適だったんだけど、今から始めるならutf8だったろうなあ。

ということでシフトJISで扱えない漢字、第3水準、第4水準の漢字については
[#「木+吶のつくり」、第3水準1-85-54]
などと、青空記法で記載されている。

最初、コード変換なんて計算させればいいんだろう、ぐらいに考えてたら甘かった。
グーグル先生にお願いしてもそんなお手軽な方法は教えてくれない。
どうやらベタでコードと漢字のハッシュを作って対応するしかないっぽい。切り替えて検索方法を変えて探して見つけたサイト
JIS第3水準漢字一覧表【全1259字】(JIS X 0213:2004)
https://www13.plala.or.jp/bigdata/jis_3.html
JIS第4水準漢字一覧表【全2436字】(JIS X 0213:2004)
https://www13.plala.or.jp/bigdata/jis_4.html
(※どちらもhttpsではなくてhttpでアクセスしてください)
こちらに「テキストでコピーできる一覧表」があった。
こちらにも書かれてるように「使いやすい一覧表が無く、コピペできないPDFとかしか無かった」のはほんとその通りで、こちらのページには大感謝、だった。ありがとうございます。

これをスクリプトに仕込んでハッシュに読み込んで、青空文庫のJIS3、JIS4に対応することができた。

これさえクリアしてしまえば、EPUB3ファイルを作成するについては使いまわしの部品の組み合わせだけ。おかげで、青空文庫から電子書籍化が簡単になった。
手作業が必要なのは「タイトル・著者名を記載したテキストファイルを作成する」のと「カバー画像を作成する」の2つだけ。カバー画像はこだわらなければ真っ白の画像でもかまわない。
とはいえ、せっかくだし「本」「書籍」っぽくしたよなあ、という欲も出るんで、カバー画像を作るのに時間が一番かかる。

今どきはAIにイラストを発注することができるので、『罪と罰』のカバー画像もAIにお願いした。
年寄りの趣味として本作りは悪くない趣味じゃないかなぁ。

で、こんなネタで終わらせると申し訳ないので、上記サイトからいただいた漢字テーブルを貼り付けておきます。全部で3817行あります。未定義のところは「〓」を入れてます。
・jis3で始まるのは水準3。jis4で始まるのは水準4
・続く「-」で繋がってるのは面-区-点
・「,」の後ろが該当する漢字

※ネタ元のサイトはヒエログリフなんかもあって、めっちゃ充実しているんでぜひ飛んでみてみてください。

»電子書籍制作代行についてはこちら

おひとり様サーバーの改修

2024/1/16 [14:34:23] (火) 天気

ちょろちょろ改修してるんで、忘れないようにメモ。
5分以上前の自分はあかの他人、だからなぁ。

おひとり様ActivityPubサーバーのソースコードを外部モジュール化した。

ため池とcron側と両方共通して使うルーチンばかりで、ふたつのファイルに対して同じ修正するのが面倒くさくなった(今さらかよ)ここんとこ1ファイルでやっつける安いスクリプトしか書いてなかったんで、久しぶり。
これで改修やつけ足しも楽になった。

Like一覧・Mention一覧をつけ足した。

LikeはWeb拍手がわりの使い方のほか、ブックマーク的な使い方もしてるので一覧ページが欲しかった。イベントや博物館美術館情報の展示情報など、わたし的に貴重な情報が多い。
LikeのJSON保存は個数制限は外して期間制限だけにした。上限14日間。
Likeを削除するのはウチだけの話。意図してLikeを外すワケじゃないのでUndoは飛ばさない。

Likeの情報はお相手の所属するサーバーが持ってるんでこちらでLikeのJSONを削除しても影響はない。こんなところも分散型、ActivityPubの特徴、ということだなあ。

わたし宛のMentionはデータベースに登録してもいいと思ったんだけど、なにかの拍子に(Fediverseに)飛ばしてしまうと危険なので、とりあえずJSONそのまま保存。一覧して確認できればいいかな、ぐらいの感じ。


サークル機能に対応(?)

飛んでくる投稿はCreateというActivityの中のobjectという箱に入ったNoteがその実体。なので、投稿を取り出すにはCreateというActivityのJSONをデコードしてobjectを取り出す。
objectには投稿本文や投稿日時など投稿についてのすべての情報がハッシュ配列になって格納されている。
…てのが、ほとんどなんだけど。
objectがハッシュ配列じゃないActivityが飛んできてエラーとなってロックがかかってビックリ。配列じゃないobjectなんてまったくの想定外だった。

JSONを覗いてみたらobjectが配列じゃなくて、1行の文字列。
HTMLエンコードされたURIとなにやらハッシュ文字列とキーワードっぽいbearという文字。投稿の宛先や投稿者、投稿日時がないんだけど大丈夫か。

エンコードされているURIにブラウザでアクセスしてみたら400番代のエラーページが表示される。ハッシュ文字列がOAuthっぽくもあるけどなんのこっちゃわからない。

手がかりがまったくなくて困って、ため池に投稿したらFedibird管理人ののえるさん(@noellabo@fedibird.com)に拾ってもらって、該当ドキュメントを教えてもらった。
https://docs.joinmastodon.org/spec/bearcaps/
詳細はこちらにも↓
https://fedibird.com/@noellabo/104790008237308249

飛んできたobjectのURIに対して、GETリクエストする時のヘッダにAuthorizationをつければ問題なくURIを開くことができて、内容を読めた。宛先がない投稿を勝手に開いていいのかという問題は残るので、要調査。
とはいえ、これは投稿として開いて読む場合。サークル機能?にこちらからリクエストを投げる時は投稿先などちゃんと調べなきゃダメ。今日はとりあえず読むところまで。

まだまだわからないことだらけだ。
image
初詣の神社はアスクル御神籤でありがたみもないんで、昨日改めて浅草寺。
ここは「凶」が多くてひとに厳しい御神籤なんだけど、今年は一発で「吉」を引けた。去年がいろいろ厄年だったので、これで今年がいい年になればいいなぁ。

»電子書籍制作代行についてはこちら

謹賀新年2024

2024/1/4 [20:26:05] (木) 天気

image
2024年あけましておめでとうございます。
今年も健康で良い年でありますように!

1月1日〜3日までIT蟹工船シフト仕事が入っていたので、今日4日が我が家の謹賀新年。
去年はいろいろ。まるで厄年だった。

午前中に毎年恒例の地元神社に初詣。
二礼二拍手一礼で手を合わせて。
健康でありますように、健康でありますように、健康でありますように、そして良いことがありますように。
最後はもう少し具体的なことをお願いしたんだけど、最初のほうの健康第一は本当に切実。
今年で63歳。すっかりジジイだ。身体を壊したらもろもろ大変だし、家人の方の健康面もやっぱり心配事を抱えてる我が家。
神社でのお願いも真剣になるというもの。

仕事や生活、もろもろ縮小する年になるだろう。
インボイスのせいで在宅仕事を探すのは難しいだろうし。
それでもなんとかなりますように、の神頼みだ。

その後、今年の初映画は『鬼太郎誕生 ゲゲゲの謎』4回目。
いやもう観るたびに違うところで涙腺決壊してる。老人はあちこち緩い。

そんなポンコツですが、
今年もよろしくお願いします。

»電子書籍制作代行についてはこちら

2023年ふりかえりの晦日

2023/12/30 [14:04:06] (土) 天気

2023年。いろいろあった。
今年は6/6にみけさんが27歳で亡くなった。これが一番大きい。

猫は人間より寿命が短いんだから死別はつきもの。わたしは今まで猫と一緒だった時間が長い。猫との死別は今回が初めてじゃない。だけど、みけさんとの死別は今回が初めてのできごと。ずっと一緒だったので、今でも夢に出てくるし、なにかのおりにみけさんがよくいた場所に目がいくし、家人ともみけさんだったら〜、みけさんがいたら〜と話になる。ほんとずっと一緒、いつもいたから。20年以上一緒に生活してた存在だから当たり前、だ。

夢に出てくるみけさんは三毛猫とは限らず、トラ猫やサバ猫、ぶち猫だったり。でも、あ!みけさんだ!とわかる。猫だったら何でもいい、ということではなくて、みけさんの個性が強かったということ。人間側の投影もあるんだろうけど、猫に限らず命のあるものはすべて「個性」のある個別の存在だ。

我が家が「ペットロス」ではなくて「みけさんロス」で沈んでたら、11月に家人が目の手術となった。
いまのところ問題はない。けど、びっくりさせられた、というか心配。眼は自覚症状がなくて、自覚症状イコール失明、もしくは失明寸前だから。
定期的に診てもらって危険回避できれば、ということになる。

わたしのできごとしては、5月にはインボイスで在宅仕事がなくなった。
インボイスについてのヒアリングメールがあったので、対応しないと返信したらさっそく翌月から依頼がこなくなった。
ひらたくいうと切られた。ウチの経済的なことももちろんだけど、還暦過ぎて早朝シフトや深夜シフトで時間身柄拘束されるくそシフト仕事は無理。在宅仕事の方を増やしたいと思ってた矢先だ。なんのためにインボイスなんてのが必要なんだか。
ぶっちゃけ、これは痛い。

なんかいろいろ重なったこともあり、みけさんがいなくなったことで自分の環境を変えるタイミングみたいなものかと、ツイッターもフェイスブックもやめた。ここんとこSNSがしんどい。だいたいInstagramなんてみけさん自慢の写真をUPするためだけのものだし。

で、みけさん後の7月から、Fediverseというか、マストドンとかMisskeyに繋がるActivityPubを喋るサーバーを自作して、緩いネット環境にした。このおかげでネットは平穏な景色だ。

SNS疲れという、映える写真が眩しいとか、社会情勢についての強い言葉が辛いとか、他人のキラキラした日常が妬ましいとか、そういうのじゃないんだよなあ。
ただただ、そこにいる他者の存在がしんどくなっただけ。
てことで、巨大SNSはやめて、ネットはひまつぶし雑記帖とひとりごと掲示板、おひとり様サーバーの3本立ての引きこもり生活…まあ、なにか起こってたらアクセスログにも現れる、把握できるんでいいか、と。
ネットで引きこもりとはいえ、頭の中のなにかを書き出す行為は必要だしね。

来年は63歳だ。体力もいろんな環境もシュリンク、縮小して身の回り5メートル、前後5分ぐらいの世界でやっていくだけだな。

とはいえ。2023年に映画館で観た映画はFor meばかりだった。
ダンジョンズ&ドラゴンズ/アウトローたちの誇り
スパイダーマン アクロス・ザ・スパイダーバース
ヴァチカンのエクソシスト
ミッション インポッシブル デッドレコニング PART ONE
SAND LAND
オオカミの家
ジョン・ウィック コンセクエンス
ザ・クリエイター
復讐の記憶
鬼太郎誕生 ゲゲゲの謎
SPYxFAMILY

『復讐の記憶』『鬼太郎誕生 ゲゲゲの謎』がもうやばい傑作だった。
『復讐の記憶』は上映館も上映期間も少なくて気づいた時は手遅れで1回しか観られなかった。『鬼太郎誕生 ゲゲゲの謎』は3回観ることができて、そのたびにいちいち違うところに泣ける話。だった。


わたしの2023年は厄払いでもしたほうがいいのかもしれない。という1年だった。
何かのご縁でたまたまここを見ることになったみなさん、わたしのことを知っているかたたち。みなさんにとって来年2024年が良い年でありますように!

image 
上目線でひとに命令するみけさんの写真。目が見えて耳も聞こえてた頃を待ち受けにした。

»電子書籍制作代行についてはこちら

おひとり様ActivityPubサーバーにBlock実装

2023/12/27 [09:44:09] (水) 天気

おひとり様APサーバーにBlockを実装した。
ActivityでBlockが飛んできてもめっちゃレアケースなのでスルーしてたんだけど念のため。

というか、アドベントカレンダーに参加して投入したエントリ 「Fediverseの辺境で秘密基地」「SNSのソーシャルディスタンス」 がどこかでブーストされたらしくて、珍しくぷちバズった。
Followリクエストも飛んできてフォロワーさんも増えた。のと、珍しくBlockリクエストも飛んできた。記憶に間違いがなければ、これまで半年ほどやっててBlockリクエストは3度目。

届けたいところじゃないところに届いたんだなぁ…じゃなくて、ちゃんと対応を考えないといけない。ツイッターのブロックと同じ扱いで、ブロックされた該当アカウントの投稿がブーストやなんかで飛んできてもタイムラインに流さない・間違ってフォローリクエストを送ったらまずい。
てことで、ブロックされてるリストを作成して、該当アカウントを登録することにした。

おひとり様サーバーでは投稿はJSONファイルのまま、Signature検証がOKだったら、所定のフォルダに移動してるんで、その前にブロックリストを確認してそこで弾くようにした。Followリクエストも同様。
ActivityPubというプロトコル、とかいうとなんか難しそうだけど、約束事の塊とその約束事を守ることで成立している。極端な話というか乱暴な話、約束事を守る/守らないはサーバー管理者次第。
だからこそ仕様上のMUSTやSHOULDはちゃんと対応する必要がある。

image 
久しぶりに上手く巻けた、かな。
弁当用で、出汁少なめなので失敗は少ない。ウチで食べる用だと出汁を150ccぐらい入れるんでゆるゆるで難易度があがるんだよなあ。

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/2/21 06:50

スパム騒ぎも収束したっぽいのでメンション受付のフォロー限定を解除しよう。
今回の騒ぎのおかげで、1つの投稿の中に複数のメンションがあったらスパムとして処理する、てのを実装したしな

2024/2/20 13:55

どこで漏れてるよなあ、絶対。
とりあえずdiffで差分を取るところから始めるしかなくて。でもボリュームがあるので、winmergeを使って目で追う集中力なんてもはや1mmもない。コマンドラインでdiffをを使ってその結果だけを表示させるスクリプト、というのが落としどころか。ディレ...

2024/2/20 13:42

今回、けっこうボリュームのあるものなので目で探してひとつずつ確認修正作業、なんて「絶対」(世の中には絶対はないんだけどこれは絶対)にミスが入る。
こんなことになると、結局検証用のスクリプトを書いて機械的に洗ってみることになる=余分なスクリプトを書かなきゃいけない…orz

検索
<<2024/2>>
    123
45678910
11121314151617
18192021222324
2526272829

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

[497 Page] »
1 2 3 4 5 6 7 8 9 10

TOTAL:2981

2024 (4)
1 (2)
2 (2)
2023 (53)
1 (1)
2 (5)
3 (1)
4 (1)
5 (3)
6 (9)
7 (9)
8 (6)
9 (5)
10 (3)
11 (2)
12 (8)
2022 (16)
1 (1)
3 (2)
6 (2)
7 (1)
8 (4)
9 (2)
10 (1)
11 (2)
12 (1)
2021 (12)
1 (3)
2 (1)
6 (1)
8 (2)
9 (1)
10 (1)
11 (2)
12 (1)
2020 (18)
1 (2)
2 (6)
4 (1)
6 (1)
7 (2)
8 (2)
12 (4)
2019 (17)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
10 (1)
12 (2)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)