Skip to content

小説をカスタマイズする

whiteleaf edited this page May 19, 2017 · 21 revisions

小説をカスタマイズする

HOME > 使い方 > 小説をカスタマイズする

ファイル構成の説明

小説をダウンロードすると、自動で以下のようにファイルが作成されます。

ファイル構成

  • 挿絵 :挿絵画像が保存されます
  • 本文 :小説テキストが保存されます。差分データもこのフォルダに保存されます
  • [作者名] 小説タイトル.epub
  • [作者名] 小説タイトル.mobi
  • [作者名] 小説タイトル.txt :Narou.rbによって整形された小説テキスト
  • converter.rb :各小説専用の変換スクリプト
  • replace.txt :単純置換用ファイル
  • setting.ini :設定ファイル
  • toc.yaml :目次データ
  • 調査ログ.txt :変換時の調査ログを記録(narou inspect で表示出来る)

小説の保存フォルダは

(narou initしたフォルダ)/小説データ/小説家になろう/(小説のタイトル)

に作成されます。保存フォルダを開くには narou folder コマンドを使うのが簡単でしょう。


設定を反映させるには

このページで説明する各種設定を変更した場合、その設定を反映させるには、再度変換をする必要があります。

narou convert 0

narou convert コマンドを使用して下さい。


表紙を設定する

小説に表紙を設定するには、小説の保存フォルダに cover.jpg もしくは cover.png を置けば自動で 表紙として認識します。

cover.jpgを置いた状態


変換設定を調整する

小説の変換設定は、 setting.ini というファイルに書かれています。この設定は小説ごとに独立しており、 小説一つひとつ違う設定をすることが出来ます。

setting.ini の文字コードは UTF-8 で保存するようにして下さい。

各項目を解説します。(ここに載っている項目以外にもあります)

enable_convert_num_to_kanji

true / false

アラビア数字を漢数字化します。 enable_kanji_num_with_units に影響します。

100 → 一〇〇

false を指定した場合、漢数字化はしませんが、(3桁以上の)半角数字は全角化されます。 これは縦書きで読むことを想定しているからです。

enable_kanji_num_with_units

true / false

漢数字化が有効な場合、千・万などの単位に変換するかを指定します。 true を指定した場合、

1000 → 千
15000 → 一万五千

などと変換されます。

kanji_num_with_units_lower_digit_zero

整数

〇(ゼロ)が最低この数字以上付いてないと enable_kanji_num_with_units で千・万などをつける対象にしません。

デフォルト設定の3の場合、

1000 → 千
100 → 一〇〇
10 → 一〇

と、変換を抑制することが出来ます。

ただし、 enable_kanji_num_with_units の挙動は特殊で、自然な変換を可能にするために、 800万1000 のような表現の場合、一旦内部で 8001000 と変換されます。 kanji_num_with_units_lower_digit_zero で指定した数字は、この 8001000 に対して適用されます。

つまり、 800万1000八百万一千 と変換されますが、 800万10八〇〇万一〇 となります。

enable_alphabet_force_zenkaku

true / false

trueの場合はアルファベットを強制的に全角にします。falseの場合英文は半角、それ以外は全角になります。

false の場合の変換例:

This is a pen. → This is a pen. (そのまま)
APPLE → APPLE

enable_half_indent_bracket

true / false

有効な場合、行頭かぎ括弧に二分アキを挿入します。

Kindle Paperwhite の場合、行頭のかぎ括弧(やカッコ等)が天付きになってしまうため、それを一般的な組版と同じ 二分アキを挿入することで、自然な表現となります。

true false
有効な場合 無効な場合

参考資料

Kindle Paperwhite 以外にも同じ環境で有効な設定です。逆に通常の状態で二分アキがある場合には、インデントが崩れるので false にすることを推奨します。(例えばiOS版Kindleでは設定なしで最初からラインが揃っているらしい)

もし、Kindle を使わず、常にこの設定をオフにしておきたい場合には、後述する narou s force.* 系の設定で上書きするのが楽でしょう。 setting.ini を毎回書き換える必要が無くなります。

narou s force.enable_half_indent_bracket=false

とすることで、setting.ini の設定を無視してコマンドの設定が優先されます。

enable_auto_indent

true / false

