入力と三サンプル
本ツールのUIは,画面左側にテキスト入力領域と基本集計指標,右側にタブ切り替え式のビジュアルグラフを配置するレイアウトで構成されています.左側の入力領域には,初期状態で「ここに解析したい文章を入力するか,上のサンプルテキストをクリックしてください...」というプレースホルダーが設定されたテキストエリアが用意されています.
利用者がこのテキストエリアに文字を入力,または外部からテキストをペーストすると,Reactのイベントリスナーを通じて状態が更新され,リアルタイムで右側のグラフや下部の集計データに反映される仕組みです.入力エリアの右上には,「サンプル1」「サンプル2」「サンプル3」というボタンが用意されており,これらをクリックすることで事前定義されたダミーテキストを瞬時に読み込むことができます.
サンプル1には「羅生門」の冒頭を用いた日本語小説風の文章が,サンプル2にはアクセシビリティについて解説した論理的な文章が,サンプル3には短文で構成されたエッセイ風の文章が設定されており,それぞれ異なる文長や段落の傾向をすぐに視覚化してテストできる設計になっています.
また,テキスト入力枠の右下には,入力したテキストをクリップボードにコピーするボタンと,内容を一括で消去するゴミ箱アイコンのクリアボタンが配置されています.コピーボタンを押下すると,2秒間だけチェックマークのアイコンに変化して完了を通知します.これらの一連の操作とデータ解析はすべて利用者のブラウザのJavaScriptで処理されるため,入力した文章の統計処理はブラウザ内で行います.
これはサイト全体の無通信や機密情報の保護を保証するものではありません.
UTF16と空白の数え方
テキストエリアに入力された文字列は,JavaScriptの標準的な文字列処理関数によってカウントされます.本ツールでは,入力されたテキスト全体の長さを取得するために,文字列オブジェクトが持つ「length」プロパティを直接参照しています.このlengthプロパティは,文字列をUTF-16のコードユニットの数として評価する仕様を持っています.
したがって,一般的なひらがな,カタカナ,漢字,英数字,記号などは1文字としてカウントされますが,サロゲートペアを構成する特定の絵文字や,一部の特殊な漢字(JIS第3・第4水準の一部など)については,見た目上の1文字であっても内部的には2文字(2つのコードユニット)としてカウントされるという特徴があります.
本ツールはこのUTF-16の仕様に基づいた数値をそのまま「総文字数」として画面の集計パネルに表示しています.また,内部的な処理としては,正規表現「/\s/g」を用いて文字列全体から半角スペース,全角スペース,タブ文字,改行文字などの空白文字をすべて置換して取り除いた状態の文字数(空白除去length)も同時に計算しています.
現在のユーザーインターフェース上では基本指標として空白を含めた生の総文字数(rawLen)が大きく表示されていますが,文章全体のデータ量は常にこのUTF-16コードユニットを基準として扱われます.意味を持つ単語の数や,形態素ごとの出現頻度を解析する機能は実装されていないため,文節の区切りや品詞の分類による文字のカウントは行われません.
あくまで入力された物理的な文字の連続としての長さを測定する処理となっています.
文と改行段落の分割
本ツールにおいて,段落および文の数は,特定の正規表現を用いた文字列の分割処理によって算出されます.まず段落の分割については,正規表現「/\n+/」を利用して,1つ以上の連続する改行文字をデリミタとしてテキストを分割します.その後,分割された各文字列に対して前後の空白文字を取り除く「trim()」メソッドを適用し,文字数が0より大きいものだけをフィルタリングして「段落」として配列に格納します.
この仕組みにより,視覚的な空白を作るために挿入された連続する改行だけの行は空の段落として除外され,実際の文字を含む段落の数だけが正確にカウントされます.次に文の分割については,正規表現「/[^..!?.!?]+[..!?.!?]*/g」を使用しています.これは,「句点や感嘆符,疑問符以外の文字の連続」に続いて「0個以上の句読点記号」が続くパターンをひとつの文として抽出するロジックです.
具体的には,全角の「。」「.」「!」「?」および半角の「.」「!」「?」を文の終端とみなし,そこで文字列を切り出します.分割された文は段落と同様にtrim処理され,空の文字列は除外されます.この抽出ルールの性質上,文の末尾にある句点や感嘆符といった記号そのものも抽出された文の文字列に含まれるため,文の長さ(文字数)には終端の句読点分が含まれてカウントされます.
右側の「段落構造」タブでは,こうして分割された各段落の文字数がリスト表示され,テキスト内で最も長い段落を100%とした相対的な横幅のブロックメーターによって,段落ごとのボリュームが視覚的に比較できるようになっています.段落の長さが40文字未満なら「短い」,150文字を超えると「やや長い」,250文字を超えると「非常に長い」というラベルが付与されます.
平均と母標準偏差
分割された個々の文の文字列長(文字数)を算出した後,ツールは文章全体を通した「平均文長」と,長さの散らばり具合を示す「母標準偏差」を計算します.平均文長は,各文の文字数の合計を単純に文の総数で割ることで求められ,小数点以下第1位までフォーマットされて画面に表示されます.
同時に,最も文字数の少ない「最短の文」と,最も文字数の多い「最長の文」の文字数も抽出されます.さらに,それぞれの文の長さが平均値からどれくらい離れているかを評価するため,標準偏差の計算を行います.この計算では,各文の長さから平均値を引いた値(偏差)を二乗し,それらの合計を文の総数(分母N)で割って分散を求め,最後にその平方根を取るという母標準偏差の公式がそのまま用いられています.
標本からの推計ではないため,分母はN-1ではなくNが使われます.算出されたこれらの数値に基づいて,画面左下の「執筆テンポ診断・アドバイス」エリアに条件分岐による動的なフィードバック文言が表示されます.平均文長が25文字未満であれば短い文の割合が多いことを示す案内が出力され,60文字を超えている場合は複数の内容を一文にまとめている可能性を指摘する案内が出力されます.
最長文の文字数が90を超えた場合には,文一覧での確認を促すメッセージが追加されます.また,標準偏差が10未満であれば長さの散らばりが比較的小さいこと,25を超えていれば長さの散らばりが大きいことを示すテキストが表示されます.これらはすべて入力テキストの数学的な特徴をそのまま文字として書き出しているだけであり,良し悪しを判定するものではありません.
五区分と句読点比率
右側の「文長の分布」タブでは,算出された各文の文字数を5つの区分に分類し,ヒストグラムとして可視化しています.区分は,「極短文 (20字未満)」「短文 (20〜39字)」「標準文 (40〜59字)」「長文 (60〜79字)」「極長文 (80字以上)」の5段階で固定されています.
それぞれの区分に属する文の数を集計し,その数が全体の文数に占めるパーセンテージと共に表示します.ヒストグラムのバーの長さは,5つの区分のうち最もカウント数の多い区分を最大値(100%)として,相対的な幅で描画されます.「読点比率」タブでは,文内の「読点」と「句点」の数を正規表現を用いてカウントし,その比率を表示します.
読点のカウント対象は全角の「、」「,」および半角の「,」です.句点のカウント対象は全角の「。」「.」および半角の「.」です.感嘆符や疑問符は文の終端として分割処理には利用されますが,この句読点カウントからは除外されています.算出された読点数を句点数で割ることで,「1句点あたりの読点数」という比率を導き出します.
テキスト内に句点がひとつも存在しない場合はゼロ除算を防ぐため,比率は計算されず読点数のみが表示されます.グラフ上のカラーメーターは,比率が0.8未満の場合は青系統,0.8から2.2の間であれば緑系統,2.2を超える場合はオレンジ系統へと色が変化します.比率が0.8〜2.2の範囲に収まっているかどうかが視覚的に把握できるインターフェースとなっています.
原文見直しと品質判定の非対応
本ツールは,入力されたテキストに対して単純な文字列の文字数カウントと正規表現による分割,および基礎的な統計量の算出のみを行うツールです.そのため,文章の品質を判定する機能や,AIを活用した意味解釈,文章の文脈に沿った校正機能などは一切搭載されていません.形態素解析ライブラリを用いた品詞の分解による自然な単語ごとの集計や,ユーザーの想定読了時間の測定,検索エンジン最適化(SEO)に向けたキーワードの含有率判定,書き出し部分の魅力度チェックといった高度な機能には非対応です.
また,第4章および第5章で解説した平均文長や読点比率に関する「25〜60字」「0.8〜2.2」といった数値基準は,本ツールのUI上でグラフの色やフィードバック文言を変化させるための目安としてプログラム内にハードコードされている閾値であり,実証された絶対的な品質評価や学術的な正解を示すものではありません.
「標準文」の区分に該当するから良い文章である,あるいは比率が2.2を超えたから悪い文章である,といった品質の断定を行うものではありません.列挙や引用を多用する文章では自然と読点が増え,短い対話文が続く小説などでは平均文長が極端に短くなるなど,用途や文体によって適切な数値は大きく異なります.
出力される結果はあくまで物理的なテキスト量の分布を確認するための補助データであり,最終的には利用者が原文を見直し,目的に応じた修正の要否を自身で判断する必要があります.