How to make the e-books:delete of noise in e-novels


[戻る]





■ 電子書籍の作り方 ネット小説内のノイズ除去







 ● 総目次


          INDEX




■ ネット小説内のノイズ除去


 記号の間違い

koboにせよKindleにせよ、電書リーダは電書を読むためのデバイスである。
では、それで何を読むのか。小説かコミックか。市販のものかコミケなどの同人誌か。
あるいは、ビジネスマンなら、毎日の業務日報などをePUB3化して縦書き表示で読む、などといった使い方もあるだろう。Evernoteで充分だと言うひともいるだろうが、目次が簡単に作れる=一覧性があるので、そういう使い方もできるのだ。オフラインで落ち着いて読めば、また新たな発見もあるだろう。
ブログを書いている人なら、別途、筆者が記した記事(それは主に夢の記述の一括アップロードに関するHTML文書だが)を参照して、MT形式でエキスポートしたブログのエントリを、日記代わりに電書化し、リーダで読むといった方法も考えられる。要するにテキストであれば、なんでもePUB3化できるわけである。

「今」を生きる我々は、細切れの時間が多い。移動時間。待合の時間。
そうしたスキマ時間に漫然とスマホを眺めるのもいいだろうが、読むものがあれば、それに越したことはあるまい。
文庫本はもとより小B6の本も出し入れが面倒だと云う人でもkoboやKindleなら、たやすくバッグから取り出せるし、細切れ時間の合間に読み、いつでも中断できる。こうしたせわしない生活環境では、読書の時間を確保するのは難しいが、電書リーダは手軽にそれを補ってくれる恰好のデバイスなのだ。スマホの画面は小さすぎて読書に最適とは云えない。電書リーダは、ちょうどよい大きさと、起動はスリープにしておけば待たせないデバイスで、こうしたスキマ時間にマッチしていると云えるだろう。

とりあえず、ここでは、何をどう読むか、ということに際して、市販の電書以外のモノ、それも代表的なコンテンツとして、「小説テキスト」に特化して、そうした編集や印刷所の目をくぐっていないストレイドッグなテキストについて、それをどうやったら読みやすく読めるか、ということを論じてみたい。

たとえば、先に紹介した「小説を読もう」「小説家になろう」サイトには、膨大な量のテキストがある。2014年11月現在で、そこには(多分、両者合わせて)281625タイトルの作品がアーカイヴされている由。別に男性向け18禁の「ノクターンノベルズ」サイトには9286タイトル、女性向け18禁の「ムーンライトノベルズ」サイトには、14178タイトルの由で、凄い量ですね、としか云いようがない。
だが、一部を除いては、ほとんど素人の作品だ。おのずと文章にふつつかな箇所も散見される。まぁ、それも含めて「持ち味」だ、と割り切って読めば、それなりに無料のテキストが読めるのだから、文句は云うまい。罰が当たるというものだ。

ただ、電書リーダで読むには、不都合な点がいくつか有ったりもする。
著作権法(特にその第二十条「著作者人格権」の中の「同一性保持権」< )に抵触しない程度に、それらを、最低限の補整を行って、ePUB3化ないしmobi化して、電書リーダで読みやすくする、その前処理の仕方を記してみたい。

注) 筆者は法律には詳しくないので、よく判らないのだが――、
同法第二十条第1項には、「著作者は、その著作物及びその題号の同一性を保持する権利を有し、その意に反してこれらの変更、切除その他の改変を受けないものとする」とある。
だが、第2項の4号には、その例外規定として、「前三号に掲げるもののほか、著作物の性質並びにその利用の目的及び態様に照らしやむを得ないと認められる改変」とある。
これが、「通常、私的な改変行為は著作者の意に反することのない行為であるから、同一性保持権を侵害することはない」とする見解になり得るかどうか。筆者には、確言するには、ちょっと心もとないのである。


一例として、「小説家になろう」サイトから、任意の作品を落としてみる。
短編なら、1ページですむが、連載長編だと、モノによっては100回とか300回を超えるような膨大に長い巨編もある。当然、回数の数だけ、ページを繰って、内容をコピペして落とす必要がある。

これらの作品の多くは、たぶんにケータイ(スマホ)で読むことに特化しており、だとすると、まずデフォルトでは、縦書きに対応はしていない(縦書き対応のサイトもあることはある)。ケータイ小説が流行した背景には、デバイスとしてのケータイの普及が大きかったと思うが、スマホになったからといって、大して文化的には変化はないだろう。そして、スマホやケータイでの「読みやすさ」と電書リーダでのそれは自ずから違う。

これは、ネット小説に限った話ではなく、素人の物書き一般について云えることだが、プロの小説家の作品と決定的に違う「間違い」が、結構多い。筆者は、かつて新人賞の選考委員を数年務めて、それを思い知らされた。

たとえば、下記(赤字箇所)のような――、

「彼女は今ごろ、どうしているだろう……

といった文章があったとして、問題は、余韻を表す末尾の「……」だ。
全角1文字分に3つの点が並ぶことから、通常「3点リーダー」と呼ばれる記号「…」がある。ここではそれを2つ重ねている。
しかし、ネット小説で、これを使うユーザは意外と少ない。本来、文字列の間を示す「中黒」と呼ばれる「・」を3つか4つ続けて「・・・・」として、3点リーダーの代用とするユーザが、少なからず、いるのだ。ケータイ画面では見やすいかも知れないが、電書としては非常に気に障る。
さらには、プロでも間違うことがある例として――、

「彼はそう言って去っていったのだ――

てな箇所で使われる「――(ダーシ)」だが、これは、意外と間違いと間違いの種類が多い記号である。「ダーシ」とは「dash」の古い読み方らしいが、印刷所の版組の世界では、今でもそう呼ばれている。「ストライキ」とか「ブレーキ」の類いだと思って、そう呼ぶしかない。

このダーシは、それぞれ書き手によって、勝手にいろんな間違いを犯している好例である。
そして、それはそのまま縦書きの版組にした場合、とんでもなく見っともないことになることがあるのだ。
書いている間のPC画面上、または横書き表示で見ている分には、問題はないが(というより、気づかないが)、縦書きでは、この記号は2つ連ねると、間の空白がないようにつながって表示されるよう、設計されている。長音の「-」はそうならないし、マイナス記号なら横倒しになるが、ダーシはそうならない。だから使い分けする必要があるのである(たまに、「-(半角ハイフン)」を使う間違いもあるが、これは目で見てすぐ判るので、まあ滅多にない)。

この記号(ダーシ)の間違いが多いのは、これが、ふつうのキーボードで打てないことが原因の一つだと思われるが、キーボードからこれに近いものとしては、まず「ー(長音)」がある。これは、109キーボードで上段の「ほ」のキー押下×2で出せる。下段の「カタカナ/ひらがな/ローマ字」キーを押下して、かな変換にして「ほ」が出るキーは、ローマ字変換の場合は、この「ー」が表示される。
だが、これは先述した「――」とは異なる文字(記号)である。
他には、ふつう、テンキーの右端にある「-(マイナス記号)」なども、よく間違えられる。上の「ー」なら、まだ縦書きにした場合でも、縦書き表示されるが、テンキーの「-」はマイナス記号だから、印刷されたら横に寝転んでしまう。

もし、プロの作家さんで、編集から、こうしたことで注意を受けない人がいても、それは編集が不親切だからではない。とっくにアキラメているのだ、彼らは。
別項で筆者が熟読を勧めた西谷能英著『出版のためのテキスト実践技法』などにも詳しいが、彼らは、作家個別ないし汎用性のあるフィルターを作って、あらかじめ作家が間違うものだ、という認識、ないし前提のもとに、自分たちでテキストを勝手に改変し、印刷所に入稿するのである。

(だから、原テキストが自分の手もとにあるから、いつでも自分一人で電子書籍化できる、とか考えている作家さんがいたとしたら、それは考えが甘い。作家の手もとにあるテキストは、かなり手を加えないと「売り物になる」電子書籍にはならない可能性が高いのだ。また、筆者がネット上の小説を少し補整することが、著作権法に抵触しないのでは、と考えるのも、この事例があるからだ。プロのテキストでさえ、作家に断りなく、編集部や印刷所で勝手に改変されてしまうのだから、厳密に云えば、その時点で「同一性保持権」は侵害されているだろう。だからといって、作家さんで、編集や印刷所の人が自分の作品を読みやすく売りやすくしてくれる、それらの粒々辛苦の工夫を言挙げして文句を言う人は、まずいないと思われる(笑))

現に、筆者の友人の作家さんで20年以上のキャリアをもつ人がいたが、その人も、筆者があるSNSでこの問題を取り上げるまで、自分が犯していた、この「ダーシ問題」の間違いに気づいていなかった。プロでさえ、そうだから、アマチュアが間違うのは当然だろう。
筆者は、99年頃だったか、旧ニフティのCUGで、ある電書プロジェクトに参加中、ジャストシステムの人に、これを指摘されて以来、ATOKに単語登録して、「――」は「ぼう」、「……」は「てて」で出せるようにしている。
ま、読みは何でもいいのだが、こうしておけば、少なくとも、執筆に際しての間違いはなくなる。

で、こうした間違いを正して、ePUB3化した場合、そして電書リーダで読む場合、最適化するために若干の補整を元テキストに施すことは、必ずしも、著作権法に抵触するものではないと思うのだ。厳密にいえば、元テキストは作者に権利があって、それを侵害する行為は、よろしくないのだが、私的利用で、電書リーダで読みやすくするだけだから、それくらい大目にみてほしい(笑)。でないと、「-」が寝転んでいたり、中黒「・」が3点リーダの代わりになっていたり、あまり精神衛生的によくない読書環境となってしまう。
気にならない人は気にならないかもであるが、筆者は気になる。過去に、新人賞の選考をやった時は、大体、1ヶ月か2ヶ月、本数にして5本から10本の長編を読んだが、その後しばらくは、自分の小説の文章がオカシクなったくらいである。アマチュアの文章の破壊力をなめてはいかん(笑)。それは言語中枢の書記の分野を激しく冒す。だからこそ、ほんの少し補整するわけである。
書いた人には申し訳ないが、それくらい許されていいだろう。もとより、その人が本当にプロになりたいのであれば、そういう過ちは事前に直しているはずだし、デビューしたら、自ずと、そういう世界の約束事を理解するはずだからだ。

