第二章画像とルビを制する者、小説を制す!

第1話……ノベルアップ+さんからアメブロさんへの転載

正確には覚えていないが、大体一年くらい前かな?ノベルアップ+さんに投稿している「海と陸の彼方へ」という小説を一部アメブロへ転載することを思いついた。


Xエックス上で知った人のアメブロを読んでいるとき、画像がいくらでも挿入できるではないかと思ったのだ。無料のような感じだった。元ネタがあるのだから簡単に転載出来ると、軽いつもりでやり始めたが、思ったよりも大変だった。


画像の挿入は覚悟していたのだが、別のことでつまずいた。ルビの振り方が、ノベルアップ+さんとアメブロでは異なるのだ。


ノベルアップ+さんでは、青空文庫形式もサポートしており、例えば、


https://kakuyomu.jp/users/happy-isl/news/16818622173406862943]


と打てば良い。


ノベルアップ+さんやカクヨムさんでは


https://kakuyomu.jp/users/happy-isl/news/16818622173406862943


が使えるが、アメブロではHTML形式の `<ruby>漢字<rt>ルビ</rt></ruby>` が必要になる。


結局、1話転載するのに、1時間も費やしてしまうことになった。


半年間、毎日続けたが、とうとう挫折した。


今回の記事では、青空文庫形式で書かれた原稿を、アメブロ用に変換して投稿する方法を紹介する。


> 💡 対象読者:

> ノベルアップ+やカクヨムで青空文庫形式に慣れている投稿者。

> アメブロでルビ付き小説を掲載したいが、HTML形式の記述が分からず苦戦している人。


■問題点:アメブロではルビの記法が違う


多くの小説投稿サイト(ノベルアップ+・カクヨム・エブリスタ等)では、青空文庫形式によるルビが使われている。


https://kakuyomu.jp/users/happy-isl/news/16818622173406862943


一方、アメブロではこのような簡易ルビ記法は使えず、HTMLタグで書く必要がある。


例:


HTML編集画面上で


<ruby>柴風<rt>チャイ・フェン</rt></ruby>


と書く。


この違いが、アメブロへの転載作業で最も面倒なポイントとなる。


■解決策:正規表現で一括変換する


アメブロには「HTML編集モード」があり、そこにHTMLタグ形式のルビを直接書き込むことができる。


そこで、原稿を一括で変換するための正規表現+置換パターンを紹介する。


🔧 方法

手順①……正規表現の使えるエディターで元原稿を書く。青空文庫形式のルビを振るのは当然のこととします。

手順②……元原稿をアメブロの通常編集画面に貼り付ける。

手順③……アメブロのHTML編集画面に切り替える。コピペして、エディターに貼り付ける。

手順④……エディターに貼られたHTML文書を正規表現により、一括置換する。


一括置換の方法は、以下の通り。


https://kakuyomu.jp/users/happy-isl/news/16818622173407090474


置換表現


<ruby>$1<rt>$2</rt></ruby>


手順⑤……一括置換されたHTML文書をアメブロのHTML編集画面に貼り付け、通常画面に戻す。あら、見事。ふりがながちゃんと付いています。


■手順まとめ(簡略版)


1. ノベルアップ+原稿をコピーする

2. Visual Studio Codeやwzエディタなどで上記の正規表現を使って変換

3. アメブロの「HTML編集モード」で貼り付ける


■最後に


アメブロは画像の自由度やカスタマイズ性が高く、ルビのHTML対応さえ乗り越えれば、小説投稿にも十分活用できる。


今後も、「複数サイト間のルビ変換と投稿ノウハウ」について実践ベースで紹介していく予定だ。


★詳細な説明

1. 正規表現パターン


https://kakuyomu.jp/users/happy-isl/news/16818622173407090474


内容説明「順を追って」


`|`: 直前の縦棒記号「`|`」を検出。


`([^\x00-\x7F >]+?)`: 漢字1文字以上をキャプチャ(これがルビを振られる漢字部分)。


少し、大雑把すぎるので、詳しく解説。

******

✅ ([^\x00-\x7F >]+?) を分解してみましょう

[...] → 文字クラス

「この中に含まれるどれか1文字にマッチする」ことを意味します。


^(キャレット) → 否定

文字クラスの最初に置かれると、「これ以外の文字にマッチする」という意味になります。


\x00-\x7F → ASCIIコード範囲


\x00~\x7F は、ASCII(英数字・半角記号)を表します。


つまり「ASCII文字以外」を意味します(例:日本語・漢字・ひらがな・カタカナなど)。


> → これも除外対象にしている


この文字クラス [^\x00-\x7F >] の中では、


「ASCII文字以外」であり、


「かつ '>' でもない文字」

にマッチする、という意味になります。


✅ まとめると

[^\x00-\x7F >] は

→ ASCII以外かつ「>」でもない文字にマッチする。


つまりこの部分は、


「日本語などの全角文字列(ただし '>' を含まない)」


を1文字ずつ対象にしているということです。


✅ なぜわざわざ「>」を除外しているのか?

それは、Pixivルビ記法などにおいて、


[[rb:柴栄 > チャイ・ロン]]


の中の


柴栄(元の文字列)と


チャイ・ロン(ルビ)


を分けるために、

「> 記号は絶対に"名前"の中には含まない」と前提を置いているからです。


だから '>' を除外しておくことで、名前だけを正しく取り出せるようにしているのです。


✅ 結論

> は、「ここで区切りが来る」ことを見越して、日本語の文字列からあらかじめ除外している。

つまり、「名前の中に '>' はありえない」と想定している、という意味です。

******


`《`: 全角の開き山括弧を検出。


`([^》]*)`: 閉じ山括弧「`》`」以外の文字を0回以上キャプチャ(これがルビ部分)。


`》`: 全角の閉じ山括弧を検出。


2. 置換パターン


`<ruby>$1<rt>$2</rt></ruby>`


キャプチャした漢字部分を `$1` に、ルビ部分を `$2` に対応させて、アメブロのルビ形式に整形します。


アメブロに貼り付ければ、出来上がりです。以下は、目を通していただくと理解が深まるレジメです。


******

https://kakuyomu.jp/users/happy-isl/news/16818622172083801635

前提知識①

https://kakuyomu.jp/users/happy-isl/news/16818622172098706658

前提知識②

https://kakuyomu.jp/users/happy-isl/news/16818622172106506628

前提知識③

https://kakuyomu.jp/users/happy-isl/news/16818622172168022667

前提知識④

******

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る