はじめに
記事の執筆、SEOライティング、就活のエントリーシート(ES)、レポート作成、あるいはSNSの投稿作成において、「文字数のカウント」 は誰もが日常的に行う作業です。
しかし、日本語の文章作成において既存の文字数カウンターを使っていると、以下のような不満や課題を感じることがありました:
-
単純な「文字数」しか分からない:
日本語の文章では、読みやすさ(可読性)を判断するために 「漢字」「ひらがな」「カタカナ」のバランス が極めて重要ですが、それを内訳として可視化してくれる軽量ツールが少ない。 -
原稿用紙(400字詰め)の換算がパッと出ない:
学校の課題や公募原稿では「原稿用紙〇枚分」という指定が基本ですが、行末処理や改行を考慮した目安がすぐに分からない。 -
動画やプレゼンの台本で「所要時間」が分からない:
YouTubeやTikTok、ポッドキャスト、スピーチ原稿では、文字数だけでなく「話したときに何分何秒かかるか」の尺合わせが必須。 -
プライバシーの懸念(サーバー送信):
就活の自己PR、社外秘の企画書、未公開のブログ下書きなどをオンラインの入力欄に貼り付ける際、サーバーへ送信されるリスクを避けたい。
そこで今回、日本語特有の文章構造に徹底的にフォーカスし、完全ブラウザ完結(サーバー送信ゼロ) で動作する高機能文字数カウントツール 「Simple Words」 を開発しました。
👉 サービスURL: https://words.goodtool.site
(会員登録不要・完全無料・利用制限なし・オフライン動作可能)
Simple Words の主な特徴と日本語特化機能
1. 漢字含有率の可視化(読みやすさ・文章の印象分析)
日本語の読みやすい文章は、一般的に漢字が多すぎると「堅苦しい(硬い)印象」になり、少なすぎると「幼稚な印象」を与えてしまいます。
Simple Wordsでは、入力されたテキストから即座に 「漢字含有率」 を算出し、リアルタイムでパーセンテージ表示します。さらに、文章が硬すぎないかを自動的に判定する簡易インジケーター(「漢字多め」など)も搭載しているため、一目で推敲・校正が可能です。
2. 400字詰め原稿用紙のリアルタイム換算
レポート提出や公募コンテスト、学校の作文や論文で定番の 「400字詰め原稿用紙(20字×20行)換算で何枚分か」 を自動計算(端数表示対応)します。単なる文字数を400で割るロジックではなく、直感的に執筆の進捗(目安の枚数)を把握できます。
3. 日本語の特性に合わせた「読了時間」&「スピーチ時間」予測
英語圏のツールとは異なり、日本語ネイティブの平均的な処理速度に基づいた2つの時間予測アルゴリズムを搭載しています:
- 黙読時間: 平均読書スピード(約500文字/分)に基づき、ブログ記事などの「読み終えるまでの時間」を予測。
- 音読・スピーチ時間: プレゼンやYouTube・SNS動画のナレーション、朗読に適したスピード(約300文字/分)に基づき、音声化した際にかかる正確な「尺(秒数)」を算出します。動画クリエイターや台本執筆者の方に最適な機能です。
4. 柔軟なカウント条件と1クリック文章整形ツール
- 空白(スペース)や改行コードをカウントに「含める/除外する」を柔軟に切り替え。
- URL、ハッシュタグ(#)、絵文字を自動的に除外して純粋なテキスト量だけを測る「除外フィルター」。
- ワンクリックで「全角英数を半角へ一括変換」や「PDF特有の不要な改行を結合」できる強力な整形ツール群も完結。
5. 100% クライアントサイド完結・安全なプライバシー設計
入力された文章がバックエンドのサーバーへ送信されることは1バイトもありません。すべての計測はブラウザのJavaScriptメモリ上でのみ処理されるため、機密性の高いビジネス文書や就活のエントリーシートの下書きも安心して貼り付けて推敲いただけます。
実装における技術的なポイント
① Unicode Scripts による高精度な文字種別判定
日本語の各文字種(ひらがな、カタカナ、漢字)の判定には、最新のJavaScript正規表現におけるUnicodeプロパティエスケープを活用しています。
// Unicodeプロパティを活用した日本語文字種の抽出例
const countScriptTypes = (text) => {
if (!text) return { hiragana: 0, katakana: 0, kanji: 0, alphanumeric: 0 };
const hiragana = (text.match(/\p{Script=Hiragana}/gu) || []).length;
const katakana = (text.match(/\p{Script=Katakana}/gu) || []).length;
const kanji = (text.match(/\p{Script=Han}/gu) || []).length;
const alphanumeric = (text.match(/[A-Za-z0-9]/g) || []).length;
return { hiragana, katakana, kanji, alphanumeric };
};
サロゲートペアや異体字セレクタ、全角記号が混在するケースでも、文字化けや誤カウントを防ぐ設計にしています。
② 入力追従とパフォーマンス(Debounce / RAF最適化)
数万文字におよぶ長文テキストが入力・ペーストされた場合でも、メインスレッドのタイピングがカクつかないよう、集計処理を requestAnimationFrame および最適化されたイベントリスナーで制御し、軽快な打鍵感を維持しています。
まとめ・ぜひお試しください
就活のエントリーシート推敲、ブログやWeb記事の文字数チェック、YouTube台本の時間測定、レポート課題の原稿用紙計算など、日常の文章作成にぜひご活用ください。
サービスURL: https://words.goodtool.site
GoodTool スイート: https://goodtool.site
ブックマークしておけば、重いツールを起動することなくブラウザ上ですぐにお使いいただけます。
改善のご要望や「この集計指標も欲しい」といったアイデアがあれば、ぜひQiitaのコメント欄でお聞かせください!