そればかりではなく、ネット上のテキストを落としてきて、読むためには、必ずノイズが混入するので、それを除去することも前処理として必要となる。これは定型作業だから、わりと簡単にできるが、最低限、エディタの置換機能を使わないと面倒だ。できればSED の方がよいので、それにも言及したいが、こちらは、Windows内のコマンドプロンプト(いわゆるDOS窓)でのコマンド作業となるため、いわば上級編となるから、最後に言及したい。まずは、エディタでの実例を挙げることにしたい。

以上の2つの観点から、ネット上のテキストを電書リーダで読むための前処理について、以下、略記する。

このページのトップに戻る

 実例

では、事例として、その「小説家になろう」サイトから任意の作品を少し引用してみたい。
(「小説を読もう」ではなく、「小説家になろう」の方が、やや、そうしたミスが少ない)

任意に選んだら、たまたま、これはプロデビューが決まっている作品だった。慶賀にたえない。今後とも頑張ってほしい。
双葉社のモンスター文庫で、2014年10月30日発売の由。

タイトルは「勇者パーティーにかわいい子がいたので、告白してみた。」第1巻。作者は「水星(スイセイ)」氏とのこと。
双葉社のサイト(下記URL)に表紙入りで書誌が載っている。

http://www.futabasha.co.jp/booksdb/book/bookview/978-4-575-75012-6.html

サイトでの紹介によると――、

「異世界に転生した瀬川陽樹。しかし、転生したのは勇者でも魔王でもなく、“魔王の部下”という中途半端な役回りだった。そんなある日、勇者パーティーが魔王を打倒すべく攻めて来た。一行を迎え撃つ陽樹、しかし敵である僧侶のセシリアに一目惚れしてしまい――。「小説家になろう」で大人気の異世界ラブコメがついに書籍化。書き下ろし番外編の「海へ行ってみた」では、とある依頼により四泊五日で海へ行くことになった陽樹やセシリア、勇者パーティーの姿が描かれる」

――といった典型的なローファンタジー物語である。
現時点では、まだ、「小説家になろう」サイトに残っているので、これを落としてみた。
いずれ、プロになってしまえは、このサイトは消失すると思われるので、事例としてはいいかも。
ちなみに、当該作品は、87回の連載作品で、かなり長いが、このサイトでは短い方である。補正前のデータで約1MB強、補正後で約940KBになった。概算すると原稿用紙換算で1000枚を超える長さだ。
ついでながら、「小説を読もう」でも「小説家になろう」でも、ローファンタジー作品がかなりのパーセンテージを占める。この比率はおそらく、ラノベなどの現状を反映しているものと思われる。

ちなみに、「ローファンタジー」とは、全くの異世界を描く「ハイファンタジー」の対語で、現実の我々が生き、生活を送る「この世界」と異世界が通じている種類のファンタジーで、古くはバロウズの「火星」シリーズから最近では小野不由美氏の「十二国記」シリーズまで枚挙にいとまがない。ル=グィンの「ゲド戦記」のような、現実世界から完全に乖離したハイファンタジーと比較すると、ローファンタジーは、主人公が現代人の高校生だったりする分、読者が取っつきやすい、という利点があるし、書き手にも最初っから全くの異世界を描くと、描写もその仕方も大変なので、「こちらの世界」から転位した主人公の目を通して、その世界を描くのは比較的たやすい、といったメリットがある(むろん、それだけがローファンタジーがそうである理由ではないが、ラノベ等では見逃しえない特徴でもある)。
これは純粋に文学的分類法の命名の結果であり、ローファンタジーがハイファンタジーより劣っているとか、そういう意味合いは一切ない。ロー/ハイという語感で勘違いしないよう、念のため記しておく。

それはともかく、87回の連載ということは、これを落とすためには、87ページ披見し、87回、コピペしなければならない、ということだ。
探せば、巡回して特定の連番のページ内容を取得するソフトくらい、フリーウェアであるかも知れないが、テキストだけ抽出は少ないだろうし、だとするとHTML文書でダウンロードされたりすると、今度はHTMLタグの除去など、さらに余計なムダな手間がかかりそうだし、この程度の長さであれば、手作業でも大したことはない()。

さて――、
他の人がどうやってネット上の文字列をコピペしているか知らないが、筆者は、一番、シンプルな手段として「ショートカットキー」を使って、やっている。

Windows でのショートカットキーは、全範囲指定が「CTRL + A」だ。Macだと、CTRL キーの代わりにコマンドキーが使われる。同様に、コピーは「CTRL + C」である。それを別なエディタ画面などに貼り付けるペーストは「CTRL + V」となる。つまり3つのキー(複合するから合計は6つだが)の3つの動作だけで、1ページ分のウェブサイトのコピー&ペーストが出来るわけだ。
具体的には、ブラウザの画面で、CTRL +A で全範囲指定し、ついでCTRL + C でコピーする。そして、エディタ画面を同時に立ち上げておき、そこで、CTRL + Vでペーストするのである。画面には、「次の話 >>」といったリンクがあるので、それをクリックすれば、次ページに移れる。そこでまた同様の操作を連続して繰り返すのだ。



注) 後で知ったのだが、「小説を読もう」以下の4サイトでは、「テキストダウンロード」という機能があった。
これにより、各話ずつテキストファイルでダウンロード出来るようになっている。
画面下部の「TXTダウンロード」をクリックすると、下図のようなダイアログボックスが開く。

download

