Gマイナー志向

とくに意味はありません

「カタカナ率」をMozilla Labs Jetpackで実装してみた。

秋元 » 「カタカナ率」を公開しました

カタカナ率というワンアイデアサービスをローンチしました。

日本語の文章をインプットすると、文章の中に含まれるカタカナの割合を計算して出してくれます。

本日のネットサーフィンで、「なんか妙にカタカナ多いなあ」という文章を見たのですが、この「多い」ってどれぐらいなのか定量化してみよう、と考えたのがきっかけです。

ほー。で、習作も兼ねてMozilla Labs Jetpackで実装してみた。

var stripHTML = function(html) {
  return html.replace(/<[^>]*>/g, "");
};

var calcKatakanaRate = function(str) {
  if (!str || !str.length) {
    return false;
  }
  var str_only_kana = str.replace(/[^ァ-ヶ。-゚]/g, "");

  return str_only_kana.length / str.length;
};

jetpack.tabs.onReady(function(doc) {
  if (!doc.defaultView.frameElement) {
    var body = stripHTML($(doc).text());
    var rate = calcKatakanaRate(body);
    if(rate) {
      var formattedRate = ' (' + Math.floor(rate * 100 * 10 + 0.5) / 10 + '%)';

      var message = '普通の文章ですね';
      if (rate > 0.5) {
        message = 'ニホンヘヨウコソ! ドモアリガット';
      } else if (rate > 0.25) {
        message = 'あなたはコンサルで、何か後ろ暗いことを誤魔化そうとしてますね';
      } else if (rate > 0.125) {
        message = '外資系にお勤めですか?';
      }
      jetpack.notifications.show({title:doc.title, body:message + formattedRate});
    }
  }
});
実行方法

ページ読込完了後にポップアップでカタカナ率を表示する。ただしカタカナが一切含まれていない場合はポップアップしない。

改善余地
  • ページ全体が対象なので閾値を若干下げているが、それでもなかなか出ないかも。要調整。
  • stripHTMLが手抜き。inputタグ等に含まれるカタカナはカウントされない。
  • ステータスバーに実装できるが手を抜いてポップアップで実装。
結論

JavaScriptに多少心得があれば簡単にアドオンもどきを実装できるMozilla Labs Jetpackは素晴らしい。