「この記事は約○分で読めます」を算出する

よく巷のブログで、

みたいな、読了予測時間が書いてあることがある。

WordPress のプラグインとかでそういうモノがあるんだろうけど、どうやってるんだろうなーと思って色々調べてみた。

目次

ただ文字数から割り算してるだけ

漢字やひらがなを判別したり、言葉の意味とか難解さを見てたりするんだろうか、とか色々想像してたのだけど、いざググってみたらみんな単純で、

などと計算しているモノがほとんどだった。

600 文字というのは、日本人が1分間に読める平均的な文字数らしく、自分も以下のサイトでテストしてみたが、大体600〜900文字くらいの、標準的な読書スピードだった。

それじゃあ作ってみよう

どのサイトもそんな簡単な計算式なのかと拍子抜けしたが、簡単だと分かれば実際に作ってみよう。

例えばはてなブログなら、ブログ内で jQuery が使えるので、次のような JavaScript コードで算出できる。

// 記事本文から改行とスペースを除去する
const text = $('.entry-content').text().replace(/(\r|\n|\s)/g, '');

// 1分間に600文字読める想定とする
const readingSpeed = 600;

// 切り上げで予想読了時間 (分単位) を算出する
const forecast = Math.ceil(text.length / readingSpeed);

ある記事で試したところ、text.length が 7092 文字。予想読了時間は12分と出た。

実感と違う…

自分が書いた記事なので他人が読むスピードはまた違うとは思うのだが、それにしても実態との乖離が激しいなと感じた。読書や人間の目の構造については素人ながら、以下のような原因が考えられると思った。

うーむ。どうもコレじゃあ実用性・有用性は低いかなぁ…。やはり文章の意味や構造、立て付けを理解させた上で細かく計算しないと、実態と合わなくて、読者がモヤモヤしそうだ…。