懇切丁寧な造りで、半角文字は「そのまま」「数字のみ/アルファベットのみ全角に」[数字とアルファベットを全角に」、
文字コードは「UTF-8」「UTF-16(Unicode)」「Shift-JIS」「EUC-JP」「JIS」から選べる。
また、改行マークも「CR+LF」「CR」「LF」から選択できる(Mac/iPhoneユーザ向け対策だろう)。
全文一括ダウンロードはさすがにないから、各話ずつ落とすしかないが、これでダウンロードすれば、以下の作業は不要となる(笑)。
とはいえ、そうした親切なサイトばかりとは限らないから、以下の記述も残しておく(^^;)。

2014.11.15


だが、当然のことながら、こうした方法だと、余計な不要の文字列まで取得されてしまう。
「小説を読もう」サイトからだと、まず、文末に――、

次の話 >>目次
+注意+
特に記載なき場合、掲載されている小説はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている小説の著作権は作者にあります(一部作品除く)。
作者以外の方による小説の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この小説はリンクフリーです。ご自由にリンク(紹介)してください。
この小説はケータイ対応です。ケータイかパソコンかを自動で判別し、適切なページを表示します。
小説の読了時間は毎分500文字を読むと想定した場合の時間です。目安にして下さい。
作者マイページ トラックバック TXTダウンロード ケータイ表示 情報提供 これでダメならFXやめろ! – www.sikyou.com
初心者でも勝てるFX無料攻略法と最新FX比較ランキングを公開中!/提携Ads by Yahoo! JAPAN↑ページトップへ
小説家になろう タテ書き小説ネット 小説を読もう!

――といった文字列が混入する。
ジャマだから、これらはその都度、カーソルで範囲指定してデリートキーで削除してしまおう。
後で一括置換してもいいのだが、大した手間ではないし、出来る時にやっておいた方が間違いも少ない。

だが、これだけではない。
今のはページ末尾の箇所だから、すぐ目につくが、冒頭部分にも、画面上は目に見えない文字列があって、それが混入するのだ。
下記のような文字列である。

↓ ログイン 小説情報 感想 レビュー 縦書きで読む[PDF] 表示調整閉じる挿絵表示切替ボタン
▼配色
指定なし(作者設定優先)
標準設定
ブラックモード
ブラックモード2
通常[1]
通常[2]
シンプル
おすすめ設定
▼行間 % + - リセット ▼文字サイズ % + - リセット 縦書⇔横書き切替

▼メニューバー
追従
×閉じる

――といった文字列だ。
これらは、よく見ると、ページの上部に水平線があって、その上に記述されている。
だが、「配色」などは、画面右上の「表示調整」ボタンのドロップダウンメニュー内の文字列で、ふだんは目に見えない。それが上記の方法でコピーすると、もれなく混入してくるのだ。
しかも、上手い具合に、これらは定型文書である。つまり100回連載なら、最低でも98回分は同じ文字列なのだ(初回と最終回は違う可能性がある)。

ならば簡単だ。エディタの置換機能で、これらを一括して除去する。

その前処理として、作業前に、行頭の空白および、行末の空白を除去しておく。
この場合、「空白」には半角・全角スペースやタブも含まれる
これは、WZエディタなら、基本メニューにあるので、メニュー>編集>空白の変換>から、「行頭の空白を削除」と「行末の空白を削除」をやっておく。これでだいぶ、手間が省けるし、一括置換作業でのミスが減る。

秀丸では、どうも同様の機能はメニューにはないらしいので、正規表現を使った置換で行う。
前者は、検索文字列を「^_+」(「_」は半角スペースを、「+」は同じ文字のくり返しを、そして「^(キャレット)」は行頭を表す)として、置換文字列をブランクにして、正規表現にチェックを入れて置換すれば、余分な半角スペースが除去できる。全角スペースは、同様に「^□+」を検索文字列にして行う(ここで、「□」は全角スペースを意味する)。
後者は、「_+$」を検索文字列にして、置換文字列をブランクにすれば、半角スペースが除去される(「$」は、行末を表す正規表現である)。
全角スペースは「□+$」を検索文字列に、同様に除去できる。
タブ記号は、「¥t」で表されるので、これを正規表現で除去すればよいが、見たところ、この制御コードは使われていないようだから、省いてもいいだろう。
秀丸には、これに特化した「行頭・行末の空白および空白行を削除するマクロ」があり、それを使ってもよい。
下記URLにマクロがアーカイヴされている。

http://hide.maruo.co.jp/lib/macro/compress101.html

秀丸マクロの設定方法は、こちらを参照されたい。
ここでは、個々のエディタの説明を詳述している余裕はないので、各自、解説本など読んで自助努力されたい。
筆者が購読したものでは、先述した西谷能英氏の「編集者・執筆者のための秀丸エディタ超活用術」(翔泳社 2005年刊)などが良書だ。少し古い本だが、内容は古びていない。オススメである。後述するように、未来社のサイトに社長の西谷氏が、そのキモとなる正規表現や秀丸マクロに部分を公開している。
WZエディタに関しては、少し古いヴァージョンだが、WZ4に関する拙作のマニュアルが拙サイト上にあるので、よければご笑覧くださいw。

なお、先回りして後先になってしまったが、エディタの置換機能について、一応、説明しておく。
まず、エディタで出来る置換機能だが、これは「標準」と「正規表現」の2通りある。
「正規表現」を使うのは、多少、面倒に感じる向きもあると思うが、慣れたら、これに勝る文字列のデータ処理方法はない。
というか、まず、普通のユーザであれ、プロの物書きであれ、文章を書くことに、ある程度慣れていても、その文字列を「データ」として処理する、という行為そのものが、馴じまないはずだ。どうしても書かれた内容を問題にして考えてしまうだろう。だが、ここで求められている作業は、内容とは無関係に、その形態としての文字列だけである。あくまでもデータとしての文字列だ。これはプロの物書きでは、いや、だからこそ馴じまない思考過程だと思う。だが、編集といった場面では、そういう「割り切り」が必要になるのである。そしてその作業に最適なツールがエディタであり、不可欠な概念が「正規表現」なのだ。

しかもエディタでは、特に秀丸については、いろいろ解説本が出ている。だが、たとえば「正規表現」の解説本の中には、秀丸を論じていてさえ、実は、PerlやPHPなどスクリプト言語を活用するための教習本であったりするから、余計、ビギナーにはハードルが高く見えて、これを避けようとするが、ここでやろうとしているのは、そんな大それたものではない。ただ、間違えると、わけの判らない置換結果となるので、そこだけ注意する。

なお、秀丸エディタは頒価4320円(2014.11.01現在)であり、しかも試用期間は無料で全機能が使える。むろんマニュアルも何もないオンラインからのダウンロード版だが、前述したよう市販のマニュアル本が多数出ているので、心配はない。WZエディタは、唯一、安価な市販エディタであり、パッケージ版が9800円、ダウンロード版は6800円である。現行流通している市販マニュアルはないので、パッケージ版に付属の簡単なマニュアルか、拙サイトを参照してもらうしかない。だが、置換機能などは、大した作業ではないので、マニュアル無しでもOKだろう。

他にもテキストエディタはオンラインでいくつかあるが、いずれもマニュアルが完備されたものはないため、上記の2つ以外の選択肢は、ビギナーにはない、と思って差し支えないだろう。さらにいえば、エディタは物書きにとっても必須のライティングソフトである。これより高速な処理可能のワープロソフトはない。もともとプログラミングを書くためのアプリだから、軽快で小さなプログラムで必要最低限の機能がある。とにかく軽くて速い。慣れたらWordなど使えない。
ルビは自分の環境だけなら、編集との約束事で適当にタグを決めておけばよいので、特殊なルビを多用する人以外は、必要ないから、普通に小説やエッセイを書くだけなら、エディタが一番なのである。実際、筆者の知り合いのライターの多くがエディタを使用しているし、筆者自身、日常のライティングは主にエディタでやっている。小説だけは、筆者は特殊なルビを多用するため、一太郎Lite2でやっているが、メインのライティングはWZエディタ8である。

さて、実際の作業であるが――、
まず、バックアップを必ず取って、実際の作業はコピーしたもので行う。原本が残っていれば、どんな失敗をしても、またコピーすればいい。原本を直接いじって失敗したら目も当てられない。これは鉄則である。

次に、正規表現を使うべき文字列と、標準でOKな(=むしろ正規表現を使うとメンドイ)文字列を見極める。
正規表現では、メタキャラクターとかエスケープとか特殊な文字や記号が特別な意味をもつ。
だから、そうした半角の記号――
「?」 (疑問符)
「¥」 (バックスラッシュ=円マーク)
「*」 (アスタリスク) 「^」 (キャレット) 「$」 (ドル記号)
「[ ]」 (ブラケット=角括弧)
「( )」 (パーレン=丸括弧)
「+」 (プラス記号
「-」 (マイナス記号)
「.」 (ピリオド)

――など)が混入している文字列は、標準の置換機能で除去した方が早い。
しかも、置換とは、文章の最初から最後まで、舐めるように順にやっていく作業だから、まず標準の置換で出来る文字列から除去していく。

上の例でいえば、第1行目の――、

↓ ログイン 小説情報 感想 レビュー 縦書きで読む[PDF] 表示調整閉じる挿絵表示切替ボタン

がヤバイ。「[PDF]」という文字列には半角の「[ ](ブラケット)」が入っているが、これは正規表現では特殊な意味をもつ。だから、これらは先に標準の置換で除去しておくのだ。
次に、3行目の――

指定なし(作者設定優先)

これも、よく見ると全角ではなく、半角の「((パーレン)」が入っている。これまた正規表現ではエスケープしないと除去できない。これも標準置換で一括削除する。
7行目、8行目の

通常[1] 通常[2]

も「[ ](ブラケット)」があり、よろしくない。これも標準置換で一括削除する。

11行目の

▼行間 % + - リセット ▼文字サイズ % + - リセット 縦書⇔横書き切替

も「+(プラス記号)」などメンドくさいメタキャラや空白交じりなので、これも標準置換で一括削除。

後に残ったのは――、

▼配色

標準設定
ブラックモード
ブラックモード2


シンプル
おすすめ設定


▼メニューバー
追従
×閉じる

――ということになる。
間が空いていても、正規表現には空白行を示す方法もあるので、これでいい。
ここから先は、むしろ、正規表現を使った方が早い。3つのスクリプトを書くので、それで除去する(1行ですます手もあるのだが、わかりやすいように、あえて3つに作業を分けた。1行ですます手を考えてみてほしい)。

まず――、

▼配色¥n¥n標準設定¥nブラックモード¥nブラックモード2

を検索文字列にして、置換文字列はブランクにし、「正規(表現)」にチェックを入れて、「全置換」押下する。キレイに消えているだろう。半角の「¥n」は改行を意味する制御コードである。

次に、

シンプル¥nおすすめ設定

を検索文字列にして、置換文字列はブランクにし、「正規(表現)」にチェックを入れて、「全置換」押下する。

最後に――、

▼メニューバー¥n追従¥n×閉じる

を検索文字列にして、置換文字列はブランクにし、「正規(表現)」にチェックを入れて、「全置換」押下する。

これで、87回やるべき作業が1度ですむ。
まぁ、これらの正規表現を含む文字列を画面に残しておくと、それは最後に削除しなくてはならない(別ウィンドウを開いて、そこに当座、必要な文字列を「借り置き」しておく、という手もある。なお、WZは新しい画面は同一ウィンドウ内でマルチタブで開く。秀丸はシングルで別ウィンドウとなる)。

その代わりに、各話の間にかなりの空白行が生まれる。これは詰めたい。
さらに、発売される文庫では直っていると思われるが、ネット上では、この作者は、(たぶん、そうした方が、ケータイ画面では見やすいからだろうが)会話と会話の間に、余計な空白行を入れている。これも正規表現で詰めてしまおう。

検索文字列を「¥n¥n¥n」として、置換文字列を「¥n」とする。
「¥n」とは改行コードを意味する正規表現だから、2個の「¥n¥n」を検索文字列にし、1個の「¥n」を置換文字列にして置換すると、改行で1行分、空白が空いた行を詰めてくれる。ちょっと間違いやすいが、前の行末の改行と空白行の改行の2個で、初めて1つの空白行となるわけである。
ここでは、3つの改行コードの前者は2つの空白行を、2つの後者は1つの改行を意味する。つまり2行空白を詰めるのだ。
こうした処理で、かなり字詰めができ、PCやスマホ画面ではゴチャゴチャしたイメージかも知れないが、縦書きの電書画面としては、むしろ読みやすくなっているはずである。

なお、上述の文章では、「¥」を半角ではなく全角で記しているので、このままコピペして使うとエラーになる。
ある事情で(文書内にUnicode依存文字があるため)、このウェブページは、文字コードがUTF-8なので、半角の「¥」マークがキチンと表示されないから、仕方ない。不悪、ご了承ねがう。

少し先に、「《暗黒魔法、バニッシュウェイブ》」という文字列がある。
正規表現ではないが、青空文庫フォーマットで電書化するため、こういう中途半端な青空タグは困る。ここは手作業となるが、

|暗黒魔法《バニッシュウェイブ》

と修正しておく(たぶん、その意味で書いてあるんだと思う)。
「|」は区切り記号で、この場合、直前に他の漢字の文字列が連続していないから、入れなくてもいいのだが、念のため。ルビはカタカナにも振れるから、漢字以外の用法もあり、憶えておいて損はない。
青空タグでは、「《 》」で囲まれた範囲がルビとなる。親文字は、直前の漢字文字列が原則である。
できれば、「《バニッシュウェイブ》」も、「《バニツシユウェイブ》」としたいところだが、まぁ、いいや。……一昔前なら、こうした集合ルビ内の拗音や促音便の「ツ」などは、大文字で表したのだが、最近では、大きな活字本が増えたせいか、ルビにも拗音などが使われる事例が多くなり、必ずしも、間違いとは云えなくなったからだ。

その先に――、

「勝負だ!……えっと」

――とあるが、この「〜」は「全角チルダ」で、UTF-8以外の文字コードでは文字化けするので、通常の「~(=波ダーシ)」記号に一括変換する(この文字があるために、このHTML文書は、文字コードをUTF-8にしたのだ)。

その2つ先の段落に――、

「フハハハハ性懲りもなくも来たな、勇者よ。(後略)」

――とある。
こういう時、やや迷うのだが、やはり実際の電書リーダの画面では気に障る。
縦書きにした場合、文中の感嘆符の後は全角1文字スペース空けた方が見やすいのだ。よく見ると、この人は、感嘆符の後に、半角スペースを入れたり入れなかったり、バラバラだ。
だから、まず、全ての文中から、半角スペースを除去する(これは、検索文字列に「_」を入れて、置換文字列をブランクにして置換すればよい)。しかる後、「!」の後にブランク(全角空白1文字)のスペースを空ける。「□」が全角スペースを意味する。
検索文字列に「!」を入れて、置換文字列に「!□」にして、一括置換する。
ただし、これだと文末に「!」があって、なおかつセリフの場合、「」」の終端カギ括弧記号があったりしたら、オカシなことになる。
さらにいえば、「!?」などの場合も間に空白が入って困る。
だから、いっぺんに片付けることにする。

「!」と「?」をそれぞれ「!□」と「?□」に置換した後で、
「!□」」を「!」」に置換する。同様に、「?□」」も「?」」に置換する。
さらに、カギ括弧だけではないかも知れないので、「)(全角丸括弧の終端記号)」でも、同様の措置をとる。つまり、
「!□)」を「!)」に置換する。同様に、「?□)」も「?)」に置換するのだ。
そして、感嘆符を連続させている場合を考慮して、
「!□?」を「!?」に、逆もあるだろうから「?□!」を「?!」に置換する。

