ショートカットから日本語文章校正ツールを利用する

Yahoo! JAPANのWebAPIには、日本語の校正支援APIがあるらしい。そして、そのAPIを利用して、日本語文章校正ツールというサービスが公開されている。文章を入力して、チェックボタンを押すと、このような校正チェックが行われるのだ!(素晴らしいサービスに感謝です!)
20121204144833

さらに、ブログ校正用のブックマークレットも公開されており、これをブックマークに登録しておけば、1クリックで編集モードのブログ内容をチェックしてくれるはず!...だったのだが、ブックマークレットが登録できない...。よく見ると、注記で「Safariではブックマークに登録できない」と書いてあった。(ガックリ)

ならば、Safariを常用する自分自身がやってみる。

Safariに登録できない理由

  • javascriptのリンクを右クリックしても、ブックマークへの登録はできないのだけど、
  • リンクをコピーして、自分でブックマーク編集ページでペーストすれば、ちゃんとブックマークレットになる。
  • そして、ブックマーク編集ページでペーストした瞬間に、登録できない理由がちょっと予想できた。
  • HTMLソースを見ると半角スペースは半角スペースのままなのだが、
  • ブックマークレットとしてペーストした瞬間に、半角スペースは%20にエスケープされた。
  • たぶん、javascriptコードの半角スペースをすべて%20に変換すれば、ドラッグ&ドロップでブックマークバーに登録できそう。
  • そう思って、以下のリンクを作って、.htmlとして保存して試してみた。すると...
<a href="javascript:var%20TcheckON=1;var%20sendText%20=%20window.document.edit.title.value;sendText%20+=%20'

'%20+%20window.document.edit.body.value;inscript%20=%20document.createElement('script');inscript.setAttribute('type',%20'text/javascript');inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');inscript.setAttribute('charset',%20'EUC-JP');document.body.appendChild(inscript);undefined;">はてなダイアリーの校正</a>

ドラッグ&ドロップで登録できるようになった!(右クリックでもOK)

ポップアップウィンドウを開いてもらう

  • ブックマークレットは登録できた。
  • ところが、それをクリックしても何も起こらない...。
  • なぜだ?と思ってよく読んでみると、書いてあった。

ポップアップブロックは必ず解除してからリンクボタンを押すようにしてください。

  • なるほど。自分はブロックしていた。そこでチェックを外して自由に開いてもらう設定にした。

20121204152539

編集モードでも動かす

  • 「今度こそちゃんと動いてくれ!」と願いを込めて下書きページで適当に入力して試してみると...

見事!日本語校正ツールにテキストはポップアップで校正結果を返してくれた!(嬉しい)

  • しかし、調子に乗って過去の日記を編集モードにして試してみると、反応しない...。
  • 下書きモードでは正常に動くのに、編集モードではなぜ動かないのか?
    • どちらのモードもテキストエリアが表示されて、プレビューと編集が分かれているモードである。
  • そう思って1行ずつjavascriptを実行しながら、解析してみた。
javascript:var TcheckON=1;
var sendText = window.document.edit.title.value;
sendText += '

' + window.document.edit.body.value;
inscript = document.createElement('script');
inscript.setAttribute('type', 'text/javascript');
inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');
inscript.setAttribute('charset', 'EUC-JP');
document.body.appendChild(inscript);
undefined;
  • すると、2行目・3行目で取得している以下二つの値が、編集モードではうまく取得できていない...。
    • window.document.edit.title.value
    • window.document.edit.body.value
  • 編集モードには、ブログのタイトル欄がないのでwindow.document.edit.title.valueが取得できないのはしょうがない。
    • 元々ブログのタイトルは変則的な日本語使いも多いので、チェックするのは諦める。
  • しかし、本文が取得できないのは困る。
  • 素直に読むとwindow.document.edit.body.valueで取得できそうな気がするけど、なぜ何も取得できないのだろう?
  • しばし考えたが、取得できない理由は分からない...。
  • そこで別の方法でテキストエリアの値を取得してみた。
javascript:var TcheckON=1;

var sendText = document.getElementById('textarea-edit').value;

inscript = document.createElement('script');
inscript.setAttribute('type', 'text/javascript');
inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');
inscript.setAttribute('charset', 'EUC-JP');
document.body.appendChild(inscript);
  • やった!document.getElementByIdを使うと、編集モードでもちゃんと値を取得できた。
  • それから、行末のundefinedを削除してしまってもちゃんと動いた。よって削除しておく。
  • 以上のjavascriptをすべて1行にして、半角スペースは%20に変換した。
javascript:var%20TcheckON=1;var%20sendText%20=%20document.getElementById('textarea-edit').value;inscript%20=%20document.createElement('script');inscript.setAttribute('type',%20'text/javascript');inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');inscript.setAttribute('charset',%20'EUC-JP');document.body.appendChild(inscript);
  • そして、上記javascriptをリンクとするaタグを生成してみた。
<a href="javascript:var%20TcheckON=1;var%20sendText%20=%20document.getElementById('textarea-edit').value;inscript%20=%20document.createElement('script');inscript.setAttribute('type',%20'text/javascript');inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');inscript.setAttribute('charset',%20'EUC-JP');document.body.appendChild(inscript);">はてなダイアリーの校正</a>

注意:もしものことを考えて、編集中の内容は必ず保存してから利用してください。

ショートカットで起動する

  • 上記リンクをブックマークバーに登録すると、ショートカットの恩恵を受けられる。

20121204161502

  • ブックマークバーは左側から順にcommand-1、command-2、...command-9まで、ショートカットで起動できるのだ。
    • 但し、リーディングリスト、すべてのブックマーク、Top Sites、フォルダの項目については、順番に含めない。
  • 例えば、上記のように登録しておけばcommand-1で日本語校正ツールが起動するのだ!

AppleScriptで起動する


tell application "Safari"
do JavaScript "
var TcheckON=1;
var sendText = document.getElementById('textarea-edit').value;
inscript = document.createElement('script');
inscript.setAttribute('type', 'text/javascript');
inscript.setAttribute('src','http://www.japaneseproofreader.com/checkeuc.js');
inscript.setAttribute('charset', 'EUC-JP');
document.body.appendChild(inscript);
" in document 1
end tell

  • これでAppleScriptからも起動できるようになった!
  • そして、AppleScriptから起動できるということは、Quicksilverなどで自由なショットカットを割り当てられるのだ!
  • もはやcommand-1〜9までのブックマークバーへの登録にこだわる必要もなくなったのである。


しばらく日本語校正ツールで日本語の勉強をしてみようと思う。