文章警告
句読点の重複などの凡ミスを防いだり、他人に指摘されたまずい言い回しや癖を弾いたりするツールです。小説を書く度に、少しずつ確認項目が増えています。
この手のノウハウは、自分の頭だけで覚えておくことは困難なので、ルールとして用意しておき、機械的に判定するのがよいです。そうしてチェックを繰り返しているうちに、執筆の段階でもそうした表現が減るようになります。
凡ミスの確認として、デフォルトの設定に用意している確認項目は、執筆時点で以下があります。あとは表現的なものが多いです。
- カギ括弧の対応漏れ
- 行頭字下げがない
- カギ括弧なのに行頭字下げ
- 半角スペースの混在
- 行末に句読点もカギ括弧も記号もない
- 種類の違う句読点(。.、,)の混在
- !?後の空白不在
- 「―…」が一文字だけ登場
- ダッシュや三点リーダーに似た別の文字
- 句読点の連続
画数ヒートマップ
画数が多い箇所を赤く、少ない場所を青く表示します。文章の読解難易度を可視化する方法の1つです。
画面が真っ赤になっていると、かなり読みにくい文章になります。個人的には、画数の多い文字が6文字以上連続している場合は、一見して何が書いているのか分かりにくいので、単語や表現を見直した方がよいと思っています。
各文字の画数は、画数のリストを持ち、それで判定しています。昔、姓名判断アプリを作る際に整備したものです。
文長ヒートマップ
一文が長い箇所を赤く、短い箇所を青く表示します。長すぎる文章を書いてしまうのを避けるための確認ツールです。
処理としては単純で、区切りとなる場所で文章を分割して配列化し、各要素の文字列長を見ているだけです。そして、文字列長に合わせて、グラデーションになるように背景を色付けしています。
指定文字数改行
『小説推敲補助ソフト「Novel Supporter」』は「Electron」で作成しています。UIは、WebKitを利用してHTMLによって実現しています。HTMLでは、指定文字数で改行して、なおかつ複雑な禁則処理を行なうことは手軽にできません。
そこで、禁則処理などをした上で、文章を指定文字数で改行するためのツールを用意しています。また、ページ辺りの行数を指定して、ページ数を示す分割線を入れることもできるようにしています。
音声読み上げ(SAPI5)
Microsoftの「SAPI」(Speech Application Programming Interface)を利用して、テキストを音声読み上げします。耳で文章を確認できます。
本原稿の前編でも、SAPI5を利用した簡単なプログラムのサンプルを掲載しました。以下を、「speech.wsf」というファイル名にして、Windowsで実行すると、音声を読み上げてくれます。
<job id="main"> <script language="JavaScript"> // SAPIの初期化 var sp = WScript.CreateObject('SAPI.SpVoice'); sp.Rate = 0; // 数字を大きくすると早くなる sp.Volume = 100; // ボリューム0~100 var pitch = 0; // 数字を大きくすると声が高くなる var txt = '音声読み上げのテストです。'; // SAPIの実行 try { if (pitch == 0) { sp.Speak(txt); } else { sp.Speak( '<pitch absmiddle="' + pitch + '">' + txt + '</pitch>', 0x08 ); } } catch(e) { WScript.Quit(1); // 読み上げエラー } WScript.Quit(0); // 正常終了 </script> </job>
WSHのファイルは、外部ファイルのプログラムを、scriptタグで読み込めます。そのため、読み上げ設定を外部ファイル化して、読み込むことも可能です。下記のようなプログラムにして、「opt.js」に読み上げ設定を書き込み「speech.wsf」を実行すれば、「Electron」から音声読み上げを利用することができます。
<job id="main"> <script language="JavaScript" src="opt.js"></script> <script language="JavaScript"> // ~ </script> </job>