これだけやっても、まだ遺漏はあると思うので、最終的には、手と目で確認するしかない。
検索窓に「!□?」や「?□!」を放り込んで検索する。連続して「!!!?」とかやっている場合にヒットするので、それを手作業でスペースを削除する。ついでに云えば、電書リーダで縦書きで読む際は、ePUB3化した時点で、3つ以上の感嘆符は省かれるので、あまり意味はない(笑)。もし「!!!?」とあるなら、「!?」か「!!?」くらいに直しておく。

あと、この人は、さすがにプロデビューするだけあって、ある程度、書き慣れているせいか、そういう間違いはないが(正確には間違いとまでは言えかも知れないが)、「小説を読もう」サイトの作品などには、たとえば、次のような用法が見られることが多い。会話体の文章の末尾だが――、

「彼にそう伝えて下さい。」

――といった具合だ。
確かに、小学校の綴り方教室では、そう習ったような記憶もあるが、今、現実に刊行・販売されている、どんな小説であれエッセイであれ、こんな記述はまず、見たことがない。
どれでも、会話をカギ括弧で囲んでいる場合は、末尾の「。(句点)」は省いているだろう。
世間は学校とは違うのである。
しかし、これもまた、エディタで置換できる。
検索文字列に「。」」を指定し、置換文字列に「」を指定して全置換すれば、一括で直る。

まぁ、大体、以上のようなことを行っておけば、なんとか電書リーダで大過なく読みやすく読めるようになる。
(実を云うと、これでもまだ、少々、見づらいのだが、これ以上やると、マジで著作権法に抵触しかねないので、この程度でとどめておく(~_~;))

このページのトップに戻る


 sedスクリプトによるノイズ除去:Piperを使って


と、そうは云っても、やはり気になるので、以下は、架空の話として(笑)、読んでもらいたい。

まず、ケータイ小説で読む分には、あまり気にならないかも知れないが、実際の紙媒体の本や電書リーダだと、縦書きで気になるのが、最近の、やたらと漢字が多い文章である。結果的に字面が黒い画面(紙面)となり、見づらい。
これは、愚考するに、おそらくはワープロソフトの発達によって蔓延したと思しい。手書きだと、手控えるような書き方が、ワープロだと最初の一次変換で勝手に漢字変換されてしまうし、多くの人が、そのまま最初の変換で諒としてしまうからではないだろうか。

筆者が気になるのは、たとえば、「考え込む」「黙り込む」といった複合語での「込む」という漢字まじりの文字列だ。異論もあるだろうが、こういった場での「込む」は本来の意味が脱色されてしまっていると思う。それに、現実に字面をみれば判るが、こうした漢字ができるだけ少ない方が圧倒的に読みやすい。だから、特別な用法(官能小説での、「挿し込む」「突き込む」など(笑))以外の「込む」は、除去したいのだ。これは、これから小説を書く人にとっても同じことで、オンライン作家を続けていくならば、それでもよいが、一応、(プロの)物書きを目指しているなら、改めてほしい点である。

昔は、中島梓さんの「小説道場」や久美沙織さんの「新人賞の獲り方おしえます」といった良書があったのだが、残念ながらいずれも目下、絶版だ。関心ある人は、Amazon のマーケットプレイスなどで求めてほしい。初心者に懇切丁寧に、小説の書き方を指導していた。
実を云うと、筆者はプロになってから、当時、JUNE誌に連載されていた中島梓(=栗本薫)氏の「小説道場」で、「そういうこと」を知ったのである(笑)。コンテストに応募するまで、これといった文章修行など、したこともなく、文芸系同人活動なんかの経験もなかったため、初期の筆者の文章は、やたらめったら漢字が無用に多く、字面がひどく黒かった。周囲からの助言叱正などから、だんだんと減らしていき、今にいたる。それでも、まだ多いくらいである。リーダビリティ(読みやすさ)のためには、字面は白い方がいいのだ。

複合動詞(「書き上げる」「試してみる」等)の下は開く(=漢字をひらがなにする)だとか、時代小説では「彼」は「かれ」とする等々、即実用性の高い、非常にタメになることが多く書かれてあった。今も当然、似たような本はあるのだろうが、この2つの本に勝るものは見たことがない。
それは、たぶん、プロの作家さんは、自分では当たり前に思っていることだから、新人賞の選考でもしない限り、そういうことに気づかないことが多いからだろう。中島さんはJUNEの小説道場の査読で、久美さんは数々のラノベ系新人賞の選考委員を経験している。いわばジャンクフィクションの読み手としてはベテランだ。だからこそ、こうした「玄人にはもう判らないが、素人が陥りやすい過ち」が判るのだ。

それゆえに、筆者は、先述した「黙り込む」などの「込む」が気になるのである。
単独の「込む」は「混む」とも表記するように、「電車が混んでいる」といった、一箇所に沢山のものが集まっている意味もあるし、「力を込める」というような表現もある。また、「仕込む」「手が込んでいる」のように、メカニズムが複雑なことも意味する。こういう場合は本来の意味が残っているから、開かないでもいいだろう。
だが、複合語としての「こむ」には、大体において、そういう本来の意味合いは失なわれている(少なくとも脱色され、意味が薄れている)。おおむね、「中に入る」や「ある動作を続ける」といった意味での「こむ」には、本来の「込む」の意味はさほど強くはないだろう。文例としては、「飛び込む」「呼び込む」「黙り込む」「座り込む」などだ。これらの「込む」は開いて(=ひらがなにして)もいいと思うし、そうした方が字面的には黒っぽくなくてよい。

例外として、上記の官能小説での用例や、ケンカの描写での「殴り込む」や、料理での「煮込む」「仕込む」など以外は、こういう「込む」は漢字を開いて、ひらがなにした方がいいと思う(少なくとも、大した意味はないのだから、ひらがなの方が意味を感じとらない分と、字面的にも白っぽくなる分、結果としてずいぶん読みやすくなる)。
エンタメ、特にラノベ系なら、リーダビリティ=読みやすさは一義的な要求だと云っていい。ならば、単純に、「ワープロソフト(の漢字変換IME)で一番目に候補に挙がるから、それを使いました」では、プロを目指す物書きとしては、ちょっと問題だろう。

だが、残念なことに、そうした場合、大抵のオンライン小説では、ワープロソフトの第一次変換の通りに「飛び込ん」だり「黙り込ん」だりしているのだ(^^;)。作家さんに改めて貰いたいところだが、すでに作品になってしまったものは仕方がない。

もっとも、これはアマチュア作家のみならず、プロの作家さんでも、ワープロソフトの第一候補そのままで漢字変換する傾向はある。
以前、中島梓さんが、ある評論で、よしもとばなな氏の作品の冒頭を書き写して、その十数行分を、全く漢字変換の第二次候補を使うことなく、ワープロで打てた、として、ワープロ世代の作家の問題点として提起していたのを記憶する。だが、物事には程度というものがある(笑)。まるっきり第一候補のママでは、困るのだ。

これを、しかし、いちいちエディタの置換機能で除去するのは、相当に面倒くさいだろう。
複数のタイトルがあった場合、エディタで複数の画面を立てておいて、全部の画面に置換作業を適応する方法もあるが、どっちみち毎回やるのは大変だ。しかも毎回、同じような作業だから、うんざりする。そもそも、そうしたルーチンワークを人間の代わりにやる仕事のためのPCではないのか。

その通り。
そういう作業にうってつけなツールが「SED(セド)」である。
拙サイトに少しだけ言及しているが、これは「Stream EDitor」の略だそうで、GREP などと同じ、UNIX系のスクリプト処理系(言語)が元になっている。
非常に強力なフィルターで、元の文字列集合から適合する条件の文字列やパターンを問答無用に変換(置換)して、リダイレクトで別なファイルに書き出してくれる。元の文章は傷一つ付かず残るので、安心だし、たとえ何度、失敗しても、そのつどスクリプトを書き直せば、何度でも試行できる。MS-DOSやWindowsに移植されたものは、UNIX本家のものほど強力ではないが、それでもエディタの置換機能に較べたら、遙かに威力が違う。乱暴に云えば、SED の進化形がPerlだと思えばよい。 筆者にとって、jgawkやPerlは、すでにプログラミング言語に近いため、学習する気にもなれないが(筆者はプログラムが出来ないのだ(笑))、SED までなら、なんとか出来る。その程度の難易度だと思ってもらえばいいだろう。

SED とは、簡単に説明すれば、ワイルドカード(「*」や「?」)の強力なもの、と云えば判るだろうか。
あるパターンの文字列ないし、特定の文字列を置換するのだ。正規表現は前者であり、標準は後者だが、後者だけでも充分である(つーか、いまだに筆者は一度で、正規表現でのSED が上手くいった試しがないのだ(笑))。

これは通常、DOS窓と通称される「コマンドプロンプト」で直にコマンドを打ちこんでの作業となるため、Windowsユーザにはハードルが高い。
だが、よくしたもので、そうしたユーザ向けにGUI環境でSED を使えるフリーウェアがあった。
「休八(田畑純)」氏作成の「Piper」である(作者は現役の歯科大の准教授らしいが、実に多趣味のようだ)。
これは、SED のスクリプトさえ自分で用意すれば、あとはソフトが勝手にやってくれる優れ物である。ありがたく使わしてもらおう。
下記サイトからダウンロード出来る。

http://www.vector.co.jp/soft/win95/prog/se372506.html

これについては、同梱されたヘルプと同じものが、次の作者のサイトに記されているので参照されたい。

http://www.geocities.jp/qqbjj485/Q-soft/piper/Piper.htm

