Vimで日本語文章の校正支援するプラグインつくった

Vim

VimでYahoo! JAPANのWebAPIを用いて日本語文章の校正支援を行うプラグインをつくりました.
rinx/yj-proofreading.vim

Yahoo! JAPANの提供するWebAPIにはさまざまなものがあります(参考). その中には日本語テキスト解析用のAPIも用意されており,形態素解析は漢字変換などの機能が提供されています.
今回は,この中に含まれる校正支援機能を利用して,Vimで編集中の日本語文章の校正結果をQuickFixに流し込むプラグインを作成しました.

準備

mattn/webapi-vim に依存するので,本プラグインに加え,このプラグインもインストールします.

また,Yahoo! JAPANのWebAPIを利用するため,APIキーを取得する必要があります.
取得にはYahoo! JAPAN IDが必要で,https://e.developer.yahoo.co.jp/register から 必要事項を適当に入力してください.アプリケーションの種類はクライアントサイドにすると良いと思います.

取得したAPIキーを.vimrcに記述します

let g:yj_proofreading#yahoo_apikey = 'your apikey'

.vimrcをGitHubなどで公開している場合は上記のように直接記述することは避けて,.vimrc_privateなどのファイルを作成し,APIキーを外部に公開しないような工夫が必要になります.
~/.vimrc_privateに次のように記述し,

let g:vimrc_private = {
            \ 'yahoo_proofreader_apikey': 'your apikey',
            \ }

.vimrcにはこのファイルを読むように

let g:vimrc_private = {}
if filereadable(expand('~/.vimrc_private'))
    execute 'source' expand('~/.vimrc_private')
endif

といった記述を加えます.

使い方

このプラグインは,:YahooProofReader というコマンドを提供します. 単にこのコマンドを実行するだけなら,現在の行のみに対して校正支援APIを呼び,その結果をQuickFixに流します.

example1 49行目に対して校正支援APIを呼び出した結果.

また,このコマンドは行の範囲指定を受け取ることも可能なので,:9,13YahooProofReaderといった形で9行目から13行目に対して呼ぶこともできますし, 範囲指定モードで範囲を選択し,コマンドモードに入って:'<,'>YahooProofReaderとして実行することも可能です.

実行後は,以下のように文章に対して指摘が入ります.特に何も指摘がない場合は,空のQuickFixが返るようになっています.

example2 1行目,2行目に対して校正支援APIを呼び出した結果.

課題

もともと,このAPIは1度に100KB程度の文章に対してしか処理が行えないらしいので,それを超えるような文章量になるとリクエストが送れません. 今後は,基準を超える文章量の場合には自動的にいくつかのリクエストに分散させるような処理を行えるようにできると良いと思っています.

このAPI,使ってみた感じだと参考になる指摘が思ったより少ない感じがあるので,実際に応用する場合にはしっかり自分で読み込む作業も必要だと思います. あくまで校正「支援」ということですので…