自動行頭字下げ機能。有効にすれば、行頭字下げが行われているかを判断し、適切に行頭字下げをするようになります。

基本的に false にする必要がない設定です。

enable_auto_join_in_brackets

true / false

かぎ括弧内の改行を自動で連結するかどうか。

例)
「~~~。
 ***?」  → 「~~~。***?」

ブラウザで横書きで見た場合は自然ですが、端末で縦書きで読む場合、非常に冗長になりやすいため、かぎ括弧内の改行を連結します。 ただし、ある程度の長さ(文字列もしくは改行数で判断)を超えた場合は、連結を中止します。これはかぎ括弧を 特殊な用途に使った場合を考慮するためです(手紙とか)。

連結が中止されたかどうかを確認するには、convert コマンドに --inspect オプションを付けるか、 narou inspect コマンドを使用して下さい。

NOTICE
narou s convert.inspect=true と設定すれば、常時 --inspect 状態になります。

enable_inspect_invalid_openclose_brackets

true / false

かぎ括弧内のとじ開きが正しくされているかどうか調査します。

--inspect オプションもしくは narou inspect コマンドで確認出来ます。

enable_auto_join_line

true / false

行末が読点で終わっている部分を出来るだけ連結します。

 近所の貴族のクソガキ共が集まってくるんだが、
 自分が一番じゃねえと気に食わないのばっかりだ。
          ↓
 近所の貴族のクソガキ共が集まってくるんだが、自分が一番じゃねえと気に食わないのばっかりだ。

(無職転生 第十話より引用)

(次の行の冒頭が開き記号だったら意図的な改行だと判断して連結しません)

この機能は、WEB小説では本当によくある連続的な改行の表現を、縦書きでは非常に横に間延びした感じになるのを 抑制するために作られたものです。オリジナルの雰囲気を維持したいなら false にして下さい。

enable_enchant_midashi

true / false