「Piper」自体の操作については、後述するとして、まず、前準備が要る。
サイトの指示に従って、まず、次の3つのツール(ファイル)を用意しておく。
以下ヘルプより引用(2つリンク切れがあったので、修正している)。

次の3つの言語プログラムを標準対応としていますので、それぞれダウンロードして、指定のファイルをpiper.exeと同じディレクトリにコピーしてください。

【GREP】 grep win32 2.0+mb1.04 (GNU grep / Win32 Version)
95.01.29公開 207K フリーソフト
作者:Free Software Foundation 吉澤 康介 谷本 孝浩
http://www.vector.co.jp/soft/win95/util/se028216.html

*解凍して出来るファイルのうち、grep.exe を piper.exe と同じディレクトリにコピーしてください。

【SED】 GNU SED DLL版 1.18 (GNU sed 1.18 / Win32 DLL 移植版)
95.08.20公開 187K フリーソフト
作者:Free Software Foundation 谷本 孝浩 前寺 正彦 
http://www.vector.co.jp/soft/win95/util/se028215.html

*解凍して出来るファイルのうち、sed.exesed.dll を piper.exe と同じディレクトリにコピーしてください。

【AWK】 gawk win32 2.15p4+mb1.03 (GNU awk / Win32 Version)
95.01.29公開 640K フリーソフト
作者:Free Software Foundation 吉澤 康介 谷本 孝浩
http://www.vector.co.jp/soft/win95/util/se028214.html

*解凍して出来るファイルのうち、gawk.exepiper.exe と同じディレクトリにコピーしてください。

ここで使うツールは3つのうち、SED だけだが、これは、筆者が使っている、64ビットのWindows7マシン上で、コマンドプロンプトでも動作確認できた。他のSED は、いくつか試したが動作しなかった。以前、XPマシンでは動作したものも、64ビットマシンでは動作しないものもある。これは、Vector の「Piper」ダウンロードページでは、動作OSとして、「Windows 7/Vista/XP/Me/98/95」とあるから、おそらくWin8でも動作可能だろう。
GREP とgawkについては確認していないが、たぶん、大丈夫だろうし、この作業では使わないので、とりあえず、どうでもいい。
さしあたり、「GNU SED DLL版」(sed_118d.lzh)を解凍して、中の「SED.EXE」「SED.DLL」の2つを、「Piper」フォルダにコピーしておく。

さて、「Piper」を起動する、その前に、1つだけ、しかも重要な手間がいる。
SED を使うためには、「SED のスクリプト」を書いておかないといけない。
面倒くさいと思うかも知れないが、これは一度だけ書いておくと、何度でも使い回しが出来るので「お得」な方法なのだ。
しかも間違っていたり、そのうちに足りないと思えば、単なるテキストファイルだから、いくらでも加筆訂正が可能だ。

事例としては先ほどの「込む」関係だと――、

s/倒れ込/倒れこ/g
s/考え込/考えこ/g
s/溶け込/溶けこ/g
s/立ち込/立ちこ/g
s/射し込/射しこ/g
s/思い込/思いこ/g
s/飛び込/飛びこ/g
s/教え込/教えこ/g
s/送り込/送りこ/g
s/流れ込/流れこ/g
s/座り込/座りこ/g
s/投げ込/投げこ/g
s/滑り込/滑りこ/g
s/割り込/割りこ/g
s/落ち込/落ちこ/g
s/逃げ込/逃げこ/g
s/注ぎ込/注ぎこ/g
s/黙り込/黙りこ/g

といった感じになる。
書式としては――、

s / 検索文字列 / 置換文字列 / g

――である。

むろん、もっと行(=ジョブ)は増やせるし、実際に筆者が書いた最初のスクリプトでも、これの倍以上はある。
上記では、「s」コマンドを使ったスクリプトは、エディタの置換の「標準」置換に近いもので、パターンは使っていない。
スラッシュ「/」で区切られた範囲内を対象とする。末尾の「g」「gフラグ」といって「複数回の置換」を指定する。まとまった文書ファイル内で、何度も出てくる文字列を全部、置換する時に使う。まあ、たいてい、何度も出てくる文字列を全部、置換するので、全てに付けておく。
ちなみに「s」コマンドの「s」とは「swap(交換)」の意味だそうである。
なお、他によく使うものとして、「y」コマンドがあるが、ここでは取り上げない。

実際の作業では、以前まではSED でやっていたようなジョブをエディタで済ませておくことも多い。
最近のWZエディタは賢いので、それまで置換機能でやっていた作業のいくつかが、エディタの変換機能に常備されている、ということもある。WZはヴァージョン8になって、かなり賢くなった。

編集>変換>
で、「数字を全角に変換」「英字を全角に変換」「カタカナを全角に変換」などが可能だ。
これらの作業は、あらかじめやっておくと、見落としミスが減るので重宝である。
これらの変換は「変換関連メニュー」としてメニューバーのアイコン「←→」(検索窓の左側)からもドロップダウンメニューから選択できる。
(ただし、イメージタグでの表紙や挿絵の指定などは全部、全角文字/記号になってしまうので、そうした作業は最後の工程にすることになる<順番は大事な問題だ)

また――、
編集>空白の変換
で、「行頭の空白を削除」「行末の空白を削除」などがある。
正規表現を使った置換でも可能だが、便利な機能だ。
(他にも、目立たないが、WZ8での新機能として、編集>段落>「重複行を1行へ」などは、HTMLのソースから特定のURLを抽出してソートし、サムネイル画像が表示している元画面のURLを抜き出す、などといった作業には非常に効率がよい。昔はこうした作業は、やはりSED と同じUNIX系のスクリプト処理系の「uniq」などでないと出来なかったので大変に便利だ)

秀丸では――、
編集>変換>
のメニュー内で、「英数字/記号/空白のみ全角に」、「カタカナのみ全角に」の機能はあるが、これは事前に範囲指定の必要がある。かなり強力なので、間違えて「全角カタカナに変換」を選んで変換してしまったりすると、範囲内の全ての全角ひらがな,半角カタカナを、全角カタカナに変換してしまうのだ。
また、ヘルプとか見たが、「空白行の削除」機能はデフォルトではないようだ。
置換機能で、検索文字を「¥n¥n¥n」にして、置換文字を「¥n」にすれば、2行空白が詰められる。マクロでやる方法もあり、ぐぐれば、いくらでも出てくるが、大した手間ではないから、置換機能で充分だろう。

筆者は、電書では、紙媒体の本と違って、行頭を1文字(全角)スペースを空けるよりも、天付きにした方が見やすい気がする。だから、あらかじめ、そうした原稿は、これで空白を除去しておくといいだろう(むろん、そうでない人は、この機能は使うべきではない)。

さすがに記号類は各々指定しないといけないので、全部の記号を全角にはできない。
だから、これから先はSED の出番となる。

まず、大抵のオンライン小説でバラバラなのが、感嘆符「!」「?」である。
これが、全角だったり、半角だったり、また混在していたり、不統一が多い。さらに、先述したように、「!」「?」の後は全角スペースを1文字分、空けてほしいのだが、そうなっていない人がなぜか圧倒的に多い。半角と全角を混在させて空けている人がいるのは、見た目、区別が付かないワープロソフトか、さもなきゃ、スマホでオン書きで打っているせいだろうか。これも目障りだから直したい。

で、次のようなスクリプトとなる。

s/?/?/g
s/!/!/g
s/?/?□/g
s/!/!□/g
s/?□」/?」/g
s/?□)/?)/g
s/?□』/?』/g
s/!□!/!!/g
s/!□」/!」/g
s/!□)/!)/g
s/!□』/!』/g
s/!□!/!!/g
s/!□?/!?/g
s/?□!/?!/g
s/。」/」/g
s/!□。/!/g
s/!□……」/……!」/g
s/?□……」/……?」/g
s/!!□!/!!!/g
s/??□?/???/g

最初の2行は(判りにくいかもだが)半角の「!」「?」を全角の「!」「?」にしている。
次の2行は「!」「?」の後に全角スペース(□)を入れている。
そのあとは、それによって出来た(であろう)不具合を修正するスクリプトである。
これだけで、予想される感嘆符の問題は片付く。
それでも、思いがけない見落としミスは(ヒューマンファクターとして、必ず)あるので、ザッと検分は必要だが、大体、これで大丈夫のはずである。

1つ気をつけておくべきは、SED は「最長一致」である、ということだ。
これは、置換文字列に正規表現を使う場合には、要注意だが、それ以外でも、標準変換の場合でさえ、注意が必要なことである。
どういうことかというと、指示された文字列の一番長い文字列までを置換範囲と解釈するのだ。
だから、たとえば、余韻を表す3点リーダ「…」を複数、使うユーザなどで、普通は2つ組み合わせるだけなのだが→「……」、これを4つも5つも使う人がいる。電書リーダでは、ちょっと見苦しいので、2つに統一したい。
だが、次のようなスクリプトを書いたら失敗する。初心者の陥りやすい失敗例である。

s/………/……/g
s/…………/……/g
s/……………/……/g
s/………………/……/g

これだと、最初のスクリプトで、3個分の3点リーダが2個分に変換されてしまうから、後の方のスクリプトはムダになるし、置換しきれない箇所が残ってしまうのだ。
これは、次のように、長い方から記述しなければならない。

s/……………………/……/g
s/…………………/……/g
s/………………/……/g
s/……………/……/g
s/…………/……/g
s/………/……/g

3点リーダの代わりに、中黒「・」を並べる人もいる。これは3点リーダに変換したい。
だが、この場合も、同様で、以下のように、最長の方から変換するよう、順序に気をつける。

s/・・・・・・・/……/g
s/・・・・・/……/g
s/・・・・/……/g
s/・・・/……/g
s/・・/……/g

あとは、好みに従って、任意に気になる文字列を変換するスクリプトを書いていく。
ワープロソフトの一次変換に従って、やたらと漢字の多い字面を、できるだけ漢字を減らして、読みやすくスタイライズしていくのである。

裏ワザとして、最初にエディタで1タイトル、置換作業をして、その後、その履歴を見て、置換すべき文字列を拾っていく、などということも出来る。
WZ8では、「C:¥Users¥[自分のアカウント名]¥AppData¥Roaming¥WZSoftware¥WZ8com¥gene.mbx」フォルダ内に、「0xx00xx.mbf」といったファイルが作られる。
そして、そこに置換した文字列が格納されるので、それを参照するのだ。


