RedPenを使って技術文書を手軽に校正しよう

第6回 RedPenの機能追加と今後

この記事を読むのに必要な時間:およそ 4 分

動作の確認

ここまででHankakuKana機能の実装が終わり,テストが通りました。それでは実際に使ってみましょう。はじめにRedPenのトップディレクトリでmvn installを実行しRedPenの生成物を出力します。

次に以下のコマンドを実行して生成物を解凍します。

$cd redpen-cli/target/
$tar xvf redpen-cli-1.1-assembled.tar.gz  
x redpen-cli-1.1/lib/redpen-core-1.1.jar
x redpen-cli-1.1/lib/kuromoji-0.7.7.jar
x redpen-cli-1.1/lib/commons-cli-1.2.jar
x redpen-cli-1.1/lib/json-20080701.jar
x redpen-cli-1.1/lib/logback-classic-1.1.1.jar
x redpen-cli-1.1/lib/logback-core-1.1.1.jar
x redpen-cli-1.1/lib/slf4j-api-1.7.6.jar
...

解凍されたディレクトリに移動します。

$cd redpen-cli-1.1

このディレクトリ以下にRedPenの設定ファイル(conf/redpen-conf-ja)とサンプルテキスト(sample-doc/ja/sampledoc-ja.txt)が入っています。はじめに,設定ファイルにの最後にHankakuKana機能を追加します。設定例は以下のとおりです。

<redpen-conf lang="ja">
  <validators>
     <validator name="SentenceLength">
        <property name="max_len" value="100"/>
     </validator>
  ...
  <validator name="SpaceBetweenAlphabeticalWord" />
  <validator name="CommaNumber" />
  <validator name="SuccessiveWord" />
  <validator name="HankakuKana" />
  </validators>
</redpen-conf>

次にサンプル文書に半角カナ文字を追加してみます。

最近利用されているソフトウェアの中には複数の計算機上で動作(分散)するものが多く存在し、このような分散ソフトウェアは複数の計算機で動作することで大量のデータを扱えたり,高負荷な状況に対処できたりします。
本稿では,複数の計算機(クラスタ)でで動作する各サーバーを「インスタンス」と呼びまます。
たとえば検索エンジンやデータベースではインデックスを複数のインスタンスで分割して保持します。
このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。

変更した箇所はマージという単語を半角カナマージに置き換えただけです。この状態でredpenを以下のコマンドで実行します。

$ bin/redpen -c conf/redpen-conf-ja.xml  sample-doc/ja/sampledoc-ja.txt
...
sampledoc-ja.txt:4: ValidationError[HankakuKana], Found Hankaku Kana character "マ". at line: このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。
sampledoc-ja.txt:4: ValidationError[HankakuKana], Found Hankaku Kana character "ー". at line: このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。
sampledoc-ja.txt:4: ValidationError[HankakuKana], Found Hankaku Kana character "シ". at line: このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。
sampledoc-ja.txt:4: ValidationError[HankakuKana], Found Hankaku Kana character "゙". at line: このような場合、各インデクスの結果をマージしてclientプログラムに渡す機構が必要となります。

上記の出力より,半角カナが無事見つけられていることがわかります。

ノート:変更の予定

実はValidatorクラスは今後改変が予定されています。改変は今後RedPenサーバの拡張にともない,Validatorを生成するコストを低減する目的で行われます。改変のためいまValidatorを作ると将来動かなくなってしまう恐れがあります。そのためもし作成された場合には是非RedPenの方にPull Request出していただきたいと考えています。マージされたValidatorについては私の方で将来のインターフェースの変更にあわせて動作するように修正を行います。

最近のニュースと今後の予定

連載開始時点から,RedPenには多くの改変が加えれれてきました。その中の多くは第4回で紹介しましたが,それ以降追加された大きな機能は以下の2つです。

ポジション情報の追加

RedPenはエラーを出力する際に,検知されたエラーを含む文が存在する文書内の行数を表示します。利用者の人から2つのポジション情報をエラーに含めてほしいというリクエストを頂きました。そこでバージョン1.1から以下の2つの位置情報をエラーに含める変更を加えました(注意:2つ目のポジション情報は一部の機能だけが対応しています⁠⁠。

  • 文内で文が開始されるポジション
  • エラーが発生したポジション情報

現状では,ポジション情報に対応しているのはMarkdownフォーマットだけです。今後,Plainテキスト,Textileフォーマットについてもにポジション情報を追加していく予定です。

サンプルUIの更新

もう一つ,1.1以降ではじまった大きな改良にUIがあります。1.0の頃の素朴なUIから 1.1では大分モダンな感じになっています。

RedPenサーバ

画像

見た目以外の改良点には,現行バージョンではMarkdown,Textileフォーマットへの対応があります。コマンド一つで立ち上がるので,試しに使ってみてください。

Android アプリ

最近@hotchemiさんがRedPenのAndroidアプリを公開されました。Android端末があれば簡単にRedPenの機能を体験できます。是非一度使ってみてください。

RedPen Androidアプリ

画像

文字設定の推測

現在では言語毎に設定されたデフォルト文字をオーバライドするには,設定ファイルに変更を 記載する必要があります(シンボルの設定変更については本連載の第1回を参照してください⁠⁠。自分がRedPenを使ってみて文字設定を書くのは正直面倒と感じています。そこでどの句読点などの文字が使われているのかを入力文書から推測することを考えています。

まとめ

今回は連載最後ということで,解説しておきたかった残りトピックを取り上げました。そのため機能の追加と,今後の方針についてというかなり発散した内容となってしまいました。

RedPenについての連載自体はこれで終わりますが,今後もRedPenはゆっくりと開発が続いていきます。興味を持っていただいた人は是非使って使用感を教えていただけますと幸いです。さらに,機能の追加をはじめとしたコードへの貢献はいつでも大歓迎です。今後ともどうぞよろしくお願いいたします。

著者プロフィール

伊藤敬彦(いとうたかひこ)

ソフトウェアエンジニア。専門はデータマイニングと情報検索だが,他にも色々やってみたいと感じている。