0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】日本語の文字種別(漢字含有率)や原稿用紙換算・スピーチ時間に対応した、完全ローカル動作の文字数カウントツールを作った

0
Posted at

はじめに

記事の執筆、SEOライティング、就活のエントリーシート(ES)、レポート作成、あるいはSNSの投稿作成において、「文字数のカウント」 は誰もが日常的に行う作業です。

しかし、日本語の文章作成において既存の文字数カウンターを使っていると、以下のような不満や課題を感じることがありました:

  1. 単純な「文字数」しか分からない:
    日本語の文章では、読みやすさ(可読性)を判断するために 「漢字」「ひらがな」「カタカナ」のバランス が極めて重要ですが、それを内訳として可視化してくれる軽量ツールが少ない。
  2. 原稿用紙(400字詰め)の換算がパッと出ない:
    学校の課題や公募原稿では「原稿用紙〇枚分」という指定が基本ですが、行末処理や改行を考慮した目安がすぐに分からない。
  3. 動画やプレゼンの台本で「所要時間」が分からない:
    YouTubeやTikTok、ポッドキャスト、スピーチ原稿では、文字数だけでなく「話したときに何分何秒かかるか」の尺合わせが必須。
  4. プライバシーの懸念(サーバー送信):
    就活の自己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のコメント欄でお聞かせください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?