今、思いつくままに、「自分なら、こう開くだろう」といった文字列を書いてみる。
一例だが、次のようになる。

s/一旦/いったん/g
s/途端/とたん/g
s/今更/今さら/g
s/気をつ/気を付/g
s/口元/口もと/g
s/目元/目もと/g
s/手元/手もと/g
s/手許/手もと/g
s/耳元/耳もと/g
s/纏/まと/g
s/勿論/もちろん/g
s/無論/むろん/g
s/無理矢理/無理やり/g
s/その内/そのうち/g
s/先程/先ほど/g
s/何故/なぜ/g
s/畳み掛/畳みか/g
s/浴びせ掛/浴びせか/g
s/話し掛/話しか/g
s/襲い掛/襲いか/g
s/腰掛け/腰かけ/g
s/取り掛/取りか/g
s/飛び掛/飛びか/g
s/女達/女たち/g
s/男達/男たち/g
s/子供達/子供たち/g
s/高校生達/高校生たち/g
s/者達/者たち/g
s/登り詰/登りつ/g
s/追い詰/追いつ/g
s/行き詰/行きづ/g
s/我が侭/我がまま/g
s/思う侭/思うまま/g
s/思うが侭/思うがまま/g
s/気持ち良い/気持ちいい/g
s/落ち付/落ち着/g
s/睨み付/睨みつ/g
s/締め付/締めつ/g
s/塗り付/塗りつ/g
s/縛り付/縛りつ/g
s/擦り付/擦りつ/g
s/張り付/張りつ/g
s/凍り付/凍りつ/g
s/気付/気づ/g
s/近付く/近づく/g

これくらいなら、まだ間違いは少ないが、正規表現を使おうとしたり、パターンでやろうとすると、とたんにミスが連発する(笑)。
ちなみに最初、筆者が書いたスクリプトで置換された文書は次のようになった。

五、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六詞ワ、六詞ワ、六l五、六′ワ、六A五、
六血ワ、六ワ五、六O五、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六′ワ、六詞ワ、六l五、
六′ワ、六A五、六血ワ、六ワ五、六A五、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六詞ワ、
六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六l五、六詞ワ、六l五、六′ワ、六A五、六血ワ、
六ワ五、六東ワ、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六詞ワ、六詞ワ、六l五、六′ワ、
六A五、六血ワ、六ワ五、六O五、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六′ワ、六詞ワ、
六l五、六′ワ、六A五、六血ワ、六ワ五、六A五、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、
六詞ワ、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六l五、六詞ワ、六l五、六′ワ、六A五、
六血ワ、六ワ五、六ワ、六詞ワ、六l五、六′ワ、六A五、六血ワ、六ワ五、六詞ワ、六詞ワ、六l五、
六′ワ、六A五、六血ワ、六ワ五、六O五、六詞ワ、

はははは。さすがにこうなると、どこでどう間違ったのか自分でも判らない(笑)。
仕方ないので、自分で作った正規表現の特に漢数字関係のスクリプトは全部、削除した。
自分で作った、というのは、元になったスクリプトはパクリだからであるw。

実は、こういう処理は、編集や印刷所では、日常的に行われている。
それに特化して書かれたのが、何度も言及しているが、未来社の西谷能英社長が公開している「未来社アーカイブス」である。
その「SED用スクリプト一覧」ページには、西谷氏が作り上げたスクリプトが惜しげもなく公開されている(書籍として刊行されている上に、さらに秀丸マクロとしても本にした内容が、無料で公開されているのだ)。ぜひ、一度、先達の努力に感謝しつつ、よろしく参考にしてもらいたい。

なお、見ていくと、西谷スクリプトの中には、「★」マークが付いた置換文字列がある。
これは、いくら入念に考えぬいたとしても、そこは、ヒューマンファクターによるエラーが有りうるため、その余地がある、と思った箇所は、後で検索して、確認し、間違っていない場合は、「★」マークを削除するためである。慎重にやらねば、失敗する。プロでさえ、そうしているのだから、こうした態度は見習おう。
ちなみに、西谷スクリプトで、

s/¥([^伊栄闊執上速調伝到友配発練]¥)達¥([^さしすせ意人成者磨]¥)/¥1たち¥2/g

というものがあったが、これは「達」という文字を「たち」に開くスクリプトである。
正規表現を使って、たとえば「伊達」や「練達」などの熟語に使われる「達」を除外すべく工夫されているのだが、これだと人名の「安達」などが「安たち」になってしまう。エラーである。試した後、最初の正規表現の文字列に「安」の文字を追加した。他にもあると思うが、おそらく人名などが入らない文書に対するスクリプトだったのだろう。
多少のミスがあっても、粒々辛苦した先達の工夫にケチを付けてはいけない。

(なお、付言しておくと、これは、この版のSED 特有のバグなのかどうか、よく判らないのだが――以前、使っていたSED には無かったように思うのだが――、検索文字列に「16歳」を指定し、置換文字列に「十六歳」とした場合、文字化けが起きる。「10歳~19歳」まで同じことで、何度か試したが、同じように文字化けした。仕方なく、筆者は最初の「10歳」→「十歳」を「★十歳」としてチェックマークが残るようにした。ないよりマシだろう。長い作品のどこに、「17歳の少女が」といった文章があるか判らないのだから、文字化けした後は、「★」マークを目印にエディタで検索し、元テキストと照合して修正するしかない。また、これ以外にも、SED では、不可解なバグによる文字化けが発生することがある。スクリプトに記述していないにも関わらず、「喘」という文字を含む文字列がハングル混じりで化けた。原因は未だ不明である。これらは最終的に手と目でチェックして、そのつど置換する以外、対策法がない)

ところで、上記のスクリプトの中で、「パターン」があるものが有るのに気づいた人もいるだろう。

s/塗り付/塗りつ/g
s/縛り付/縛りつ/g
s/擦り付/擦りつ/g
s/張り付/張りつ/g
s/凍り付/凍りつ/g

――などである。
これは漢字が異なるだけで、後のパターンは同じだ。
塗縛擦張凍」などの漢字のあとに、「り付」という文字列がある。法則性があるから、これは正規表現で置換が出来るはずだ。
「付く」も複合語で、別な漢字の動詞の下に付いて、強調の意味を付与することが多い。大体において、元々の「付着する」「到着する」などの意味は薄まっているので、これも開いてよいと思う。例外としては転送希望の郵便物の宛先としての「気付(きづけ)」(英文でのc/o=care ofの意味)くらいだが、まあ、小説の中で使われる率を考えると、誤差の範囲だ。この語をふつうに使う「気付く」「気が付く」などは開いても構わないと思うが、これは人によって好みが分かれるところかも知れない(筆者なら、「付き合う」は開かないが、「気が付く」は開くと思う)。
他にも「付」の前にあるべき文字列を探して羅列してみる。「巻き付く」「泣き付く」、「絡み付く」、「締め付け」……。
これを正規表現使ったスクリプトにすると――、

s/¥([りきみめ]¥)付/¥1つ/g

――となる。
これは「タグ付き正規表現」といって、SED ならではの機能である。「¥( )¥」で囲った「[ ]」内の文字列が、そのままの順番で、「¥n」(ここでは「¥1」)で表されている。これを使えば、語順の入れ替えも容易だ(「¥2¥1」のように逆順の出力を明示すればよい)。文字列をデータとして扱い、そのパターンを処理する、と先述した意味がこれである。あまりに無秩序な文字列や例外の多い文書ではダメだが、パターンが定型的にくり返される文字列があれば、適応できる。逆に漢字の送りが不統一の場合などは、無理やりSED のスクリプトを使って統一する、といった編集作業も、たとえば学術書や専門誌などでは普通に行われている。
ここでの例は5行だけだが、これと同じパターンのものが例えば100個あったとしても、100行、スクリプトを書くより、1行のスクリプトで同じことが表現されるのだ。

西谷スクリプトでは、さらに徹底しており、次の2つのスクリプトになっていた。 文字の前後に留意して、「づ」と読む場合が1行目、「つ」が2行目のスクリプトである。
筆者が思いつかなかった、「顔付き」「傷付く」の場合なども考慮に入れている。さすがにプロの編集は違う。

s/¥([裏界格片気機拠係向心序礎置値近徴名根命連]¥)付¥([いかきくけこ]¥)/¥1づ¥2/g
s/¥([いえがきげびり顔傷]¥)付¥([いかきくけこ]¥)/¥1つ¥2/g


だが、実を言うと、あまりこうしたことは、ビギナーには最初からは推奨できない。
筆者自身が、そこまで自信がないということは置いておいて(^^;)、間違った時の結果が、取り返しはつくとはいうものの、ちょっと心的ダメージが大きいからだ(笑)。
ただ、正規表現についてマジメに勉強して、そうしたスクリプトを書くのは、各人の自由だから、大いにやってもらいたいが、最初は、1つずつ、1個の文字列変換につき1行ずつ、スクリプトを書いた方が無難である。
正規表現は、「あなたの正規表現はなぜ動かないのか」といったテーマで1冊の本が出せるほど、奥が深い。プロでも間違うことがある。だが、前にも記したように、何度でも試せるのだから、失敗を畏れずに、何度でも試行錯誤してほしい。そうした「実学」でしか、しかも独学でしか身につかない、これはそういう種類のツールであり、考え方なのだ。

一応、筆者が、この作業のために作ったスクリプト「txt.sed」をアーカイヴしておく。
むろん、西谷スクリプトにも大いに助けられたものだが、これを使えば、まず、ネット小説のノイズを除去するには、かなり時間の節約になると思う。下記URLにある。

   http://trozky.web.fc2.com/txt.sed

この業界では、正規表現の達人がいて、Perlやjgawkなどでもだが、SED でも「1行野郎」と称される人たちがいる。英語だと「One Liner」で、これはプログラムなど書かないでも、たった1行のスクリプトだけで、途方もなく複雑な作業をやってのける超絶技巧の持ち主、およびそのスクリプトを指す。なかなか、素人では、その境地まではたどり着けない。さらに云えば、SED やエディタでの置換作業は、そうそう毎日あるものではないから、しばらくすると、錆びつく。忘れてしまうのだ。もう一度、教則本を読み返して、やることになる。素人なら、それが当然であろう。
だが、プロのプログラマに対して、サンデープログラマという人だっているのだから、正規表現について、ハンパな知識だけでも、それを知っているのと知らないのとでは、だいぶ違う。作業効率上、見逃しえない差がつくのだ。憶えておいて損になることはない。特に正規表現は、エディタの置換機能でも役立つ知識なので、物書きでも、一度は、きちんとしたマニュアルを読めばいいと思う。