[#改ページ]直後の行に中見出しを付与します。

(テキストファイルを直接変換する場合のみの設定)

enable_author_comments

true / false

作者コメントを検出するかどうか。

(テキストファイルを直接変換する場合のみの設定)

enable_erase_introduction

true / false

前書きを削除するかどうか。

enable_erase_postscript

true / false

後書きを削除するかどうか。

enable_ruby

true / false

ルビの処理を有効にするかどうか。

もし false で無効にした場合、ルビ記号(《及び》)はルビ記号のまま表示されます。 オーバーロードのようにルビ記号をルビとして使わない小説の場合に必要になります。

enable_illust

true / false

挿絵を有効にするかどうか。

挿絵画像は変換時にサーバからDLされ、ローカルにキャッシュします。2回目以降の変換ではDLはされません。

false なら挿絵タグを削除します。

enable_transform_fraction

true / false

○/×表記を×分の○表記に変換します。日付表記(10/23)と誤爆しやすいので注意が必要です。デフォルトでは無効。

オーバーロードでたまに出てきます。

enable_transform_date

true / false

日付表記(yyyy/mm/dd)を任意の形式( date_format で指定)に変換します。

漢数字化( enable_convert_num_to_kanji )が有効な場合は漢数字になるので注意。

date_format

書式は http://goo.gl/gvJ5u を参考。


変換設定より優先した設定方法

前述した setting.ini は、小説のダウンロード時に自動生成されます。 生成された設定のデフォルト値とは違った設定が好みな場合(例えば、前書き・後書きは必要ない等)、 毎回設定を書き換える必要が出てきます。

その場合は setting コマンドで setting.ini の設定値を上書き出来る方法が存在します。

narou setting force.上書きしたい設定名=設定値

例えば毎回前書きを削除したい場合、

narou s force.enable_erase_introduction=true

とすることで、setting.ini の enable_erase_introduction の設定は無視され、コマンドで設定した値が有効になります。

これはあくまでコマンドの設定が先に読み込まれるだけであって、setting.ini の設定やデフォルト値が 書き換わるわけではありません。


テキストを置換する(replace.txt編)

小説を読んでいると、たまにどうしても文字を置換したくなる時があります。 例えば、「……」を使うべきところが「・・・」になっていたり……。これは縦書きで読むとあまりにも 読みづらいので置換してしまいましょう。

簡単に置換するには replace.txt を使います。これは小説保存フォルダに自動生成されているので、 そのテキストファイルを編集します。

replace.txt の文字コードは UTF-8 で保存するようにして下さい。

・・・	……

と、 置換したい文字列 に続いて タブ置き換える文字列 を続けて一行に書きます。 スペースではなくタブで区切ります。また、行頭に ; を書くとその行はコメントとして扱われます。

青空文庫の注記などに置き換えたりしても良いでしょう。

第一章	[#ゴシック体]第一章[#ゴシック体終わり]

replace.txt による置換が行われるタイミングと範囲

置換タイミングは、全てのテキスト処理が行われた後、整形済みテキスト全文です。つまり見出しやストーリー等も置換対象です。

処理が行われる前に変換したい場合や、正規表現、サブタイトルのみ対象にしたい等複雑な置換に関しては、 次のセクションの converter.rb による置換で行います。


テキストを置換する(converter.rb編)

前提条件として Ruby の知識が必須です。

単純な置換は replace.txt で充分ですが、正規表現を使った複雑な置換等は converter.rb で行います。

converter.rb は小説をダウンロードした時に小説の保存フォルダに自動生成されます。自動生成されたファイル には必要最低限のことしか書かれていませんので、そこからカスタマイズしていきます。

converter.rb の文字コードは UTF-8 で保存するようにして下さい。

ファイル名は converter.rb 固定で、変換処理のフックを定義できます。 基本の変換処理の実行前には before メソッド、変換処理後に after メソッドが呼ばれます。

converterConverterBase を継承したクラスを生成するメソッドです。 converter "タイトル" {}class CONVERTER < ConverterBase; end にほぼ等しいですが、動的生成のため、 ConverterBase のメソッドは呼べるが定数は参照出来ません。ConverterBase の定数にアクセスするときは ConverterBase:: をつけましょう。

デフォルトの動作は ConverterBase#before 及び ConverterBase#aftert に定義されています。 super を呼ばなければ基本動作を抑制出来ます。改行の調整は ConverterBase#before に定義されているので、 before メソッドで super を呼ぶか呼ばないかは小説ごとに調整する必要があるでしょう。

例えば、「異世界迷宮で奴隷ハーレムを」では、 before のデフォルト動作では改行の減らし具合が強すぎるため、 super を呼ばずに自分で改行を調整したほうがよろしいでしょう。

converter "異世界迷宮で奴隷ハーレムを" do
  def before(io, text_type)
    io.string.gsub!("\n\n", "\n")
    io
  end

引数の io は StringIO のオブジェクトであり、ファイル先頭に seek(rewind) してあることが保証されます。 また、返却する IO オブジェクトはファイル先頭に seek しておく必要はありません。

text_type は渡されるテキストがタイトルなのか、前書きなのか等の種別を判断する文字列が渡されます。

渡される文字列と意味:
 story         あらすじ
 chapter       章のタイトル
 subtitle      節のタイトル
 introduction  前書き
 body          本文
 postscript    後書き
 textfile      テキストファイル形式で変換をしようとした場合

@settingsetting.ini で設定した値が読み込めます。

@setting.enable_ruby
@setting.my_setting      # setting.ini にデフォルト以外の設定を付け加えた場合でも読み込める

その他、converter.rb からアクセスして有用な変数

変数名 内容
@subtitles その小説の処理対象の情報(Hash)が入っている配列。hotentry 処理中の場合は新規部分のみしか入っていない
@current_index 現在何話目を処理しているか(0から@subtitles.size-1まで)

実際的なサンプルとして、製作者が無職転生用に使用している converter.rb をサンプルとして提示します。

無職転生用 converter.rb


テンプレートを編集する

小説のデザインを変更したい場合、テンプレートを編集することで独自のデザインを適用することが出来ます。

narou init したフォルダに template フォルダを作り、テンプレートファイルを置くことで認識します。 テンプレートファイルはここからダウンロード出来ます。 必要な奴のみを編集し、設置して下さい。小説のデザイン用のテンプレートは novel.txt.erb です。

ファイルのエンコーディングは UTF-8 です。

ただし注意点として、独自テンプレートを設置した場合、独自の方が優先して読み込まれるため、Narou.rb 本体の テンプレートがバージョンアップした場合に追随出来ないことを考慮して下さい。