今回は「字数カウント」について。ワープロソフトの付随機能などと片付けられてしまいがちだが、いざ必要なときにはそのソフトを起動しなければならないなど、意外に扱いにくい。どのアプリケーションを利用していても、どの状況下においても呼び出せれば……ということで、2つの解決策を提示してみたい。

Terminalで字数をカウント

まずは、Terminalでコマンドを利用する方法からはじめてみよう。紙幅の都合で結論からいうと、echoコマンドで標準出力にアウトプットした文字列(あらかじめ数えたい文字列をコピー&ペーストしたもの)をwcコマンドにパイプし、そこで字数カウントしようというものだ。

手順はかんたん。Safariなど適当なアプリケーションで数えたい文字列をコピーし、Terminalにタスクを移す。そこで「echo -n "」と入力してペーストを実行、「"」で閉じればechoコマンドの部分は一件落着。これだけでは何の意味もないので、続けてパイプの記号「|」を入力、さらに文字数をカウントする「wc -m」を入力してコマンドライン全体を実行(enterキー押下)、という流れだ。

なお、echoコマンドの「-n」オプションは、標準出力の最後に改行コードを含めないために必要。このオプションなしでは1文字多くカウントされてしまう。wcコマンドの「-m」オプションは、文字数をカウントするためのもので、漢字などマルチバイト文字も英数字同様1文字としてカウントされる。

こう書くと面倒そうだが、実際にキー入力するのはスペース部分を含め20キャラクタに満たない。専用オンラインソフトを探す手間や、字数カウントのためだけにワープロソフトを起動する時間を考えればはるかに効率的だ。

ただし、途中に改行を含む場合はペーストがうまくいかないことがある。特にWebページのテキストをコピーした場合、そのままペーストすると意図せず改行されてしまいがちなので、段落単位で区切ってコピー&ペーストしたほうがいいだろう。ちなみに筆者の場合、雑誌の見出しのように「20字」とか「32字」といった字数指定を受けるテキストはEmacsの「M-x count-lines-region」(Command-Shift-「=」)でカウントしているが、Emacsまで話を広げると収拾がつかなくなるので紹介だけに留めておく。

Safariなど適当なアプリケーションで文字列をコピーする

「echo -n "」と入力したあとクリップボードの内容をペースト、続けて「" | wc -m」と入力しコマンドラインを実行すれば、字数をカウントできる

「サービス」を使う方法

理屈は不要、とにかく字数だけカウントできればいい、という場合には「サービス」がお勧めだ。もちろんシステム標準では提供されないため、筆者が作成したサービス(文字をカウント.zip、解凍すること)をライブラリ→Servicesフォルダ(~/Library/Services)へコピーすること。これだけで、サービスを利用可能なアプリケーション -- Cocoa APIを利用する大半がそうだ -- から直接呼び出せる「文字をカウント」が利用できるようになる。

Safariを例に使い方を説明してみよう。字数をカウントしたい部分を選択(ドラッグして水色に表示)し、メニューバーから「Safari」→「サービス」→「文字をカウント」の順に選択すれば、単語数と文字数が記されたダイアログが表示される。Controlキーを押しながらクリックしてコンテキストメニューを表示し、そこから「文字をカウント」を選択してもいい。

なお、動作確認はSafariとメール、プレビュー(PDF文書)、テキストエディット、そしてFinderで確認している。Pages組み込みの字数カウント機能とも比較したが、途中に含まれる改行を1字として数える点(Pagesではカウントしない)を除けば結果は一致していた。文中の改行を取り除く処理は実装していないので、できるだけ改行なしのテキストで利用していただきたい。

範囲選択したあとメニューバー、またはコンテキストメニューから「文字をカウント」サービスを実行する

このようなダイアログでカウントした字数を教えてくれる

この「文字をカウント」サービスでは、選択した範囲に含まれる改行も1字としてカウントしてしまうので注意

「文字をカウント」サービスはAutomatorの「AppleScriptを実行」アクションで作成されている