RedPen による文書検査用 REST API
伊藤(takahi_i)
ATL の伊藤(takahi_i)です。
前回 RedPen をご紹介した時にはバージョンが 0.6 でした。その後大きな改良が加えられ、 現在のバージョンは 1.2 となっています。
本稿では RedPen のサーバについて機能について解説します。
当時 RedPen はコマンドラインで利用のみを想定していましたが、現在ではサーバ機能の開発に多くの力を注いでいます。
RedPen サーバは Web UI だけでなく、REST API も提供します。RedPen の REST API を使うことでユーザは RedPen をローカルの環境にインストールすることなく文書検査をおこなえます。
RedPen サーバ API の特徴の一つには、柔軟な設定があります。 つまりユーザは文書の検査を自分の規約(設定ファイル)にあわせておこなえます。
さらに今回解説する RedPen サーバは、 Heroku ボタンを利用して数クリックで構築できます。構築方法については本稿の後半で解説します。
RedPen サーバ Web UI
最新の RedPen サーバは以下の URL で試せます。
https://redpen-1-2-0.herokuapp.com/
以下は現在の RedPen サーバの Web UI です。
上記の URL を開くと、左のボックスにサンプルテキストが表示されます。 サンプルには複数のミスが存在します。エラーは RedPen によって検知され、 結果が赤い下線となって表示れています。左下のボックスにはエラーの解説が表示されています。
手持ちの文書を左上のボックスにペーストすると、ペーストされた文書に対する検査結果が表示されますので 一度試してみてください。また、ボックスに貼り付けた文書は編集できます。RedPen サーバは文書が編集され たのを検知すると、自動で検査を開始します。
さらに右のボックスで RedPen の設定を行えます。具体的には機能(Validator)と文字(シンボル)の設定が行えます。 RedPen の詳しい設定については RedPen のマニュアル を参照してください。
RedPen サーバ REST API
RedPen サーバは REST API を提供します。REST API を利用するとこで、ユーザは RedPen の機能をローカル環境に インストールすることなく利用できます。
現在 RedPen サーバ API は三つの機能を提供します。
- /document/validate
文書をユーザの設定にあわせて検査し、結果を返します。
- /document/validate/json
機能は /document/validate と同じなのですが、設定が JSON フォーマットとなっています。
- /rest/config/redpens
言語ごとに予め設定差された RedPen によって文書を検査します。この機能はユーザやグループごとにことなる規約にもとづいて検査できません。そのため RedPen 1.2 以降では利用をおすすめできません。
各機能の詳しい解説は RedPen のマニュアル を参照してください。
以下 /document/validate を実際に利用してみます。
サンプル:REST API (/doument/validate)
/document/validate は以下のパラメタをもちます。
- document で入力文書を指定します。
- documentParser で文書のフォーマットを指定します。PLAIN、MARKDOWN、WIKI がサポートされています。
- lang で入力文書の言語を指定します。現在 ja(日本語)と en(英語)がサポートされています。
- format では結果のフォーマットを指定します。
- config ではRedPenの設定を指定します。RedPen の設定ファイルの内容です。
では早速機能を使ってみましょう。今回は RedPen パッケージに同梱されている英語の設定ファイル(redpen-conf-en.xml)を利用します。以下設定ファイルの内容です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<redpen-conf lang="en"> <validators> <validator name="SentenceLength"> <property name="max_len" value="100"/> </validator> <validator name="InvalidSymbol"/> <validator name="SymbolWithSpace"/> <validator name="SectionLength"> <property name="max_char_num" value="2000"/> </validator> <validator name="ParagraphNumber"/> <validator name="Spelling"/> <validator name="Contraction" /> <validator name="DoubledWord" /> <validator name="SuccessiveWord" /> <validator name="EndOfSentence" /> <validator name="SpaceBeginningOfSentence" /> </validators> </redpen-conf> |
つぎに短い入力文 (“Twas brillig and the slithy toves did gyre and gimble in the wabe”) を RedPen サーバで検査してみます。以下のコマンドで文書と設定を RedPen に投げられます。
1 2 3 4 5 6 7 8 9 10 11 12 |
curl --data document="Twas brillig and the slithy toves did gyre and gimble in the wabe" \ --data lang=en --data format=PLAIN2 \ --data config="`cat redpen-conf-en.xml`" \ redpen-1-2-0.herokuapp.com/rest/document/validate/ Line: 1, Offset: 0 Sentence: Twas brillig and the slithy toves did gyre and gimble in the wabe Spelling: Found possibly misspelled word "brillig". Spelling: Found possibly misspelled word "slithy". Spelling: Found possibly misspelled word "toves". Spelling: Found possibly misspelled word "gyre". Spelling: Found possibly misspelled word "gimble". "and".querying the input |
上記の結果をみると、RedPen サーバは入力文に含まれるいくつかのエラーを報告しているのがわかります。
RedPen サーバを Heroku ボタンで構築する
上記のサンプルでは、私が Heroku 上にデプロイしたサーバを使用しました。しかし多くの人がこのサーバを利用するには 少々パワーが足りません。快適に(レスポンスタイムを少なく)RedPen サーバを利用したい場合には、各自の環境に RedPen サーバ (warファイル) をインストールして使用できます。RedPen サーバ用のファイル(redpen.war)
は自己実行ファイルになっており、Java8 がインストールされている環境では “java -jar redepn.war” のみで起動できます。
しかし RedPen サーバの起動が簡単といっても、起動後に RedPen サーバを自身で保守し続ける必要があります。 そこで RedPen は Heroku ボタンをサポートしています。数回クリックするだけで、RedPen サーバを Heroku 上に構築できます。
Heroku ボタンは RedPen のソース URL にあります。
ボタンをクリックすると以下のページがあらわれます。
ページにある Deploy for Free ボタンをクリックすると、数分後に RedPen サーバが構築されます。