単語数、文字数(スペースあり/なし)、文章数、読了時間、頻度分析を即座に行うテキスト分析。エッセイ、SEO、ソーシャルメディアに最適。
500語の最小限の文字数に達したかどうか、または文字数制限内に収まっているかを確認したことはありませんか?そのまさにこのツールが解決します。
テキスト分析ツールは、文章に関する重要な指標をすぐに明らかにします - 単語数、文字数(スペースの有無を含む)、文数、段落数、読了時間などです。コンテンツを貼り付け、「分析」をクリックすれば、数ミリ秒で包括的な統計情報が得られます。
特に便利なのは、2種類の文字数カウントが表示されることです。Twitterなどのソーシャルメディアプラットフォームはスペースを含むすべての文字をカウントしますが、一部の学術提出システムではそれらを除外します。両方の指標があれば、異なるプラットフォームにコンテンツを貼り付けたときに驚かされることはありません。
このツールはブラウザ内で完全に動作するため、サーバーへのアップロード、複雑な設定、アカウントは必要ありません。Microsoft WordやGoogle Docsで使用されている集計アルゴリズムと一致する、即座のテキスト解析が可能です。
このツールの使用には約5秒かかります:
テキストを入力: Word文書、Google Docs、メール、ブログ下書き、または直接入力エリアに内容を貼り付けます。
分析をクリック: 分析ボタンをクリックし、結果をすぐに確認します。クライアント側で処理されるため、10,000語以上の文書も1秒以内に分析できます。
結果を確認: 統計情報は読みやすいカードレイアウトで表示されます。各メトリクスには明確なラベルと数値が示され、解釈の必要がありません。
迅速な反復: テキストを編集し、必要な回数だけ再分析できます。これは、エッセイの特定の語数を目指したり、ソーシャル投稿の文字数制限内に収めたりする際に特に便利です。
言語サポート: スペースで単語を区切る言語(英語、スペイン語、フランス語、ドイツ語など)で動作します。文字数のカウントは普遍的に正確ですが、読書時間の推定は英語の読書速度(1分間に225語)を前提としています。中国語や日本語のように単語区切りのない言語では、文字数は正確ですが、単語数は意味を持ちません。
実際のテキストは乱雑です—余分なスペース、一貫性のない改行、特殊な書式。アナライザーが一般的なシナリオを処理する方法は以下の通りです:
一般的なエッジケース:PDFからテキストをコピーすると、文中に奇妙な改行が入ることがあります。アナライザーはこれを優雅に処理しますが、予想よりも高い段落数が表示される場合があります。これが発生した場合、文から段落への比率が問題を明らかにします。
各統計が何を示し、なぜ重要なのかを説明します:
スペースで区切られた総単語数。「well-known」のようなハイフン付き単語は1単語、「don't」のような縮約形も1単語としてカウントされます。
なぜ重要か: ほとんどの学術課題では単語数の要件が指定されています。コンテンツマーケティングでも特定の範囲を対象とすることが多く、ブログ記事はSEOのために通常1,500〜2,000単語を目指し、ソーシャルメディアのキャプションは150単語以下が最適です。
文字、数字、句読点、スペースを含むすべての文字。
なぜ重要か: Twitterの280文字制限、LinkedInの3,000文字の投稿制限、SMSメッセージングはすべてスペースをカウントします。これが「現実世界」の文字数です。
空白を除くすべての文字。
なぜ重要か: 一部の学術雑誌や投稿システムでは、制限からスペースを除外します。スペースを含まない5,000文字の制限は、スペースを含む制限よりも約20%多くのスペースを提供します。
終端の句読点(. ! ?)とその後のスペースまたはテキストの終わりで検出されます。基本的なヒューリスティックにより、「Dr.」のような略語を文章の区切りとしてカウントしないようにします。
なぜ重要か: 単語数と組み合わせることで、文章の複雑さを明らかにします。ニュース記事は平均15〜20単語/文、学術文書は25〜30単語/文が一般的です。
改行で区切られます。1行のテキストでも1段落としてカウントされます。
なぜ重要か: オンライン読者は読むよりもスキャンする傾向があります。短い段落(3〜5文)は画面上の可読性を向上させます。500単語を3段落で書くと、読者を遠ざける壁のようなテキストになってしまいます。
総単語数を文章数で割り、小数点以下1桁に丸めます。
なぜ重要か: この単一の指標は、ほぼ他のすべてよりも読みやすさを予測します。一般的な読者には15〜20、プロ向けコンテンツには20〜25、学術文書には25以上を目指してください。1文が30単語を超えると、通常は分割する必要があります。
最も頻繁に出現する単語と出現回数。
なぜ重要か: キーワードの使用と潜在的な過剰使用を明らかにします。SEOコンテンツを作成する際は、ターゲットキーワードがここに表示されますが、支配的になってはいけません。500単語の記事で1つの単語が50回出現する場合、キーワードスタッフィングとなります。自然な言語では、上位スポットに語彙の多様性が示されます。
1分間に225単語、英語の平均黙読速度に基づきます。Trauzettel-Klosinski(2006)の研究によると、通常の大人の読書速度は200〜250 WPMの範囲で、225が中央値となります。
なぜ重要か: 7〜8分の読書時間のブログ記事が最もエンゲージメントが高くなります。読者は無意識のうちに、開始前に時間を投資するかどうかを決定します。5分未満のニュースレター記事は、完読率が高くなります。
このツールは、Microsoft WordとGoogle Docsと同じ標準テキスト処理アルゴリズムを使用しています:
単語カウント: テキストを空白境界(スペース、タブ、改行)で分割し、空の文字列をフィルタリングし、残ったものをカウントします。これは、Unicodeテキストセグメンテーション仕様で定義されている業界標準のアプローチです。
文字カウント: 「スペースあり」のカウントでは、単純に文字列の長さを測定します。「スペースなし」の場合は、まずすべての空白文字を取り除きます。どちらの方法も、World Wide Web Consortium (W3C)の標準に準拠しています。
文検出: 終端句読点(. ! ?)を、空白または文末が続くものとして識別します。基本的なヒューリスティックにより、「Dr.」や「Mrs.」などの一般的な略語での誤検出を防ぎます。ただし、「The U.S. economy grew 2.5%.」のような複雑なケースでは、予期せぬカウントが発生することがあります。完璧な文検出には自然言語処理が必要であり、この実装は速度を重視し、典型的な使用例の95%以上をカバーしています。
単語頻度: 小文字に変換(大文字小文字を区別しない)し、出現回数をカウントし、頻度順にソートします。これはパターンを明らかにしますが、限界もあります。「running」と「run」は異なる単語としてカウントされ、「the」のような一般的な冠詞が頻繁に上位に来ます。
すべての処理は、JavaScriptのネイティブ文字列メソッドを使用して、ブラウザ上のクライアント側で行われます。データはデバイスから外部に出ることはありません。
学生は厳格な文字数制限に直面しています—通常、エッセイは500、1,000、1,500、または2,000語です。50語足りないだけでも減点され、制限を超えると簡潔に編集できないと見なされます。
よくある状況:十分に書いたと感じても、カウントは2,000語の最小限に対して1,847語。詰め物を追加するのではなく、文あたりの平均語数を分析しましょう。20語未満の場合、文章が簡潔すぎるかもしれません。より詳細な説明で複雑なアイデアを展開できます。
検索エンジンは包括的なコンテンツを好みます。多数のSEO調査データによると、1,500〜2,500語の記事は競争の激しいキーワードでより高くランク付けされる傾向があります。しかし、文字数だけで成功は保証されません—内容も重要です。
頻度分析を使用してキーワードの使用状況を確認します。2,000語中にターゲットキーワードが30回(1.5%の密度)出現する場合、ちょうど良いポイントです。3%を超えると、Googleがペナルティを課すキーワードスタッフィングの可能性が高くなります。
各プラットフォームには異なる制限があります:Twitterは280文字、LinkedInの投稿は3,000文字(最初の140文字のみ「続きを見る」なしで表示)、Instagramのキャプションは2,200文字をサポートしています。影響力を維持しながらこれらの制約内に収めるには精度が必要です。
スペースなしの文字数は、SMS マーケティングでも重要です。標準的なSMSは160文字を保持しますが、一部のシステムではスペースを除外します。制限を超えると、メッセージが複数のテキストに分割され、フォーマットが壊れることがあります。
調査によると、125語未満のメールが最も高い返信率を得ています。200語を超えると、返信率が急激に低下します。読書時間の推定はこれを判断するのに役立ちます—コールドアウトリーチは1分未満、社内コミュニケーションは2分未満を目指しましょう。
10分のプレゼンテーションスロットには、約1,300〜1,500語の原稿コンテンツ(1分あたり130〜150語の話す速度を想定、読む速度より遅い)が必要です。原稿を貼り付け、文字数をチェックし、それに応じて調整します。制限時間を超えると打ち切られ、早く終わると準備不足に見えます。
翻訳されたテキストは、文法の違いにより通常、英語の原文より15〜30%長くなります。スペイン語は長い方に傾き、ドイツ語はさらに長くなります。ソースと翻訳の文字数を比較することで、潜在的な問題を特定できます—ドイツ語の翻訳が英語より短い場合、何かが欠けている可能性が高いです。
この分析ツールは、基本的な指標—単語数、文字数、文構造に焦点を当てています。より深い分析のために、以下の専門ツールを検討してください:
読みやすさスコア: フレッシュ・キンケイド・グレードレベルとガニング・フォグ・インデックスは、音節数と文の長さに基づいて読解の難しさを計算します。これらの公式は客観的な読みやすさの評価を提供しますが、限界もあります—「猫が座った」は「それは複雑だ」よりも簡単とスコアされますが、理解の難しさは同様です。
文法チェッカー: Grammarlyのようなツールは、文法エラーを検出し、スタイルの改善を提案し、受動態にフラグを立てます。これらは、統計よりも正確性に焦点を当てて、テキスト分析を補完します。
感情分析: NLPモデルは感情のトーン—肯定的、否定的、または中立的を判断します。顧客フィードバックやソーシャルメディアの言及を大規模に分析するのに役立ちます。
剽窃検出: テキストを何十億のウェブページや学術論文と比較します。学術的誠実性とコンテンツの独自性を検証するために不可欠です。
コンピューターが登場する前、作家や編集者は手作業で単語を数えていました—退屈で誤りやすい作業でした。最初の自動単語カウンターは1890年代の機械式タイプライターに登場しましたが、実際の単語ではなく、キーストロークのみをカウントしていました。
デジタル文書作成は全てを変えました。WordStar(1978年)とWordPerfect(1979年)はソフトウェアベースの単語カウントを導入し、PCを持つ誰もが正確なテキストメトリクスにアクセスできるようになりました。1980年代半ばまでに、単語カウントはすべてのワードプロセッサーの標準機能となりました。
インターネット時代は新たな要求をもたらしました。2006年のTwitterの140文字制限(後に280文字)は、何百万人もの人々に文字数カウントを日常的な活動にしました。ブログプラットフォームは2010年頃に読了時間の推定を追加し、読者が長い記事に時間を投資するかどうかを判断するのに役立ちました。2010年代のSEOツールはキーワード密度分析を普及させましたが、Googleのアルゴリズムの更新により、明らかなキーワード詰め込みは最終的にペナルティを受けました。
今日のテキスト分析ツールは、シンプルさと性能を兼ね備えています—インスタント結果、インストール不要、ブラウザ内で完全に動作します。根本的なアルゴリズムは1970年代からほとんど変わっていません(空白で分割する方法が依然として標準的な単語カウント方法です)が、アクセシビリティは劇的に向上しました。
テキスト分析関数のさまざまなプログラミング言語での実装例を以下に示します:
1// JavaScript テキスト分析関数
2
3function analyzeText(text) {
4 if (!text || text.trim().length === 0) {
5 return {
6 wordCount: 0,
7 charCountWithSpaces: 0,
8 charCountWithoutSpaces: 0,
9 sentenceCount: 0,
10 paragraphCount: 0,
11 avgWordsPerSentence: 0,
12 topWords: [],
13 readingTime: '0 秒'
14 };
15 }
16
17 const words = text.trim().split(/\s+/).filter(word => word.length > 0);
18 const wordCount = words.length;
19 const charCountWithSpaces = text.length;
20 const charCountWithoutSpaces = text.replace(/\s+/g, '').length;
21
22 // 文の数をカウント(基本的な実装)
23 const sentenceCount = Math.max(1, (text.match(/[.!?]+/g) || []).length);
24
25 // 段落数をカウント
26 const paragraphs = text.split(/\n+/).filter(p => p.trim().length > 0);
27 const paragraphCount = Math.max(1, paragraphs.length);
28
29 // 1文あたりの平均単語数を計算
30 const avgWordsPerSentence = (wordCount / sentenceCount).toFixed(1);
31
32 // 上位5つの頻出単語を見つける
33 const wordFrequency = {};
34 words.forEach(word => {
35 const lowerWord = word.toLowerCase().replace(/[^a-z0-9]/g, '');
36 if (lowerWord) {
37 wordFrequency[lowerWord] = (wordFrequency[lowerWord] || 0) + 1;
38 }
39 });
40
41 const topWords = Object.entries(wordFrequency)
42 .sort((a, b) => b[1] - a[1])
43 .slice(0, 5)
44 .map(([word, count]) => ({ word, count }));
45
46 // 読書時間を計算(1分間に225単語)
47 const minutes = Math.floor(wordCount / 225);
48 const seconds = Math.round((wordCount % 225) / 225 * 60);
49 const readingTime = minutes > 0
50 ? `${minutes} 分 ${seconds} 秒`
51 : `${seconds} 秒`;
52
53 return {
54 wordCount,
55 charCountWithSpaces,
56 charCountWithoutSpaces,
57 sentenceCount,
58 paragraphCount,
59 avgWordsPerSentence: parseFloat(avgWordsPerSentence),
60 topWords,
61 readingTime
62 };
63}
64
65// 使用例:
66const sampleText = "こんにちは世界!これはテキスト分析ツールです。単語数などをカウントします。";
67const results = analyzeText(sampleText);
68console.log(results);
691import re
2from collections import Counter
3
4def analyze_text(text):
5 if not text or not text.strip():
6 return {
7 'word_count': 0,
8 'char_count_with_spaces': 0,
9 'char_count_without_spaces': 0,
10 'sentence_count': 0,
11 'paragraph_count': 0,
12 'avg_words_per_sentence': 0,
13 'top_words': [],
14 'reading_time': '0 秒'
15 }
16
17 # 単語数
18 words = text.split()
19 word_count = len(words)
20
21 # 文字数
22 char_count_with_spaces = len(text)
23 char_count_without_spaces = len(re.sub(r'\s+', '', text))
24
25 # 文の数
26 sentences = re.findall(r'[.!?]+', text)
27 sentence_count = max(1, len(sentences))
28
29 # 段落数
30 paragraphs = [p for p in text.split('\n') if p.strip()]
31 paragraph_count = max(1, len(paragraphs))
32
33 # 1文あたりの平均単語数
34 avg_words_per_sentence = round(word_count / sentence_count, 1)
35
36 # 上位5つの頻出単語
37 clean_words = [re.sub(r'[^a-z0-9]', '', word.lower())
38 for word in words]
39 clean_words = [w for w in clean_words if w]
40 word_freq = Counter(clean_words)
41 top_words = [{'word': word, 'count': count}
42 for word, count in word_freq.most_common(5)]
43
44 # 読書時間(1分間に225単語)
45 minutes = word_count // 225
46 seconds = round((word_count % 225) / 225 * 60)
47 reading_time = f"{minutes} 分 {seconds} 秒" if minutes > 0 else f"{seconds} 秒"
48
49 return {
50 'word_count': word_count,
51 'char_count_with_spaces': char_count_with_spaces,
52 'char_count_without_spaces': char_count_without_spaces,
53 'sentence_count': sentence_count,
54 'paragraph_count': paragraph_count,
55 'avg_words_per_sentence': avg_words_per_sentence,
56 'top_words': top_words,
57 'reading_time': reading_time
58 }
59
60# 使用例:
61sample_text = "こんにちは世界!これはテキスト分析ツールです。単語数などをカウントします。"
62results = analyze_text(sample_text)
63print(results)
641import java.util.*;
2import java.util.regex.*;
3import java.util.stream.*;
4
5public class TextAnalyzer {
6
7 public static class AnalysisResult {
8 public int wordCount;
9 public int charCountWithSpaces;
10 public int charCountWithoutSpaces;
11 public int sentenceCount;
12 public int paragraphCount;
13 public double avgWordsPerSentence;
14 public List<WordFrequency> topWords;
15 public String readingTime;
16
17 public static class WordFrequency {
18 public String word;
19 public int count;
20
21 public WordFrequency(String word, int count) {
22 this.word = word;
23 this.count = count;
24 }
25 }
26 }
27
28 public static AnalysisResult analyzeText(String text) {
29 AnalysisResult result = new AnalysisResult();
30
31 if (text == null || text.trim().isEmpty()) {
32 result.wordCount = 0;
33 result.charCountWithSpaces = 0;
34 result.charCountWithoutSpaces = 0;
35 result.sentenceCount = 0;
36 result.paragraphCount = 0;
37 result.avgWordsPerSentence = 0;
38 result.topWords = new ArrayList<>();
39 result.readingTime = "0 秒";
40 return result;
41 }
42
43 // 単語数
44 String[] words = text.trim().split("\\s+");
45 result.wordCount = words.length;
46
47 // 文字数
48 result.charCountWithSpaces = text.length();
49 result.charCountWithoutSpaces = text.replaceAll("\\s+", "").length();
50
51 // 文の数
52 Pattern sentencePattern = Pattern.compile("[.!?]+");
53 Matcher sentenceMatcher = sentencePattern.matcher(text);
54 result.sentenceCount = Math.max(1, (int) sentenceMatcher.results().count());
55
56 // 段落数
57 String[] paragraphs = text.split("\n+");
58 result.paragraphCount = Math.max(1,
59 (int) Arrays.stream(paragraphs).filter(p -> !p.trim().isEmpty()).count());
60
61 // 1文あたりの平均単語数
62 result.avgWordsPerSentence =
63 Math.round((double) result.wordCount / result.sentenceCount * 10.0) / 10.0;
64
65 // 上位5つの頻出単語
66 Map<String, Integer> wordFreq = new HashMap<>();
67 for (String word : words) {
68 String cleanWord = word.toLowerCase().replaceAll("[^a-z0-9]", "");
69 if (!cleanWord.isEmpty()) {
70 wordFreq.put(cleanWord, wordFreq.getOrDefault(cleanWord, 0) + 1);
71 }
72 }
73
74 result.topWords = wordFreq.entrySet().stream()
75 .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
76 .limit(5)
77 .map(e -> new AnalysisResult.WordFrequency(e.getKey(), e.getValue()))
78 .collect(Collectors.toList());
79
80 // 読書時間(1分間に225単語)
81 int minutes = result.wordCount / 225;
82 int seconds = Math.round((result.wordCount % 225) / 225.0f * 60);
83 result.readingTime = minutes > 0
84 ? minutes + " 分 " + seconds + " 秒"
85 : seconds + " 秒";
86
87 return result;
88 }
89
90 public static void main(String[] args) {
91 String sampleText = "こんにちは世界!これはテキスト分析ツールです。単語数などをカウントします。";
92 AnalysisResult results = analyzeText(sampleText);
93 System.out.println("単語数: " + results.wordCount);
94 System.out.println("読書時間: " + results.readingTime);
95 }
96}
971' Excel VBA テキスト分析関数
2Function WordCount(text As String) As Long
3 Dim words() As String
4 If Len(Trim(text)) = 0 Then
5 WordCount = 0
6 Else
7 words = Split(Trim(text), " ")
8 WordCount = UBound(words) + 1
9 End If
10End Function
11
12Function CharCountWithSpaces(text As String) As Long
13 CharCountWithSpaces = Len(text)
14End Function
15
16Function CharCountWithoutSpaces(text As String) As Long
17 Dim textNoSpaces As String
18 textNoSpaces = Replace(text, " ", "")
19 textNoSpaces = Replace(textNoSpaces, vbTab, "")
20 textNoSpaces = Replace(textNoSpaces, vbCrLf, "")
21 textNoSpaces = Replace(textNoSpaces, vbCr, "")
22 textNoSpaces = Replace(textNoSpaces, vbLf, "")
23 CharCountWithoutSpaces = Len(textNoSpaces)
24End Function
25
26Function SentenceCount(text As String) As Long
27 Dim count As Long
28 Dim i As Long
29 count = 0
30
31 For i = 1 To Len(text)
32 If Mid(text, i, 1) = "." Or Mid(text, i, 1) = "!" Or Mid(text, i, 1) = "?" Then
33 count = count + 1
34 End If
35 Next i
36
37 If count = 0 And Len(Trim(text)) > 0 Then
38 count = 1
39 End If
40
41 SentenceCount = count
42End Function
43
44' Excelでの使用例:
45' =WordCount(A1)
46' =CharCountWithSpaces(A1)
47' =CharCountWithoutSpaces(A1)
48' =SentenceCount(A1)
49これらの例は、さまざまなプログラミング言語でのコアテキスト分析関数の実装方法を示しています。各実装は、特定の要件に応じて適応および拡張できます。
以下は、いくつかの入力テキストとその対応する分析結果の例です:
例1: 短い段落
入力テキスト: 「素早い茶色のキツネは怠けた犬を飛び越える。この文は、アルファベットのすべての文字を含んでいる。」
分析結果:
例2: 複数段落のテキスト
入力テキスト: 「こんにちは、世界!これは最初の段落。
これは2番目の段落で、より多くのコンテンツがある。アナライザーを示すために、複数の文がある。」
分析結果:
はい、標準的なテキストの場合は一致します。両者ともホワイトスペースで分割するアルゴリズムを使用しています。ハイフンでつながれた単語や特殊文字では、わずかな違いが生じることがあります。Wordは「e-commerce」を1単語として扱いますが、一部のツールでは2単語とカウントされます。典型的な文章の99%では、カウントは完全に一致します。
プラットフォームによって数え方が異なるためです。Twitter、LinkedIn、そして多くのソーシャルメディアは文字数制限にスペースを含めます。一部の学術雑誌や国際的なテキストシステム(日本の携帯キャリアなど)はスペースを除外します。両方を表示することで、280文字を書いた後にターゲットプラットフォームの数え方が異なるという不満を防ぐことができます。
これは1分間に225語を読む中央値の大人の読書速度に基づく有用な概算です。技術的な内容は時間がかかり、物語の小説はより速く読めます。基準として使用してください。実際の時間は、複雑さや読者の主題に対する親しみによって20-30%程度変動します。
文字数カウントは普遍的に機能します。単語カウントは、スペースを単語の境界として使用する言語(スペイン語、フランス語、ドイツ語、イタリア語など)で機能します。単語の区切りがない言語(中国語、日本語、タイ語)では、意味のある単語数は得られません。文章検出は、ヨーロッパ言語では比較的うまく機能しますが、異なる句読点システムを使用する言語では苦労する可能性があります。
技術的には制限はありませんが、100,000文字(約70ページの小説)を超えると性能が低下します。ブログ投稿、エッセイ、メール、ソーシャルメディアなどの一般的な用途では、処理は瞬時に行われます。
標準的なテキストでは約95%の精度です。一般的な略語(Dr.、Mrs.、vs.)は処理できますが、小数点以下の数字(「スコアは3.5ポイントでした」)や特殊な句読点によって混乱することがあります。言語学的研究のために完璧な文章数が必要な場合は、専門的な自然言語処理(NLP)ツールが必要です。
これは自然言語の特徴です。機能語(冠詞、前置詞、接続詞)は英語のテキストの40-50%を占めます。キーワードの過剰使用をチェックする場合は、1位や2位を超えて確認してください。目的のキーワードは、リストを支配するのではなく、3-5位に適度な頻度で表示されるべきです。
はい。ただし、コンテキストが重要です。Googleのアルゴリズムは明らかなキーワードスタッフィング(3%以上の密度)をペナルティとし、自然な言語を評価します。ターゲットキーワードが上位5つの最も頻繁な単語に1-2%の密度で表示される場合、良好な状態です。1,000語の記事で50回以上出現し、1位に位置する場合、過度に最適化されている可能性があります。
エッセイが要件を満たしているか確認する、ブログコンテンツをSEO用に最適化する、ツイートが文字数制限に収まっているかを確認するなど、上記にテキストを貼り付けるだけで、即座にメトリクスを取得できます。サインアップ不要、インストール不要、データ収集なし—シンプルで直接的なテキスト分析をお楽しみください。
Trauzettel-Klosinski S, Dietz K. 「読書性能の標準化評価:新しい国際的な読書速度テキストIReST」『Investigative Ophthalmology & Visual Science』. 2012年. PMID: 16844754
Unicode Consortium. 「Unicodeテキストセグメンテーション(UAX #29)」Unicode Standard Annex #29. https://unicode.org/reports/tr29/
World Wide Web Consortium. 「World Wide Webの文字モデル:文字列マッチング」W3C作業下書き. https://www.w3.org/TR/charmod-norm/
Kincaid JP, Fishburne RP, Rogers RL, Chissom BS. 「海軍要員のための新しい読みやすさ公式の導出」研究部門報告書8-75、海軍技術訓練司令部、1975年. https://www.govinfo.gov/content/pkg/GOVPUB-ED-PURL-gpo106104/pdf/GOVPUB-ED-PURL-gpo106104.pdf
ワークフローに役立つかもしれないさらなるツールを発見する