プラグイン形式のツール
『小説推敲補助ソフト「Novel Supporter」』は、左ペインに「読み込んだテキストファイル」、右ペインに「実行結果(確認項目を可視化した状態)」を表示します。
このツールは、プラグイン形式になっており、「tool」ディレクトリ内にサブディレクトリを作り、必要なファイルを設置することで、種類を増やせます。追加したツールは、「tool/tools.js」にサブディレクトリ名を記述することで、読み込み可能になります。
小説を書いていて、確認したい項目が増える度にツールを追加する予定だったので、こうした仕様にしました。実際、小説を書く度に、ツールが増えています。
// ツールのセット act.tl.setTools([ 'search_near_words' ,'check_kosoado' ,'check_end_of_sentence' ,'check_head_of_paragraph' ,'warn_text' ,'stroke_count_heatmap' ,'sentence_heatmap' ,'add_ruby' ,'view_char_type' ,'add_line_feed' ,'text_to_speech_(sapi5)' ,'sentiment_analysis' ,'count_word' ,'view_chapter_volume' ,'check_expression' ]);
各ツールは、以下のファイルを持ちます。
- doc-<tool_name>.html …… ドキュメント
- filter.js …… 実行用JavaScriptファイル
- opt.css …… 設定ダイアログ用のCSS
- opt.html …… 設定ダイアログ用のHTML
- optDflt.json …… デフォルト設定
- plugin.json …… ツールの設定(ツールで最初に読ま込まれるファイル)
- res.css …… 結果表示用のCSS
plugin.json
「plugin.json」が最初に読み込まれるファイルです。この設定によって、各種ファイルがソフト内にロードされます。
{ "nm": "ツール名", "exp": "ツールの説明", "manual": "doc-<tool_name>.html", "css": ["opt.css", "res.css"], "opt": "opt.html", "filter": "filter.js" "js": ["extra_lib.js"] }
optDflt.json
「optDflt.json」がデフォルトの設定です。この値が、ソフトの設定ファイル「dat/opt.json」にコピーされます。全てのツールの設定は、ソフト自体の設定とともに、マージされて「dat/opt.json」に保存されています。この「dat/opt.json」をバックアップすることで、ソフトの設定を保存できます。また、このファイルを入れ替えることで、小説の種類に合わせて、設定を切り替えられるようにしています。
{ "datVersion": 1, "hogeHoge_txtRngMin": 1, "hogeHoge_txtRngMdl": 12, "hogeHoge_txtRngMax": 16 }
データのバージョン管理については、「optDflt.json」にある「datVersion」の数値で行ないます。これは、Androidの「AndroidManifest.xml」内にある「versionCode」のようなものです。
この「datVersion」の数値を大きくすると、ツールの設定ダイアログを開いた際に、最新データで上書きするか確認を表示するようにしています。また、以前のデータバージョンでなかった設定は、ソフトの設定ファイルに自動で追加されます。
filter.js
ツールの処理自体は単純です。ツールの設定とテキストを引数に取り、右ペインに出力するHTMLを戻します。
引数に使われるテキストは、「エディタ全体」「2つ以上の改行で区切られたブロック」「選択範囲」を、実行ボタンによって切り替えます。また、ショートカットも割り当てられるので、エディタ部分を書き換える度に、手軽に確認できます。
// フィルターのセット (function() { // プラグインのテンプレート act.tl.setFilter(function(opt, txt) { var res = exec(opt, txt); return res; }); // 実行 var exec = function(opt, txt) { var res = ''; // 加工処理 return res; }; })();
収録ツールの一覧
『小説推敲補助ソフト「Novel Supporter」』は、記事執筆時点で、以下のツールを収録しています。以下、これらの中からいくつかを選んで、処理を解説していきたいと思います。
名前 | 機能 |
---|---|
単語近傍探索 | 同じ単語が連続して出ているかを確認します。 |
こそあど確認 | こそあど言葉が頻出しているかを確認します。 |
文末重複確認 | 文末の音が同じ(現在形や過去形が続いている)かを確認します。 |
段落先頭重複確認 | 段落の先頭が同じでうるさく見えないかを確認します。 |
文章警告 | 表現上注意すべき点や凡ミスを、機械的にチェックします。 |
画数ヒートマップ | 文字の画数を元に、文字の背景色を変えます。読みやすさを視角化します。 |
文長ヒートマップ | 一文の長さに応じて、文字の背景色を変えます。長過ぎる文を可視化します。 |
ルビ追加 | 様々な形式で、ルビを追加します。 |
文字種表示 | 文字の種類で、文字の背景色を変更。漢字と仮名の混じり具合や比率を確認。 |
指定文字数改行 | 指定した文字数で改行します。ページ分割も可。ぶら下げや禁則処理あり。 |
音声読み上げ(SAPI5) | MSのSAPI5で読み上げ、耳で原稿を確認します。 |
センチメント分析 | 文章の感情の流れを、出現する単語から分析します。 |
使用単語集計 | 品詞ごとに、使用単語を集計して、多い順に表示します。 |
章ボリューム表示 | 章ごとのボリュームを、グラフで表示します。 |
言い回し確認 | 言い回しの確認。曖昧だったり伝聞だったりする部分が連続していないかなど。 |