さて、順番が逆になったが、最後に、こうしたスクリプトを書いた後で、それを「Piper」で動作させる方法について書いておく。

まず、上記のようなスクリプトは拡張子「.sed」のファイル名を付けて、「Piper」を解凍したフォルダ内に保存する。
なんでもいいが、簡単な名前がいい。「txt.sed」とか。
そして、変換する対象のファイルも同じフォルダ内に格納する(ここでは「走れメロス」をコピーし、「test.txt」とリネームしている)。
なお、「Piper」では、あつかう文字コードは「シフトJIS」なので、置換対象となるテキストファイルは、あらかじめ、ファイル情報(プロパティ)を見て、もし、UTF-8等なら、文字コードを変換しておく(でないと、文字化けする)。

このページのトップに戻る


 Piper


「Piper」を起動する。
以下のような3つの画面が現れる(編集の都合上、移動させ重ねている)。
各々、「オブジェクトファイル」、「スクリプトパネル」、「リザルトファイル」の3つだ。

Piper


まず、「オブジェクトファイル」に対象ファイルを読みこむ。
「オブジェクトファイル」の「スクリプトファイル名」の「参照」を辿って、先ほど格納した「test.txt」を読みこむ。

Piper


下図のように、オブジェクトファイル画面に「test.txt」が読みこまれた。
これは、キチンとした編集や校閲を経た文章だから、まず、わざわざ置換するような文字列はないと思うが、ものは試しである。

Piper


次に、「スクリプトパネル」に、これも先ほど格納したSED スクリプトの「txt.sed」を読みこむ。

Piper


以下のように、スクリプトパネル画面に、SED スクリプトの「txt.sed」ファイルが読みこまれた。
これで準備はOKである。
その下の「処理言語」は「sed」になっている。その右側の「実行」ボタンを押下する。

Piper


SED は対象となるファイル容量によって処理速度が異なる。小さいと早く、大きいと遅くなる。
この程度(元テキストは21KBほどのファイルである)だと、ほとんど数瞬で処理が終わる。
結果は直ちに、「リザルトファイル」画面に反映される(下図参照)。

Piper


見て判るように、ところどころ「★」マークが付いている。置換され、しかも要チェックの箇所である。
ここは気にせずに、まず、保存しよう。
「リザルトファイル名」の窓の隣りにある「参照」ボタン押下する。
そして、あらかじめ直下フォルダ内に作っておいたサブフォルダ「output」フォルダ内に「名前を付けて保存」する。
ここでは、「result.txt」というファイル名で保存している。

SED は上書きされるので、わざわざ「output」サブフォルダを作り、混乱を回避しているのだ。
次に試行する際は、「result2.txt」というように別名で保存する。

Piper


さて、「リザルトファイル」画面内で、変換結果を見てみよう(下図参照)。
すぐに判ることだが、赤い下線部に「★」マークで要チェック箇所が明示的に示されている。「な★い」「な★く」などは、元が「無い」「無く」だろうから、問題はないが、下の方に、ちょっと注意を惹く箇所がある。

王よう★の

という箇所である。
明かに、誤変換だろう。こうしたチェックが必要だからこそ、★マークがあるのだ。

Piper


これは、元のSED スクリプトファイルで、以下のようなスクリプトによって変換された結果である。

s/¥([^異一客多同別変皆模]¥)様¥([なにのだ]¥)/¥1よう★¥2/g

つまり、口語文の中で、「~の様な」といった箇所を「~のような」にしたい、そのためのスクリプトなのだ。
だがしかし、誰で判るように、「様」の前には、いくつもの漢字が付いて熟語を成している。これも置換されては困る。
そのため、¥([^異一客多同別変皆模]¥)という、ブラケット([ ])内で示された、キャレット「^」で指示されているのだ。

キャレットは、普通の正規表現では、「行頭」を表すのだが、ここでの使い方は、ちょっと特殊で、「次に含まれていない文字にマッチする」という意味になる。
この処置によって、ここでは、たとえば「異様」「一様」……「模様」といった文字列が置換処理から省かれるように指示されているわけである。

しかしながら、西谷スクリプトでも、「王様」まではフォロー出来なかったようで、「王様の妹婿」の箇所がマッチした、と思われて、変換されてしまった次第である。
よく見ると、すぐ上の「王様は、人を殺します」の箇所は、変換されていない。なぜか? これは、スクリプトの二番目のブラケット内で、「なにの」に続く「様(様な、様に、様の)」だけを指定しているからである。

次のこともあるから、早速、「txt.sed」を開いて、第一ブラケット内の文字列に、「王」を追加しておく。「お嬢様」も同様だったので、「嬢」を追加する。気がついた時に、加筆訂正を欠かさないことが、SED のスクリプトを完璧なものに育てていくコツである(もっとも、絶対に完璧なスクリプトなどはない。だから、アヤシイ箇所はあらかじめ★マークで要チェックにしておくのである)。


だいたい、以上だ。
処理が終わったら、「Piper」は画面のどれかを終わらせれば(右上端の×をクリックするなり、ファイル>終了なりで)、終了する。3つとも画面が消える。
これで、「Piper」というフリーソフトの操作、そして正規表現、SED というスクリプト処理系が、どのようなものか、理解されたことと思う。
いくらでも応用は効くので、電書制作の前処理などに限らず、他の作業でも、使ってほしい。

下図は、念のために、変換結果の「result.txt」をエクスプローラで開き、エディタで開くところだ。

Piper


筆者は愛用のWZエディタで開いている。
今度は、検索機能を使って、「★」マークの箇所を検索し、問題なければ、★マークを削除していけばよい。
上記のように「問題あり」の箇所があれば、元テキストを照合するなりして、手直しをする。

Piper


そうすることで、「Piper」を使ったSED による変換が完了する。
SED も、Piperもあくまでもツールである。最終的には、人の眼と手でテキストは完成をみるのだ。

このページのトップに戻る


 Piperの限界と、Div(ファイル分割)


――と、ここまで書いてきておいて、なんだが、「Piper」には、1つ問題があった。
試験的に使った20KBの「走れメロス」のファイルでは判らなかったのだが、その後、試行したところ、「Piper」で読み込めるテキストには、残念ながら、容量制限があることが判ったのである(~_~;)。
大体、125KB程度が限度で、これは原稿用紙換算だと、およそ190枚くらいに相当する。短編か中編がリミットということになる。
うーん。これでは長編小説は、とても処理できない。

短いものなら、なんとかなるが、長いタイトルは、別な方法を採るしかないだろう。
ファイル分割という手もあるが、それでも自動で処理するツールは、全く文脈を無視して分割するから、あまり、よろしくない。しかし、あくまでも、Piperでやる、というのなら、他に方法がないだろう。

今、Vectorサイトを見たら、幸いにも、テキストファイルを行数指定で分割でき、結合も出来るフリーウェアで「Div」(我妻孝則氏作)というソフトがあった。
下記サイトよりダウンロードできる。

http://www.vector.co.jp/soft/win95/util/se088352.html

動作確認で試したところ、確かに優れ物だ(元々、偏微分方程式を数値計算で解いた結果、生じる1GB超える大容量のテキストファイルに対処するよう、類似のものがないため、自作したそうだ)が、肝心の「Piper」で処理可能なファイルが論理行(段落行)で1400行くらいが限度か。
ネット小説は無償の情熱の赴くまま、厖大な巨編がたくさんあるので、容量が1MBや2MBはザラである。125KBでチマチマ分割していたら、作業効率はよくないが、Piperを使う前提なら、仕方ないだろう。

Divは、起動すると下図のような画面が出る。

Div


デフォルトだと「バイナリ」ファイルにチェックが入っているので、「テキスト」にボタンを切替えて、Piperの制限を考え、1000行で分割するようにする。「単位行数」とあるから、たぶん、論理行だと思うが、念のために少な目である。

「分割元」はDiv直下のフォルダにコピーした「test2.txt」を「参照」から選択する。
「保存先」はDiv直下のフォルダでは、あとあとマズイ結果が出るかも知れないので、Divのフォルダ下に「output」というサブフォルダを作っているので、そこに格納するようにした。
下図のようになる。

Div


「実行」ボタン押下すると、まず「結合」用の「バッチファイル」の場所を聞いてくる。
バッチファイルの格納場所が指定できる。ファイル名は自動取得で、元ファイルの「ベースネーム」+「.bat(拡張子)」となる。
つまり、「test2.txt」なら、「test2.bat」だ。
ここでは、「output」というサブフォルダを作っているから、バッチファイルの格納場所もそこにして、「保存」ボタン押下する。 バッチファイルの格納場所=分割ファイル場所となる。

「保存」と同時に「分割」処理が終わる。2MBでも、アッという間だった。

Div


結果が下図である。
エクスプローラで、「C:¥x_soft¥div¥output」フォルダ内に作られた分割ファイル20個と結合用のバッチファイル1個を表示している。
元ファイル名と16進法で記されたファイルが並ぶ。

念のため、ファイル管理ユーティリティで直視したが、全部、行数1000で分割されている。ユーティリティにもファイル分割機能は付属しているのだが、勝手な場所で分割するため、手直ししなければ使えない。その点、これは優れたソフトと言えるだろう。

Div


だが、1個だけ、130KBのファイルがあり、これではPiperが読み込めない。
仕方ないから、1000行は止めて、900行にして再試行。
すると、今度は、70KB~120KBのファイル23個に分割された。
よく判らないが、行数の問題よりも、詰まった文字列の数=実容量が問題になるのだろう。行数指定では、最終的に、どれだけの容量になるか、正確には判らない。
だから、会話が少なく改行の多くない作品、論文スタイルの密な文章の作品などでは、行数指定を短めに調整した方が無難のようだ。


あとは、これら23個のファイルを、それぞれ、「Piper」でSED 処理をほどこし、結果をバッチファイルで結合すればよい(別な作業フォルダにコピーして、バッチファイルのために、そこでリネームするといいだろう。少し面倒だが、20個や30個なら、フリーのリネームソフトを使わなくても、手作業で何とかなるはずだ)。

