あからさまな間違いの指摘には、たとえば句点や読点の連続(「。」「、、」)や、カギ括弧の閉じ忘れ、行頭字下げの抜けなどがあります。半角スペースの混入や、行末が尻切れトンボになっている場所の指摘もこの範疇に入るでしょう。改善点の指摘には、こそあど言葉が多すぎる、同じ単語が近くに連続してありすぎる、文末が連続してリズムが悪くなっているといった表現上の問題が該当します。指摘は100%正しく行なう必要はありません。8割ぐらいの精度で指摘すれば、あとは人間がどうするか判断してくれます。文章というのは正解がなく、意図的にルールを踏み外すことも多いためです。あまりにも無関係な指摘が多いと、人間の負荷が高くなりますので、程度問題です。そこで小説推敲補助ソフトでは、機械的に指摘部分を可視化して、あとは人間に推敲を任せることにします。推敲以外のところでストレスをかけないように、操作性を高くする必要があります。Supporter」』を作成して、新しい小説を書く度に改良して、現在もアップデートを続けています。Supporter」』は、以下の実行環境やライブラリを使っています。そのリストを掲載したあとに、それらの紹介を簡単にしていきます。Supporter」』では、プログラミング言語はJavaScript、実行環境は「Electron」を採用しています。)で作成されていたからです。WSHは、Windows環境でスクリプト言語を利用できる技術です。WSHでは、VBScriptやJScript(JavaScriptとほぼ同じ)を使えます。「Electron」は、JavaScriptのサーバーサイド実行環境「node.js」に、Webブラウザのレンダリングエンジン「WebKit」をドッキングしたものです。HTML、CSS、JavaScriptといったWebの技術で、ローカルアプリケーションを作れます。Windows、Linux、Mac用にリリースでき、マルチプラットフォームのアプリケーションを作成可能なメリットもあります。「Electron」と似た実行環境に「NW.js」(旧node-webkit)もあります。Supporter」』の開発では「Electron」を採用しました。ElectronNW.jsこの「Electron」と「NW.js」は、大きく方向性が違います。「Electron」は、「node.js」のプログラム(メインプロセス)から、UI環境としての「WebKit」を呼び出して、そこにユーザーとの対話処理(レンダラプロセス)を、HTMLやCSS、JavaScriptで記述します。2つのプロセス間で通信を行いながらプログラムを書きます。煩雑と言えば煩雑なのですが、アプリケーション自体とUI部分を分けるという意味で、堅牢なプログラムを作ることができます。「Electron」製のアプリケーションとして代表的なものは、「Atom」です。「Electron」は、「Atom」を作るためにGitHubによって開発されました。Code」などがあります。「NW.js」は、「WebKit」によるWebブラウザがメインです。HTML内から「node.js」の機能を使い、ローカルファイルにアクセスしたり、OSの機能を利用したりします。そのため、Webサイト用のWebアプリケーションを作り、そこにファイル保存機能を加えたいといった用途の場合に、サクッとプログラムを完成させられます。簡単なツールを、書き殴りで作成したい場合にも向いています。歴史としては「NW.js」の方が長いのですが、大がかりなプログラムを作る際には「Electron」の方が向いています。そのため最近では「NW.js」よりも「Electron」製のアプリケーションの方が多いです。これは、どちらがよいというものではなく、それぞれ向き不向きがあると考えた方がよいです。jQueryUI用ライブラリとしては、「jQuery」とそのプラグインを多く使っています。これは、SNSのような動的なコンテンツではなく、すでに書かれた小説という静的なコンテンツを扱うからです。データが、サーバーから次々に流れてくることはない。ボタンのクリックをトリガーにして、小説の強調表示を出力する。したアプリケーションの特性から、「jQuery」とそのプラグインが向いていると判断しました。Snap.svgグラフ表示など一部の表現では、SVGを利用した方が利便性も高く、見た目もよいです。そのため「Snap.svg」でSVGを生成して出力しています。「Snap.svg」は、「jQuery」風に手軽にSVGを生成、操作できるライブラリです。動的処理にも対応しており、クリックによる操作や、アニメーションも行えます。以下のような簡単な命令で円を描いて、bodyにSVGを追加できます。「Snap.svg」のトップページで、コンソールを開いて、下記のプログラムを実行すると、Webページに円が追加されます。150);s.prependTo($('body'));「Snap.svg」は、「Raphael」の後継ライブラリです。前にSVGを扱っていた人は、「Raphael」の名前をよく見ていたかもしれません。この2つのライブラリは作者が同じです。「Snap.svg」では、より簡便に、そして古い環境を切り捨てて開発されています。私は、Windowsで小説を書いています。Windowsの標準的な文字コードは「Shift-JIS」です。Web技術の標準的な文字コードは「UTF-8」です。そのため、普通に読み込むと文字化けします。そこで必要になるのが、文字コードの変換ライブラリです。Supporter」』では、「encoding.js」を利用しています。いくつか、この種のライブラリがあるのですが、私が使った範囲では「encoding.js」が使いやすかったので、こちらを利用しています。「encoding.js」は、node.jsからだけでなく、Webページからも利用できるので汎用性が高いです。encoding.jsテキストファイルの読み込みでは、たとえば以下のようなプログラムを書いています。};};形態素解析JavaScriptでは「kurmoji」を使って、非常に手軽に形態素解析を行なえます。「kurmoji」は、辞書ファイルだけで17MB近くあるので、Webページで読み込んで使うのは困難です。使う場合は、ローカル環境かサーバー環境での実行になるでしょう。kuromoji使い方は非常に簡単で、下のようなコードを書くことで、形態素解析をした結果(オブジェクトの配列)を得られます。300~400KB程度の小説なら、瞬時に結果を出せます。この「kurmoji」を使うことで、文章を品詞に分解して見ていくことができます。実際には、「文末の音の確認」「段落先頭の1文字の確認」というような、品詞に分解するまでもない確認事項も多く、形態素解析を全ての場所で使っているわけではありません。実行例tokenize('安藤は、素っ頓狂な声を上げた。