ちなみに、これは約2MBのテストファイルだったが、試しに3MBのテキストファイルだと、これはちょっと容量を少なめにして、650行で分割すると、30個のファイルとなった。前者の1個分が、ほぼ100KB程度だったのに対し、後者は約70~120KBの容量である。
1個だけ、127KBのファイルがあったので、どうかなあ、と思ったが、試しにPiperで読み込んだら、ちゃんと読み込めたし、SED 処理も出来た。これくらいは可能らしい。

まあ、だから、Piperでの作業はこれら長編だと、20回~30回、くり返すことになる。それでも、エディタの置換機能でやるよりかは、遙かに楽だろう。 (むろん、マクロを組めば違うが、素人には、キーマクロでも、これだけの量の文字列置換のマクロを作るのは、大変だと思われる。WZも秀丸もマクロはC言語だから、今さら、マクロの文法を学習するよりか、出来合いのツールに頼る方が、はるかに楽であるw)

PiperでのSED 処理が完了したら、「バッチファイル」で復元する。
(ちなみに、バッチファイルとは、コマンドプロンプト上での一連の作業を、あらかじめ記述しておくテキストファイルで、いちいちコマンドを打ちこまないですむので、結構、MS-DOS時代から使われていた。ここでは「copy」コマンドで「+」コマンドを使って、ファイルを連結している。引数が「/b」とバイナリファイル連結なのは、何故か判らないが、テキストファイルだと末尾の「EOF」などで不具合が出るのかも知れない。拡張子が「.bat」だからMS-DOS時代のCOMMAND.COMを使っていると思しい。WindowsNT系(2000、XP、Vista、7、8)標準だと、拡張子は「.cmd」だからだ。恐るべし、Windows7でも、まだ、MS-DOS時代の遺産は残っているのである(笑))

「動作」でデフォルトで「分割」になっているラジオボタンを「結合」に切替え、「結合Bat」でバッチファイルのある「C:¥x_soft¥div¥output」フォルダ内の「test03.bat」を選択し、「保存先」も同じサブフォルダを選ぶ。
あとは、「実行」ボタン押下すると、結合される。

面白いことに、結合ファイルは、ファイル名も、そのタイムスタンプも元ファイルと同じになる。
これは、上書きする時のためだろうか。いずれにせよ、途中のプロセスが重要なので(何かあった場合、上書きすると復元できない)、元ファイルとは違うファイル名にリネームした方がいいだろう。

このページのトップに戻る


 SED をコマンドプロンプトで操作する


30回もの操作は、まどろっこしくて、やってられない、という人は、SED を直接、コマンドプロンプト上で扱う方法が残されている(つか、こっちが本道だ)。

しかし、Windowsユーザには、これは、あまりお奨めができない。
というか、正直、文字列処理をコマンドでやりたいと思うWindowsユーザがいるとも思えないのだ。
筆者は、93年頃からMS-DOSマシンでPCと携わってきたから、基本は、MS-DOSであり、こうした作業が苦にならない。
当時はまだWindows3.1しかなく、これはビジネスユースに耐えられるマシンではなかった。使い物になるPCはNECのPC98か、Macのどちらかだった。この時期の2、3年の違いは大きい。特にWindows95が登場して以後に、PCを導入した人は、まずコマンドの世界と無縁だからだ。

MS-DOSマシンはシングルタスクだが、筆者には、さしたる支障もなかったので、ずっとそれでやってきて、ようやくWindows98(初代)マシンを導入したのが90年代も末だった(笑)。むろん、その間には、Win95が登場して以来、Windowsはビジネスツールとして使い物になるようになり、実際、筆者の表稼業の職場では、一時期、MS-DOSマシン(VM30!)とWin95マシンとUNIXのワークステーションが同居している、といった混沌たる環境にいたこともある。もちろん、全部のマシンを扱えた。まぁ、当時は、まだ若いから出来たんだろう(^^;)。

だから、コマンドラインの仕事にも、ある程度、筆者は慣れているが、ほぼ同じ時期にWin3.1からPCを導入した知人は、いまだに、コマンドラインでのジョブが出来ないでいる。やろうともしないのだ。
XPまでは、コマンドの知識があった方が、マシンが壊れた時など、修復には役立ったので、周囲にも勧めたのだが、たいがい、やりたがらなかったようだ。それくらい、WindowsからPCユーザとなった人には、コマンドを手打ちする世界は、かなり抵抗感があるだろう。
それでも、いい、やってみたい、という人は、次の方法でやってもらいたい。

(なお、ネット上には、親切な人がマニュアルを載せていたりするが、活字の世界では、MS-DOSは時代遅れで、今、MS-DOSに関する市販されているマニュアル本は流通していない。筆者は導入当初、3ヶ月ほどマニュアル本を読んで猛勉強したものだ。だが、コマンド作業だけなら、基本原理さえ、飲みこめば、使うコマンドは限定されているわけだし、そうそう最初から学習することはないだろう。どうしても学習したい、という奇特な人は、Amazon のマーケットプレイスで、旧いMS-DOSのマニュアル本を古書で買うか、Windowsのコマンドプロンプトの本で代用することを推奨する<大体、根は同じなので、それほど違いはない)


まず、作業場である「コマンドプロンプト」を出さなければならない。
いくつか方法はあるが、一番、簡単な方法としては――、
Windowsのスタートボタン押下し「プログラムとファイルの検索」窓に「cmd」と入力する(下図参照)。

注)ちなみに、これから先の作業は全て、半角英数字のコマンドの世界だから、日本語漢字変換IMEはオフにしておくこと>キーボード左上の「半角/全角 漢字」キー押下すれば、オフになる)

cmd


プログラム」項目に、黒いアイコンの「cmd」が表示されるから、それをクリックする。
と、デスクトップに真っ黒な画面のウィンドウが開く(下図参照)。
これが「コマンドプロンプト」(通称DOS窓)の実体である。
「すべてのプログラム」をたどって、「アクセサリ」フォルダの中にもあるが、出すなら、こっちの方が早いだろう。
いずれにせよ、デフォルトでは各ユーザのアカウントの「ユーザ」フォルダが開く。
フルパスだと「C:¥Users¥[自分のアカウント名]>」」といったものだ。

cmd


ここで作業してもいいのだが、メインフォルダ直下だと、後々いろいろ面倒なので、「ドキュメント」に移動する。
cd documents」と入力する。 次の画面が展開する(下図参照)。
これで、各ユーザのアカウント内の「ドキュメント」フォルダに移っている。「cd」とは「Change Directory」の略だが、どうでもいい。
以後の作業は「ここ(=ドキュメントフォルダ)」で行う。フルパスだと、「C:¥Users¥[自分のアカウント名]¥Documents」である。
Windowsユーザがコマンド作業を忌避する理由の1つが、このパスという判りづらい概念にあると思われる。フルパスとは絶対パスで、対語として相対パスがある。XP以前はもっとメンドくさいフルパスに「マイドキュメント」はあったので、ディレクトリ移動をコマンドで打つのに、いい加減、嫌になるのだ。これらの詳細な説明も面倒なので省く(笑)。
要するに、Windows標準で「ドキュメント」となっている場所(=「スタート」ボタン>「ドキュメント」で開く場所)を作業場として使い、そこで作業をする、と思って頂きたい。

このフォルダには、あらかじめSED の実行ファイルをコピーして置いてある。だから、この画面からだと、そこで作業が出来る。

cmd


あらかじめ作った(Piper用のを使い回しできる)SED スクリプトは拡張子「.sed」のファイル名を付けて「ドキュメント」フォルダ内に保存しておく。
ファイル名は、なんでもいいがコマンドで打ち込むため、簡単な名前がいい。「txt.sed」とか。
同じフォルダ内に格納して、cmdコマンドでコマンドプロンプトを起動させる。
そして、次のようなコマンドを入力する(下図参照)。

cmd


「C:¥Users¥[自分のアカウント名]¥Documents>sed -f txt.sed filename1 > filename2」」といったものだ。

上図で、具体的には――、
「C:¥Users¥[自分のアカウント名]¥Documents>sed -f txt.sed test.txt > test2.txt」」である。
この場合、「test2.txt」が置換作業がすんだ出力ファイルとなる。

SED コマンドにしぼって、より抽象的に書くと――、
sed オプション スクリプト 置換ファイル名 > 出力ファイル名
――ということになる。


sed」は命令(コマンド)の実行ファイル名だからいいとして(正確には、「sed.exe」と入力した方がよいのだが)――、
-f」は、その次の文字列がSED スクリプトであることを明示する「オプション(引数)」である。
ここでは、すぐ後の「txt.sed」がSED スクリプトだと「-f」オプションで指定しているわけだ。
filename1」は置換する対象のファイル名、「filename2」は、最終的に出力するファイル名である。
2つのファイルの間の「>」は「リダイレクト」といって、ファイルに出力することを明示している。

リダイレクトしないと、コマンドプロンプトの黒い画面にザァーッと文字列が流れていって、ハイ、それまでヨ、となる(~_~;)。
これはコマンドラインでは、標準出力は画面に出力=表示されるのがデフォルトだからで、出力をファイルに保存するためには、リダイレクトでファイル名を明示的に記しておかないと保存されないのだ。
また、コマンドプロンプトでは、機械がバカ正直に動作するので、1文字でも、コマンドを打ち間違えたら、動作しない。
SED の作業は対象ファイルの容量が大きければ、それだけ時間を食うから、大容量の作業だと不安になるほど、しばらくプロンプトが停止するが、30分間も何も起きなければ、それはコマンドの打ち間違えを疑った方がいい(^^;)。まあ、大抵の間違いは、エラーとして処理され、キチンとエラーメッセージが出るから、そうだと判るのだが。
それだけ注意すれば、後は、作業としては問題ない(はずである(笑))。

こうして直接、出力されたファイル「test2.txt」は、ドキュメントフォルダ内に生成されるので、それをピックアップする。
リネームして、ePUB3化用のツールの作業フォルダに格納すれば、完了である。
あとはChainLPなり、AozoraEpub3なりで、ePUB3化の作業をすればよい。
思ったより簡単であろう。どの方法を採るかは、ユーザの自由だ。

このページのトップに戻る




△ Literacy  ▲General Index




Last Updated: 2014.11.16


inserted by FC2 system